Subversion
svn_client.h
Go to the documentation of this file.
1 /**
2  * @copyright
3  * ====================================================================
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements. See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership. The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License. You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied. See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  * ====================================================================
21  * @endcopyright
22  *
23  * @file svn_client.h
24  * @brief Subversion's client library
25  *
26  * Requires: The working copy library and repository access library.
27  * Provides: Broad wrappers around working copy library functionality.
28  * Used By: Client programs.
29  */
30 
31 #ifndef SVN_CLIENT_H
32 #define SVN_CLIENT_H
33 
34 #include <apr.h>
35 #include <apr_pools.h>
36 #include <apr_hash.h>
37 #include <apr_tables.h>
38 #include <apr_getopt.h>
39 #include <apr_file_io.h>
40 #include <apr_time.h>
41 
42 #include "svn_types.h"
43 #include "svn_string.h"
44 #include "svn_wc.h"
45 #include "svn_opt.h"
46 #include "svn_ra.h"
47 #include "svn_diff.h"
48 #include "svn_auth.h"
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif /* __cplusplus */
53 
54 
55 
56 /**
57  * Get libsvn_client version information.
58  *
59  * @since New in 1.1.
60  */
61 const svn_version_t *
62 svn_client_version(void);
63 
64 /** Client supporting functions
65  *
66  * @defgroup clnt_support Client supporting subsystem
67  *
68  * @{
69  */
70 
71 
72 /*** Authentication stuff ***/
73 
74 /** The new authentication system allows the RA layer to "pull"
75  * information as needed from libsvn_client.
76  *
77  * @deprecated Replaced by the svn_auth_* functions.
78  * @see auth_fns
79  *
80  * @defgroup auth_fns_depr (deprecated) AuthZ client subsystem
81  *
82  * @{
83  */
84 
85 /** Create and return @a *provider, an authentication provider of type
86  * svn_auth_cred_simple_t that gets information by prompting the user
87  * with @a prompt_func and @a prompt_baton. Allocate @a *provider in
88  * @a pool.
89  *
90  * If both #SVN_AUTH_PARAM_DEFAULT_USERNAME and
91  * #SVN_AUTH_PARAM_DEFAULT_PASSWORD are defined as runtime
92  * parameters in the @c auth_baton, then @a *provider will return the
93  * default arguments when svn_auth_first_credentials() is called. If
94  * svn_auth_first_credentials() fails, then @a *provider will
95  * re-prompt @a retry_limit times (via svn_auth_next_credentials()).
96  * For infinite retries, set @a retry_limit to value less than 0.
97  *
98  * @deprecated Provided for backward compatibility with the 1.3 API.
99  * Use svn_auth_get_simple_prompt_provider() instead.
100  */
102 void
104  svn_auth_provider_object_t **provider,
105  svn_auth_simple_prompt_func_t prompt_func,
106  void *prompt_baton,
107  int retry_limit,
108  apr_pool_t *pool);
109 
110 
111 /** Create and return @a *provider, an authentication provider of type
112  * #svn_auth_cred_username_t that gets information by prompting the
113  * user with @a prompt_func and @a prompt_baton. Allocate @a *provider
114  * in @a pool.
115  *
116  * If #SVN_AUTH_PARAM_DEFAULT_USERNAME is defined as a runtime
117  * parameter in the @c auth_baton, then @a *provider will return the
118  * default argument when svn_auth_first_credentials() is called. If
119  * svn_auth_first_credentials() fails, then @a *provider will
120  * re-prompt @a retry_limit times (via svn_auth_next_credentials()).
121  * For infinite retries, set @a retry_limit to value less than 0.
122  *
123  * @deprecated Provided for backward compatibility with the 1.3 API.
124  * Use svn_auth_get_username_prompt_provider() instead.
125  */
127 void
129  svn_auth_provider_object_t **provider,
131  void *prompt_baton,
132  int retry_limit,
133  apr_pool_t *pool);
134 
135 
136 /** Create and return @a *provider, an authentication provider of type
137  * #svn_auth_cred_simple_t that gets/sets information from the user's
138  * ~/.subversion configuration directory. Allocate @a *provider in
139  * @a pool.
140  *
141  * If a default username or password is available, @a *provider will
142  * honor them as well, and return them when
143  * svn_auth_first_credentials() is called. (see
144  * #SVN_AUTH_PARAM_DEFAULT_USERNAME and #SVN_AUTH_PARAM_DEFAULT_PASSWORD).
145  *
146  * @deprecated Provided for backward compatibility with the 1.3 API.
147  * Use svn_auth_get_simple_provider2() instead.
148  */
150 void
152  apr_pool_t *pool);
153 
154 
155 #if (defined(WIN32) && !defined(__MINGW32__)) || defined(DOXYGEN) || defined(CTYPESGEN) || defined(SWIG)
156 /**
157  * Create and return @a *provider, an authentication provider of type
158  * #svn_auth_cred_simple_t that gets/sets information from the user's
159  * ~/.subversion configuration directory. Allocate @a *provider in
160  * @a pool.
161  *
162  * This is like svn_client_get_simple_provider(), except that, when
163  * running on Window 2000 or newer (or any other Windows version that
164  * includes the CryptoAPI), the provider encrypts the password before
165  * storing it to disk. On earlier versions of Windows, the provider
166  * does nothing.
167  *
168  * @since New in 1.2.
169  * @note This function is only available on Windows.
170  *
171  * @note An administrative password reset may invalidate the account's
172  * secret key. This function will detect that situation and behave as
173  * if the password were not cached at all.
174  *
175  * @deprecated Provided for backward compatibility with the 1.3 API.
176  * Use svn_auth_get_windows_simple_provider() instead.
177  */
179 void
181  apr_pool_t *pool);
182 #endif /* WIN32 && !__MINGW32__ || DOXYGEN || CTYPESGEN || SWIG */
183 
184 /** Create and return @a *provider, an authentication provider of type
185  * #svn_auth_cred_username_t that gets/sets information from a user's
186  * ~/.subversion configuration directory. Allocate @a *provider in
187  * @a pool.
188  *
189  * If a default username is available, @a *provider will honor it,
190  * and return it when svn_auth_first_credentials() is called. (see
191  * #SVN_AUTH_PARAM_DEFAULT_USERNAME).
192  *
193  * @deprecated Provided for backward compatibility with the 1.3 API.
194  * Use svn_auth_get_username_provider() instead.
195  */
197 void
199  apr_pool_t *pool);
200 
201 
202 /** Create and return @a *provider, an authentication provider of type
203  * #svn_auth_cred_ssl_server_trust_t, allocated in @a pool.
204  *
205  * @a *provider retrieves its credentials from the configuration
206  * mechanism. The returned credential is used to override SSL
207  * security on an error.
208  *
209  * @deprecated Provided for backward compatibility with the 1.3 API.
210  * Use svn_auth_get_ssl_server_trust_file_provider() instead.
211  */
213 void
215  svn_auth_provider_object_t **provider,
216  apr_pool_t *pool);
217 
218 
219 /** Create and return @a *provider, an authentication provider of type
220  * #svn_auth_cred_ssl_client_cert_t, allocated in @a pool.
221  *
222  * @a *provider retrieves its credentials from the configuration
223  * mechanism. The returned credential is used to load the appropriate
224  * client certificate for authentication when requested by a server.
225  *
226  * @deprecated Provided for backward compatibility with the 1.3 API.
227  * Use svn_auth_get_ssl_client_cert_file_provider() instead.
228  */
230 void
232  svn_auth_provider_object_t **provider,
233  apr_pool_t *pool);
234 
235 
236 /** Create and return @a *provider, an authentication provider of type
237  * #svn_auth_cred_ssl_client_cert_pw_t, allocated in @a pool.
238  *
239  * @a *provider retrieves its credentials from the configuration
240  * mechanism. The returned credential is used when a loaded client
241  * certificate is protected by a passphrase.
242  *
243  * @deprecated Provided for backward compatibility with the 1.3 API.
244  * Use svn_auth_get_ssl_client_cert_pw_file_provider2() instead.
245  */
247 void
249  svn_auth_provider_object_t **provider,
250  apr_pool_t *pool);
251 
252 
253 /** Create and return @a *provider, an authentication provider of type
254  * #svn_auth_cred_ssl_server_trust_t, allocated in @a pool.
255  *
256  * @a *provider retrieves its credentials by using the @a prompt_func
257  * and @a prompt_baton. The returned credential is used to override
258  * SSL security on an error.
259  *
260  * @deprecated Provided for backward compatibility with the 1.3 API.
261  * Use svn_auth_get_ssl_server_trust_prompt_provider() instead.
262  */
264 void
266  svn_auth_provider_object_t **provider,
268  void *prompt_baton,
269  apr_pool_t *pool);
270 
271 
272 /** Create and return @a *provider, an authentication provider of type
273  * #svn_auth_cred_ssl_client_cert_t, allocated in @a pool.
274  *
275  * @a *provider retrieves its credentials by using the @a prompt_func
276  * and @a prompt_baton. The returned credential is used to load the
277  * appropriate client certificate for authentication when requested by
278  * a server. The prompt will be retried @a retry_limit times.
279  * For infinite retries, set @a retry_limit to value less than 0.
280  *
281  * @deprecated Provided for backward compatibility with the 1.3 API.
282  * Use svn_auth_get_ssl_client_cert_prompt_provider() instead.
283  */
285 void
287  svn_auth_provider_object_t **provider,
289  void *prompt_baton,
290  int retry_limit,
291  apr_pool_t *pool);
292 
293 
294 /** Create and return @a *provider, an authentication provider of type
295  * #svn_auth_cred_ssl_client_cert_pw_t, allocated in @a pool.
296  *
297  * @a *provider retrieves its credentials by using the @a prompt_func
298  * and @a prompt_baton. The returned credential is used when a loaded
299  * client certificate is protected by a passphrase. The prompt will
300  * be retried @a retry_limit times. For infinite retries, set @a retry_limit
301  * to value less than 0.
302  *
303  * @deprecated Provided for backward compatibility with the 1.3 API.
304  * Use svn_auth_get_ssl_client_cert_pw_prompt_provider() instead.
305  */
307 void
309  svn_auth_provider_object_t **provider,
311  void *prompt_baton,
312  int retry_limit,
313  apr_pool_t *pool);
314 
315 /** @} */
316 
317 /**
318  * Revisions and Peg Revisions
319  *
320  * @defgroup clnt_revisions Revisions and Peg Revisions
321  *
322  * A brief word on operative and peg revisions.
323  *
324  * If the kind of the peg revision is #svn_opt_revision_unspecified, then it
325  * defaults to #svn_opt_revision_head for URLs and #svn_opt_revision_working
326  * for local paths.
327  *
328  * For deeper insight, please see the
329  * <a href="http://svnbook.red-bean.com/nightly/en/svn.advanced.pegrevs.html">
330  * Peg and Operative Revisions</a> section of the Subversion Book.
331  */
332 
333 /**
334  * Commit operations
335  *
336  * @defgroup clnt_commit Client commit subsystem
337  *
338  * @{
339  */
340 
341 /** This is a structure which stores a filename and a hash of property
342  * names and values.
343  *
344  * @deprecated Provided for backward compatibility with the 1.4 API.
345  */
347 {
348  /** The name of the node on which these properties are set. */
350 
351  /** A hash of (const char *) property names, and (svn_string_t *) property
352  * values. */
353  apr_hash_t *prop_hash;
354 
356 
357 /**
358  * The callback invoked by svn_client_proplist4(). Each invocation
359  * provides the regular and/or inherited properties of @a path, which is
360  * either a working copy path or a URL. If @a prop_hash is not @c NULL, then
361  * it maps explicit <tt>const char *</tt> property names to
362  * <tt>svn_string_t *</tt> explicit property values. If @a inherited_props
363  * is not @c NULL, then it is a depth-first ordered array of
364  * #svn_prop_inherited_item_t * structures representing the
365  * properties inherited by @a path. Use @a scratch_pool for all temporary
366  * allocations.
367  *
368  * The #svn_prop_inherited_item_t->path_or_url members of the
369  * #svn_prop_inherited_item_t * structures in @a inherited_props are
370  * URLs if @a path is a URL or if @a path is a working copy path but the
371  * property represented by the structure is above the working copy root (i.e.
372  * the inherited property is from the cache). In all other cases the
373  * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
374  * paths.
375  *
376  * @since New in 1.8.
377  */
378 typedef svn_error_t *(*svn_proplist_receiver2_t)(
379  void *baton,
380  const char *path,
381  apr_hash_t *prop_hash,
382  apr_array_header_t *inherited_props,
383  apr_pool_t *scratch_pool);
384 
385 /**
386  * Similar to #svn_proplist_receiver2_t, but doesn't return inherited
387  * properties.
388  *
389  * @deprecated Provided for backward compatibility with the 1.7 API.
390  *
391  * @since New in 1.5.
392  */
393 typedef svn_error_t *(*svn_proplist_receiver_t)(
394  void *baton,
395  const char *path,
396  apr_hash_t *prop_hash,
397  apr_pool_t *pool);
398 
399 /**
400  * Return a duplicate of @a item, allocated in @a pool. No part of the new
401  * structure will be shared with @a item.
402  *
403  * @since New in 1.3.
404  *
405  * @deprecated Provided for backward compatibility with the 1.4 API.
406  */
410  apr_pool_t *pool);
411 
412 /** Information about commits passed back to client from this module.
413  *
414  * @deprecated Provided for backward compatibility with the 1.2 API.
415  */
417 {
418  /** just-committed revision. */
420 
421  /** server-side date of the commit. */
422  const char *date;
423 
424  /** author of the commit. */
425  const char *author;
426 
428 
429 
430 /**
431  * @name Commit state flags
432  * @brief State flags for use with the #svn_client_commit_item3_t structure
433  * (see the note about the namespace for that structure, which also
434  * applies to these flags).
435  * @{
436  */
437 #define SVN_CLIENT_COMMIT_ITEM_ADD 0x01
438 #define SVN_CLIENT_COMMIT_ITEM_DELETE 0x02
439 #define SVN_CLIENT_COMMIT_ITEM_TEXT_MODS 0x04
440 #define SVN_CLIENT_COMMIT_ITEM_PROP_MODS 0x08
441 #define SVN_CLIENT_COMMIT_ITEM_IS_COPY 0x10
442 /** One of the flags for a commit item. The node has a lock token that
443  * should be released after a successful commit and, if the node is also
444  * modified, transferred to the server as part of the commit process.
445  *
446  * @since New in 1.2. */
447 #define SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN 0x20
448 /** One of the flags for a commit item. The node is the 'moved here'
449  * side of a local move. This is used to check and enforce that the
450  * other side of the move is also included in the commit.
451  *
452  * @since New in 1.8. */
453 #define SVN_CLIENT_COMMIT_ITEM_MOVED_HERE 0x40
454 /** @} */
455 
456 /** The commit candidate structure.
457  *
458  * In order to avoid backwards compatibility problems clients should use
459  * svn_client_commit_item3_create() to allocate and initialize this
460  * structure instead of doing so themselves.
461  *
462  * @since New in 1.5.
463  */
465 {
466  /* IMPORTANT: If you extend this structure, add new fields to the end. */
467 
468  /** absolute working-copy path of item. Always set during normal commits
469  * (and copies from a working copy) to the repository. Can only be NULL
470  * when stub commit items are created for operations that only involve
471  * direct repository operations. During WC->REPOS copy operations, this
472  * path is the WC source path of the operation. */
473  const char *path;
474 
475  /** node kind (dir, file) */
477 
478  /** commit URL for this item. Points to the repository location of PATH
479  * during commits, or to the final URL of the item when copying from the
480  * working copy to the repository. */
481  const char *url;
482 
483  /** revision of textbase */
485 
486  /** copyfrom-url or NULL if not a copied item */
487  const char *copyfrom_url;
488 
489  /** copyfrom-rev, valid when copyfrom_url != NULL */
491 
492  /** state flags */
493  apr_byte_t state_flags;
494 
495  /** An array of #svn_prop_t *'s, which are incoming changes from
496  * the repository to WC properties. These changes are applied
497  * post-commit.
498  *
499  * When adding to this array, allocate the #svn_prop_t and its
500  * contents in @c incoming_prop_changes->pool, so that it has the
501  * same lifetime as this data structure.
502  *
503  * See https://issues.apache.org/jira/browse/SVN-806 for a
504  * description of what would happen if the post-commit process
505  * didn't group these changes together with all other changes to the
506  * item.
507  */
508  apr_array_header_t *incoming_prop_changes;
509 
510  /** An array of #svn_prop_t *'s, which are outgoing changes to
511  * make to properties in the repository. These extra property
512  * changes are declared pre-commit, and applied to the repository as
513  * part of a commit.
514  *
515  * When adding to this array, allocate the #svn_prop_t and its
516  * contents in @c outgoing_prop_changes->pool, so that it has the
517  * same lifetime as this data structure.
518  */
519  apr_array_header_t *outgoing_prop_changes;
520 
521  /**
522  * When processing the commit this contains the relative path for
523  * the commit session. NULL until the commit item is preprocessed.
524  * @since New in 1.7.
525  */
526  const char *session_relpath;
527 
528  /**
529  * When committing a move, this contains the absolute path where
530  * the node was directly moved from. (If an ancestor at the original
531  * location was moved then it points to where the node itself was
532  * moved from; not the original location.)
533  * @since New in 1.8.
534  */
535  const char *moved_from_abspath;
536 
538 
539 /** The commit candidate structure.
540  *
541  * @deprecated Provided for backward compatibility with the 1.4 API.
542  */
544 {
545  /** absolute working-copy path of item */
546  const char *path;
547 
548  /** node kind (dir, file) */
550 
551  /** commit URL for this item */
552  const char *url;
553 
554  /** revision of textbase */
556 
557  /** copyfrom-url or NULL if not a copied item */
558  const char *copyfrom_url;
559 
560  /** copyfrom-rev, valid when copyfrom_url != NULL */
562 
563  /** state flags */
564  apr_byte_t state_flags;
565 
566  /** Analogous to the #svn_client_commit_item3_t.incoming_prop_changes
567  * field.
568  */
569  apr_array_header_t *wcprop_changes;
571 
572 /** The commit candidate structure.
573  *
574  * @deprecated Provided for backward compatibility with the 1.2 API.
575  */
577 {
578  /** absolute working-copy path of item */
579  const char *path;
580 
581  /** node kind (dir, file) */
583 
584  /** commit URL for this item */
585  const char *url;
586 
587  /** revision (copyfrom-rev if _IS_COPY) */
589 
590  /** copyfrom-url */
591  const char *copyfrom_url;
592 
593  /** state flags */
594  apr_byte_t state_flags;
595 
596  /** Analogous to the #svn_client_commit_item3_t.incoming_prop_changes
597  * field.
598  */
599  apr_array_header_t *wcprop_changes;
600 
602 
603 /** Return a new commit item object, allocated in @a pool.
604  *
605  * In order to avoid backwards compatibility problems, this function
606  * is used to initialize and allocate the #svn_client_commit_item3_t
607  * structure rather than doing so explicitly, as the size of this
608  * structure may change in the future.
609  *
610  * @since New in 1.6.
611  */
613 svn_client_commit_item3_create(apr_pool_t *pool);
614 
615 /** Like svn_client_commit_item3_create() but with a stupid "const"
616  * qualifier on the returned structure, and it returns an error that
617  * will never happen.
618  *
619  * @deprecated Provided for backward compatibility with the 1.5 API.
620  */
622 svn_error_t *
624  apr_pool_t *pool);
625 
626 /**
627  * Return a duplicate of @a item, allocated in @a pool. No part of the
628  * new structure will be shared with @a item, except for the adm_access
629  * member.
630  *
631  * @since New in 1.5.
632  */
635  apr_pool_t *pool);
636 
637 /**
638  * Return a duplicate of @a item, allocated in @a pool. No part of the new
639  * structure will be shared with @a item.
640  *
641  * @deprecated Provided for backward compatibility with the 1.4 API.
642  */
646  apr_pool_t *pool);
647 
648 /** Callback type used by commit-y operations to get a commit log message
649  * from the caller.
650  *
651  * Set @a *log_msg to the log message for the commit, allocated in @a
652  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
653  * to the path of any temporary file which might be holding that log
654  * message, or @c NULL if no such file exists (though, if @a *log_msg is
655  * @c NULL, this value is undefined). The log message MUST be a UTF8
656  * string with LF line separators.
657  *
658  * @a commit_items is a read-only array of #svn_client_commit_item3_t
659  * structures, which may be fully or only partially filled-in,
660  * depending on the type of commit operation.
661  *
662  * @a baton is provided along with the callback for use by the handler.
663  *
664  * All allocations should be performed in @a pool.
665  *
666  * @since New in 1.5.
667  */
668 typedef svn_error_t *(*svn_client_get_commit_log3_t)(
669  const char **log_msg,
670  const char **tmp_file,
671  const apr_array_header_t *commit_items,
672  void *baton,
673  apr_pool_t *pool);
674 
675 /** Callback type used by commit-y operations to get a commit log message
676  * from the caller.
677  *
678  * Set @a *log_msg to the log message for the commit, allocated in @a
679  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
680  * to the path of any temporary file which might be holding that log
681  * message, or @c NULL if no such file exists (though, if @a *log_msg is
682  * @c NULL, this value is undefined). The log message MUST be a UTF8
683  * string with LF line separators.
684  *
685  * @a commit_items is a read-only array of #svn_client_commit_item2_t
686  * structures, which may be fully or only partially filled-in,
687  * depending on the type of commit operation.
688  *
689  * @a baton is provided along with the callback for use by the handler.
690  *
691  * All allocations should be performed in @a pool.
692  *
693  * @deprecated Provided for backward compatibility with the 1.3 API.
694  */
695 typedef svn_error_t *(*svn_client_get_commit_log2_t)(
696  const char **log_msg,
697  const char **tmp_file,
698  const apr_array_header_t *commit_items,
699  void *baton,
700  apr_pool_t *pool);
701 
702 /** Callback type used by commit-y operations to get a commit log message
703  * from the caller.
704  *
705  * Set @a *log_msg to the log message for the commit, allocated in @a
706  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
707  * to the path of any temporary file which might be holding that log
708  * message, or @c NULL if no such file exists (though, if @a *log_msg is
709  * @c NULL, this value is undefined). The log message MUST be a UTF8
710  * string with LF line separators.
711  *
712  * @a commit_items is a read-only array of #svn_client_commit_item_t
713  * structures, which may be fully or only partially filled-in,
714  * depending on the type of commit operation.
715  *
716  * @a baton is provided along with the callback for use by the handler.
717  *
718  * All allocations should be performed in @a pool.
719  *
720  * @deprecated Provided for backward compatibility with the 1.2 API.
721  */
722 typedef svn_error_t *(*svn_client_get_commit_log_t)(
723  const char **log_msg,
724  const char **tmp_file,
725  apr_array_header_t *commit_items,
726  void *baton,
727  apr_pool_t *pool);
728 
729 /** @} */
730 
731 /**
732  * Client blame
733  *
734  * @defgroup clnt_blame Client blame functionality
735  *
736  * @{
737  */
738 
739 /** Callback type used by svn_client_blame6() to notify the caller
740  * that line @a line_no of the blamed file was last changed in @a revision
741  * which has the revision properties @a rev_props, and that the contents were
742  * @a line.
743  *
744  * If svn_client_blame5() was called with @a include_merged_revisions set to
745  * TRUE, @a merged_revision, @a merged_rev_props and @a merged_path will be
746  * set, otherwise they will be NULL. @a merged_path will be set to the
747  * absolute repository path.
748  *
749  * All allocations should be performed in @a pool.
750  *
751  * @note If there is no blame information for this line, @a revision will be
752  * invalid and @a rev_props will be NULL. In this case @a local_change
753  * will be true if the reason there is no blame information is that the line
754  * was modified locally. In all other cases @a local_change will be false.
755  *
756  * Character Encoding and Line Splitting:
757  *
758  * It is up to the client to determine the character encoding. The @a line
759  * content is delivered without any encoding conversion. The line splitting
760  * is designed to work with ASCII-compatible encodings including UTF-8. Any
761  * of the byte sequences LF ("\n"), CR ("\n"), CR LF ("\r\n") ends a line
762  * and is not included in @a line. The @a line content can include all other
763  * byte values including zero (ASCII NUL).
764  *
765  * @note That is how line splitting is done on the final file content, from
766  * which this callback is driven. It is not entirely clear whether the line
767  * splitting used to calculate diffs between each revision and assign a
768  * revision number to each line is exactly compatible with this in all cases.
769  *
770  * Blaming files that have <tt>svn:mime-type</tt> set to something other
771  * than <tt>text/...</tt> requires the @a ignore_mime_type flag to be set to
772  * true when calling the svn_client_blame6 function.
773  *
774  * @since New in 1.12.
775  */
776 typedef svn_error_t *(*svn_client_blame_receiver4_t)(
777  void *baton,
778  apr_int64_t line_no,
779  svn_revnum_t revision,
780  apr_hash_t *rev_props,
781  svn_revnum_t merged_revision,
782  apr_hash_t *merged_rev_props,
783  const char *merged_path,
784  const svn_string_t *line,
785  svn_boolean_t local_change,
786  apr_pool_t *pool);
787 
788 /**
789  * Similar to #svn_client_blame_receiver4_t, but with the @a line parameter
790  * as a (const char*) instead of an svn_string_t, and the parameters
791  * @a start_revnum and @a end_revnum contain the start and end revision
792  * number of the entire blame operation, as resolved from the repository
793  * inside svn_client_blame6().
794  *
795  * @deprecated Provided for backward compatibility with the 1.11 API.
796  * To replace @a start_revnum and @a end_revnum, see the corresponding
797  * output parameters in svn_client_blame6().
798  *
799  * @since New in 1.7.
800  */
801 typedef svn_error_t *(*svn_client_blame_receiver3_t)(
802  void *baton,
803  svn_revnum_t start_revnum,
804  svn_revnum_t end_revnum,
805  apr_int64_t line_no,
806  svn_revnum_t revision,
807  apr_hash_t *rev_props,
808  svn_revnum_t merged_revision,
809  apr_hash_t *merged_rev_props,
810  const char *merged_path,
811  const char *line,
812  svn_boolean_t local_change,
813  apr_pool_t *pool);
814 
815 /**
816  * Similar to #svn_client_blame_receiver3_t, but with separate author and
817  * date revision properties instead of all revision properties, and without
818  * information about local changes.
819  *
820  * @deprecated Provided for backward compatibility with the 1.6 API.
821  *
822  * @since New in 1.5.
823  */
824 typedef svn_error_t *(*svn_client_blame_receiver2_t)(
825  void *baton,
826  apr_int64_t line_no,
827  svn_revnum_t revision,
828  const char *author,
829  const char *date,
830  svn_revnum_t merged_revision,
831  const char *merged_author,
832  const char *merged_date,
833  const char *merged_path,
834  const char *line,
835  apr_pool_t *pool);
836 
837 /**
838  * Similar to #svn_client_blame_receiver2_t, but without @a merged_revision,
839  * @a merged_author, @a merged_date, or @a merged_path members.
840  *
841  * @note New in 1.4 is that the line is defined to contain only the line
842  * content (and no [partial] EOLs; which was undefined in older versions).
843  * Using this callback with svn_client_blame() or svn_client_blame2()
844  * will still give you the old behaviour.
845  *
846  * @deprecated Provided for backward compatibility with the 1.4 API.
847  */
848 typedef svn_error_t *(*svn_client_blame_receiver_t)(
849  void *baton,
850  apr_int64_t line_no,
851  svn_revnum_t revision,
852  const char *author,
853  const char *date,
854  const char *line,
855  apr_pool_t *pool);
856 
857 
858 /** @} */
859 
860 /**
861  * Client diff
862  *
863  * @defgroup clnt_diff Client diff functionality
864  *
865  * @{
866  */
867 /** The difference type in an svn_diff_summarize_t structure.
868  *
869  * @since New in 1.4.
870  */
872 {
873  /** An item with no text modifications */
875 
876  /** An added item */
878 
879  /** An item with text modifications */
881 
882  /** A deleted item */
885 
886 
887 /** A struct that describes the diff of an item. Passed to
888  * #svn_client_diff_summarize_func_t.
889  *
890  * @note Fields may be added to the end of this structure in future
891  * versions. Therefore, users shouldn't allocate structures of this
892  * type, to preserve binary compatibility.
893  *
894  * @since New in 1.4.
895  */
897 {
898  /** Path relative to the target. If the target is a file, path is
899  * the empty string. */
900  const char *path;
901 
902  /** Change kind */
903  svn_client_diff_summarize_kind_t summarize_kind;
904 
905  /** Properties changed? For consistency with 'svn status' output,
906  * this should be false if summarize_kind is _added or _deleted. */
908 
909  /** File or dir */
912 
913 /**
914  * Return a duplicate of @a diff, allocated in @a pool. No part of the new
915  * structure will be shared with @a diff.
916  *
917  * @since New in 1.4.
918  */
921  apr_pool_t *pool);
922 
923 
924 /** A callback used in svn_client_diff_summarize2() and
925  * svn_client_diff_summarize_peg2() for reporting a @a diff summary.
926  *
927  * All allocations should be performed in @a pool.
928  *
929  * @a baton is a closure object; it should be provided by the implementation,
930  * and passed by the caller.
931  *
932  * @since New in 1.4.
933  */
934 typedef svn_error_t *(*svn_client_diff_summarize_func_t)(
935  const svn_client_diff_summarize_t *diff,
936  void *baton,
937  apr_pool_t *pool);
938 
939 
940 
941 /** @} */
942 
943 
944 /**
945  * Client context
946  *
947  * @defgroup clnt_ctx Client context management
948  *
949  * @{
950  */
951 
952 /** A client context structure, which holds client specific callbacks,
953  * batons, serves as a cache for configuration options, and other various
954  * and sundry things. In order to avoid backwards compatibility problems
955  * clients should use svn_client_create_context() to allocate and
956  * initialize this structure instead of doing so themselves.
957  */
958 typedef struct svn_client_ctx_t
959 {
960  /** main authentication baton. */
962 
963  /** notification callback function.
964  * This will be called by notify_func2() by default.
965  * @deprecated Provided for backward compatibility with the 1.1 API.
966  * Use @c notify_func2 instead. */
968 
969  /** notification callback baton for notify_func()
970  * @deprecated Provided for backward compatibility with the 1.1 API.
971  * Use @c notify_baton2 instead */
973 
974  /** Log message callback function. NULL means that Subversion
975  * should try not attempt to fetch a log message.
976  * @deprecated Provided for backward compatibility with the 1.2 API.
977  * Use @c log_msg_func2 instead. */
979 
980  /** log message callback baton
981  * @deprecated Provided for backward compatibility with the 1.2 API.
982  * Use @c log_msg_baton2 instead. */
984 
985  /** a hash mapping of <tt>const char *</tt> configuration file names to
986  * #svn_config_t *'s. For example, the '~/.subversion/config' file's
987  * contents should have the key "config". May be left unset (or set to
988  * NULL) to use the built-in default settings and not use any configuration.
989  */
990  apr_hash_t *config;
991 
992  /** a callback to be used to see if the client wishes to cancel the running
993  * operation. */
995 
996  /** a baton to pass to the cancellation callback. */
998 
999  /** notification function, defaulting to a function that forwards
1000  * to notify_func(). If @c NULL, it will not be invoked.
1001  * @since New in 1.2. */
1003 
1004  /** notification baton for notify_func2().
1005  * @since New in 1.2. */
1007 
1008  /** Log message callback function. NULL means that Subversion
1009  * should try log_msg_func.
1010  * @since New in 1.3. */
1012 
1013  /** callback baton for log_msg_func2
1014  * @since New in 1.3. */
1016 
1017  /** Notification callback for network progress information.
1018  * May be NULL if not used.
1019  * @since New in 1.3. */
1021 
1022  /** Callback baton for progress_func.
1023  * @since New in 1.3. */
1025 
1026  /** Log message callback function. NULL means that Subversion
1027  * should try @c log_msg_func2, then @c log_msg_func.
1028  * @since New in 1.5. */
1030 
1031  /** The callback baton for @c log_msg_func3.
1032  * @since New in 1.5. */
1034 
1035  /** MIME types map.
1036  * @since New in 1.5. */
1037  apr_hash_t *mimetypes_map;
1038 
1039  /** Conflict resolution callback and baton, if available.
1040  * @since New in 1.5. */
1042  void *conflict_baton;
1043 
1044  /** Custom client name string, or @c NULL.
1045  * @since New in 1.5. */
1046  const char *client_name;
1047 
1048  /** Conflict resolution callback and baton, if available. NULL means that
1049  * subversion should try @c conflict_func.
1050  * @since New in 1.7. */
1052  void *conflict_baton2;
1053 
1054  /** A working copy context for the client operation to use.
1055  * This is initialized by svn_client_create_context() and should never
1056  * be @c NULL.
1057  *
1058  * @since New in 1.7. */
1060 
1061  /** Check-tunnel callback
1062  *
1063  * If not @c NULL, and open_tunnel_func is also not @c NULL, this
1064  * callback will be invoked to check if open_tunnel_func should be
1065  * used to create a specific tunnel, or if the default tunnel
1066  * implementation (either built-in or configured in the client
1067  * configuration file) should be used instead.
1068  * @since New in 1.9.
1069  */
1071 
1072  /** Open-tunnel callback
1073  *
1074  * If not @c NULL, this callback will be invoked to create a tunnel
1075  * for a ra_svn connection that needs one, overriding any tunnel
1076  * definitions in the client config file. This callback is used only
1077  * for ra_svn and ignored by the other RA modules.
1078  * @since New in 1.9.
1079  */
1081 
1082  /** The baton used with check_tunnel_func and open_tunnel_func.
1083  * @since New in 1.9.
1084  */
1087 
1088 /** Initialize a client context.
1089  * Set @a *ctx to a client context object, allocated in @a pool, that
1090  * represents a particular instance of an svn client. @a cfg_hash is used
1091  * to initialise the config member of the returned context object and should
1092  * remain valid for the lifetime of the object. @a cfg_hash may be @c NULL,
1093  * in which case it is ignored.
1094  *
1095  * In order to avoid backwards compatibility problems, clients must
1096  * use this function to initialize and allocate the
1097  * #svn_client_ctx_t structure rather than doing so themselves, as
1098  * the size of this structure may change in the future.
1099  *
1100  * The current implementation never returns error, but callers should
1101  * still check for error, for compatibility with future versions.
1102  *
1103  * @since New in 1.8.
1104  */
1105 svn_error_t *
1107  apr_hash_t *cfg_hash,
1108  apr_pool_t *pool);
1109 
1110 
1111 /** Similar to svn_client_create_context2 but passes a NULL @a cfg_hash.
1112  *
1113  * @deprecated Provided for backward compatibility with the 1.7 API.
1114  */
1116 svn_error_t *
1118  apr_pool_t *pool);
1119 
1120 /** @} end group: Client context management */
1121 
1122 /**
1123  * @deprecated Provided for backward compatibility. This constant was never
1124  * used in released versions.
1125  */
1126 #define SVN_CLIENT_AUTH_USERNAME "username"
1127 /**
1128  * @deprecated Provided for backward compatibility. This constant was never
1129  * used in released versions.
1130  */
1131 #define SVN_CLIENT_AUTH_PASSWORD "password"
1132 
1133 /** Client argument processing
1134  *
1135  * @defgroup clnt_cmdline Client command-line processing
1136  *
1137  * @{
1138  */
1139 
1140 /**
1141  * Pull remaining target arguments from @a os into @a *targets_p,
1142  * converting them to UTF-8, followed by targets from @a known_targets
1143  * (which might come from, for example, the "--targets" command line option).
1144  *
1145  * Process each target in one of the following ways. For a repository-
1146  * relative URL: resolve to a full URL, contacting the repository if
1147  * necessary to do so, and then treat as a full URL. For a URL: do some
1148  * IRI-to-URI encoding and some auto-escaping, and canonicalize. For a
1149  * local path: canonicalize case and path separators.
1150  *
1151  * If @a keep_last_origpath_on_truepath_collision is TRUE, and there are
1152  * exactly two targets which both case-canonicalize to the same path, the last
1153  * target will be returned in the original non-case-canonicalized form.
1154  *
1155  * Allocate @a *targets_p and its elements in @a pool.
1156  *
1157  * @a ctx is required for possible repository authentication.
1158  *
1159  * If a path has the same name as a Subversion working copy
1160  * administrative directory, return #SVN_ERR_RESERVED_FILENAME_SPECIFIED;
1161  * if multiple reserved paths are encountered, return a chain of
1162  * errors, all of which are #SVN_ERR_RESERVED_FILENAME_SPECIFIED. Do
1163  * not return this type of error in a chain with any other type of
1164  * error, and if this is the only type of error encountered, complete
1165  * the operation before returning the error(s).
1166  *
1167  * Return an error if a target is just a peg specifier with no path, such as
1168  * "@abc". Before v1.6.5 (r878062) this form was interpreted as a literal path;
1169  * it is now ambiguous. The form "@abc@" should now be used to refer to the
1170  * literal path "@abc" with no peg revision, or the form ".@abc" to refer to
1171  * the empty path with peg revision "abc".
1172  *
1173  * @since New in 1.7
1174  */
1175 svn_error_t *
1176 svn_client_args_to_target_array2(apr_array_header_t **targets_p,
1177  apr_getopt_t *os,
1178  const apr_array_header_t *known_targets,
1179  svn_client_ctx_t *ctx,
1180  svn_boolean_t keep_last_origpath_on_truepath_collision,
1181  apr_pool_t *pool);
1182 
1183 /**
1184  * Similar to svn_client_args_to_target_array2() but with
1185  * @a keep_last_origpath_on_truepath_collision always set to FALSE.
1186  *
1187  * @since Since 1.6.5, this returns an error if a path contains a peg
1188  * specifier with no path before it, such as "@abc".
1189  *
1190  * @deprecated Provided for backward compatibility with the 1.6 API.
1191  */
1193 svn_error_t *
1194 svn_client_args_to_target_array(apr_array_header_t **targets_p,
1195  apr_getopt_t *os,
1196  const apr_array_header_t *known_targets,
1197  svn_client_ctx_t *ctx,
1198  apr_pool_t *pool);
1199 
1200 /** @} group end: Client command-line processing */
1201 
1202 /** @} */
1203 
1204 /**
1205  * Client working copy management functions
1206  *
1207  * @defgroup clnt_wc Client working copy management
1208  *
1209  * @{
1210  */
1211 
1212 /**
1213  * @defgroup clnt_wc_checkout Checkout
1214  *
1215  * @{
1216  */
1217 
1218 
1219 /**
1220  * Checkout a working copy from a repository.
1221  *
1222  * @param[out] result_rev If non-NULL, the value of the revision checked
1223  * out from the repository.
1224  * @param[in] URL The repository URL of the checkout source.
1225  * @param[in] path The root of the new working copy.
1226  * @param[in] peg_revision The peg revision.
1227  * @param[in] revision The operative revision.
1228  * @param[in] depth The depth of the operation. If #svn_depth_unknown,
1229  * then behave as if for #svn_depth_infinity, except in the case
1230  * of resuming a previous checkout of @a path (i.e., updating),
1231  * in which case use the depth of the existing working copy.
1232  * @param[in] ignore_externals If @c TRUE, don't process externals
1233  * definitions as part of this operation.
1234  * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
1235  * unversioned items that obstruct incoming paths. Only
1236  * obstructions of the same type (file or dir) as the added
1237  * item are tolerated. The text of obstructing files is left
1238  * as-is, effectively treating it as a user modification after
1239  * the checkout. Working properties of obstructing items are
1240  * set equal to the base properties. <br>
1241  * If @c FALSE, then abort if there are any unversioned
1242  * obstructing items.
1243  * @param[in] ctx The standard client context, used for authentication and
1244  * notification.
1245  * @param[in] pool Used for any temporary allocation.
1246  *
1247  * @return A pointer to an #svn_error_t of the type (this list is not
1248  * exhaustive): <br>
1249  * #SVN_ERR_UNSUPPORTED_FEATURE if @a URL refers to a file rather
1250  * than a directory; <br>
1251  * #SVN_ERR_RA_ILLEGAL_URL if @a URL does not exist; <br>
1252  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1253  * #svn_opt_revision_number, #svn_opt_revision_head, or
1254  * #svn_opt_revision_date. <br>
1255  * If no error occurred, return #SVN_NO_ERROR.
1256  *
1257  * @since New in 1.5.
1258  *
1259  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1260  * a discussion of operative and peg revisions.
1261  */
1262 svn_error_t *
1264  const char *URL,
1265  const char *path,
1266  const svn_opt_revision_t *peg_revision,
1267  const svn_opt_revision_t *revision,
1268  svn_depth_t depth,
1269  svn_boolean_t ignore_externals,
1270  svn_boolean_t allow_unver_obstructions,
1271  svn_client_ctx_t *ctx,
1272  apr_pool_t *pool);
1273 
1274 
1275 /**
1276  * Similar to svn_client_checkout3() but with @a allow_unver_obstructions
1277  * always set to FALSE, and @a depth set according to @a recurse: if
1278  * @a recurse is TRUE, @a depth is #svn_depth_infinity, if @a recurse
1279  * is FALSE, @a depth is #svn_depth_files.
1280  *
1281  * @deprecated Provided for backward compatibility with the 1.4 API.
1282  */
1284 svn_error_t *
1286  const char *URL,
1287  const char *path,
1288  const svn_opt_revision_t *peg_revision,
1289  const svn_opt_revision_t *revision,
1290  svn_boolean_t recurse,
1291  svn_boolean_t ignore_externals,
1292  svn_client_ctx_t *ctx,
1293  apr_pool_t *pool);
1294 
1295 
1296 /**
1297  * Similar to svn_client_checkout2(), but with @a peg_revision
1298  * always set to #svn_opt_revision_unspecified and
1299  * @a ignore_externals always set to FALSE.
1300  *
1301  * @deprecated Provided for backward compatibility with the 1.1 API.
1302  */
1304 svn_error_t *
1305 svn_client_checkout(svn_revnum_t *result_rev,
1306  const char *URL,
1307  const char *path,
1308  const svn_opt_revision_t *revision,
1309  svn_boolean_t recurse,
1310  svn_client_ctx_t *ctx,
1311  apr_pool_t *pool);
1312 /** @} */
1313 
1314 /**
1315  * @defgroup Update Bring a working copy up-to-date with a repository
1316  *
1317  * @{
1318  *
1319  */
1320 
1321 /**
1322  * Update working trees @a paths to @a revision, authenticating with the
1323  * authentication baton cached in @a ctx. @a paths is an array of const
1324  * char * paths to be updated. Unversioned paths that are direct children
1325  * of a versioned path will cause an update that attempts to add that path;
1326  * other unversioned paths are skipped. If @a result_revs is not NULL,
1327  * @a *result_revs will be set to an array of svn_revnum_t with each
1328  * element set to the revision to which @a revision was resolved for the
1329  * corresponding element of @a paths.
1330  *
1331  * @a revision must be of kind #svn_opt_revision_number,
1332  * #svn_opt_revision_head, or #svn_opt_revision_date. If @a
1333  * revision does not meet these requirements, return the error
1334  * #SVN_ERR_CLIENT_BAD_REVISION.
1335  *
1336  * The paths in @a paths can be from multiple working copies from multiple
1337  * repositories, but even if they all come from the same repository there
1338  * is no guarantee that revision represented by #svn_opt_revision_head
1339  * will remain the same as each path is updated.
1340  *
1341  * If @a ignore_externals is set, don't process externals definitions
1342  * as part of this operation.
1343  *
1344  * If @a depth is #svn_depth_infinity, update fully recursively.
1345  * Else if it is #svn_depth_immediates or #svn_depth_files, update
1346  * each target and its file entries, but not its subdirectories. Else
1347  * if #svn_depth_empty, update exactly each target, nonrecursively
1348  * (essentially, update the target's properties).
1349  *
1350  * If @a depth is #svn_depth_unknown, take the working depth from
1351  * @a paths and then behave as described above.
1352  *
1353  * If @a depth_is_sticky is set and @a depth is not
1354  * #svn_depth_unknown, then in addition to updating PATHS, also set
1355  * their sticky ambient depth value to @a depth.
1356  *
1357  * If @a allow_unver_obstructions is TRUE then the update tolerates
1358  * existing unversioned items that obstruct added paths. Only
1359  * obstructions of the same type (file or dir) as the added item are
1360  * tolerated. The text of obstructing files is left as-is, effectively
1361  * treating it as a user modification after the update. Working
1362  * properties of obstructing items are set equal to the base properties.
1363  * If @a allow_unver_obstructions is FALSE then the update will abort
1364  * if there are any unversioned obstructing items.
1365  *
1366  * If @a adds_as_modification is TRUE, a local addition at the same path
1367  * as an incoming addition of the same node kind results in a normal node
1368  * with a possible local modification, instead of a tree conflict.
1369  *
1370  * If @a make_parents is TRUE, create any non-existent parent
1371  * directories also by checking them out at depth=empty.
1372  *
1373  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
1374  * @a ctx->notify_baton2 for each item handled by the update, and also for
1375  * files restored from text-base. If @a ctx->cancel_func is non-NULL, invoke
1376  * it passing @a ctx->cancel_baton at various places during the update.
1377  *
1378  * Use @a pool for any temporary allocation.
1379  *
1380  * @todo Multiple Targets
1381  * - Up for debate: an update on multiple targets is *not* atomic.
1382  * Right now, svn_client_update only takes one path. What's
1383  * debatable is whether this should ever change. On the one hand,
1384  * it's kind of losing to have the client application loop over
1385  * targets and call svn_client_update() on each one; each call to
1386  * update initializes a whole new repository session (network
1387  * overhead, etc.) On the other hand, it's a very simple
1388  * implementation, and allows for the possibility that different
1389  * targets may come from different repositories.
1390  *
1391  * @since New in 1.7.
1392  */
1393 svn_error_t *
1394 svn_client_update4(apr_array_header_t **result_revs,
1395  const apr_array_header_t *paths,
1396  const svn_opt_revision_t *revision,
1397  svn_depth_t depth,
1398  svn_boolean_t depth_is_sticky,
1399  svn_boolean_t ignore_externals,
1400  svn_boolean_t allow_unver_obstructions,
1401  svn_boolean_t adds_as_modification,
1402  svn_boolean_t make_parents,
1403  svn_client_ctx_t *ctx,
1404  apr_pool_t *pool);
1405 
1406 /**
1407  * Similar to svn_client_update4() but with @a make_parents always set
1408  * to FALSE and @a adds_as_modification set to TRUE.
1409  *
1410  * @deprecated Provided for backward compatibility with the 1.6 API.
1411  * @since New in 1.5.
1412  */
1414 svn_error_t *
1415 svn_client_update3(apr_array_header_t **result_revs,
1416  const apr_array_header_t *paths,
1417  const svn_opt_revision_t *revision,
1418  svn_depth_t depth,
1419  svn_boolean_t depth_is_sticky,
1420  svn_boolean_t ignore_externals,
1421  svn_boolean_t allow_unver_obstructions,
1422  svn_client_ctx_t *ctx,
1423  apr_pool_t *pool);
1424 
1425 /**
1426  * Similar to svn_client_update3() but with @a allow_unver_obstructions
1427  * always set to FALSE, @a depth_is_sticky to FALSE, and @a depth set
1428  * according to @a recurse: if @a recurse is TRUE, set @a depth to
1429  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
1430  * #svn_depth_files.
1431  *
1432  * @deprecated Provided for backward compatibility with the 1.4 API.
1433  */
1435 svn_error_t *
1436 svn_client_update2(apr_array_header_t **result_revs,
1437  const apr_array_header_t *paths,
1438  const svn_opt_revision_t *revision,
1439  svn_boolean_t recurse,
1440  svn_boolean_t ignore_externals,
1441  svn_client_ctx_t *ctx,
1442  apr_pool_t *pool);
1443 
1444 /**
1445  * Similar to svn_client_update2() except that it accepts only a single
1446  * target in @a path, returns a single revision if @a result_rev is
1447  * not NULL, and @a ignore_externals is always set to FALSE.
1448  *
1449  * @deprecated Provided for backward compatibility with the 1.1 API.
1450  */
1452 svn_error_t *
1453 svn_client_update(svn_revnum_t *result_rev,
1454  const char *path,
1455  const svn_opt_revision_t *revision,
1456  svn_boolean_t recurse,
1457  svn_client_ctx_t *ctx,
1458  apr_pool_t *pool);
1459 /** @} */
1460 
1461 /**
1462  * @defgroup Switch Switch a working copy to another location.
1463  *
1464  * @{
1465  */
1466 
1467 /**
1468  * Switch an existing working copy directory to a different repository
1469  * location.
1470  *
1471  * This is normally used to switch a working copy directory over to another
1472  * line of development, such as a branch or a tag. Switching an existing
1473  * working copy directory is more efficient than checking out @a url from
1474  * scratch.
1475  *
1476  * @param[out] result_rev If non-NULL, the value of the revision to which
1477  * the working copy was actually switched.
1478  * @param[in] path The directory to be switched. This need not be the
1479  * root of a working copy.
1480  * @param[in] url The repository URL to switch to.
1481  * @param[in] peg_revision The peg revision.
1482  * @param[in] revision The operative revision.
1483  * @param[in] depth The depth of the operation. If #svn_depth_infinity,
1484  * switch fully recursively. Else if #svn_depth_immediates,
1485  * switch @a path and its file children (if any), and
1486  * switch subdirectories but do not update them. Else if
1487  * #svn_depth_files, switch just file children, ignoring
1488  * subdirectories completely. Else if #svn_depth_empty,
1489  * switch just @a path and touch nothing underneath it.
1490  * @param[in] depth_is_sticky If @c TRUE, and @a depth is not
1491  * #svn_depth_unknown, then in addition to switching @a path, also
1492  * set its sticky ambient depth value to @a depth.
1493  * @param[in] ignore_externals If @c TRUE, don't process externals
1494  * definitions as part of this operation.
1495  * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
1496  * unversioned items that obstruct incoming paths. Only
1497  * obstructions of the same type (file or dir) as the added
1498  * item are tolerated. The text of obstructing files is left
1499  * as-is, effectively treating it as a user modification after
1500  * the checkout. Working properties of obstructing items are
1501  * set equal to the base properties. <br>
1502  * If @c FALSE, then abort if there are any unversioned
1503  * obstructing items.
1504  * @param[in] ignore_ancestry If @c FALSE, then verify that the file
1505  * or directory at @a path shares some common version control
1506  * ancestry with the switch URL location (represented by the
1507  * combination of @a url, @a peg_revision, and @a revision),
1508  * and returning #SVN_ERR_CLIENT_UNRELATED_RESOURCES if they
1509  * do not. If @c TRUE, no such sanity checks are performed.
1510  *
1511  * @param[in] ctx The standard client context, used for authentication and
1512  * notification. The notifier is invoked for paths affected by
1513  * the switch, and also for files which may be restored from the
1514  * pristine store after being previously removed from the working
1515  * copy.
1516  * @param[in] pool Used for any temporary allocation.
1517  *
1518  * @return A pointer to an #svn_error_t of the type (this list is not
1519  * exhaustive): <br>
1520  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1521  * #svn_opt_revision_number, #svn_opt_revision_head, or
1522  * #svn_opt_revision_date. <br>
1523  * If no error occurred, return #SVN_NO_ERROR.
1524  *
1525  * @since New in 1.7.
1526  *
1527  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1528  * a discussion of operative and peg revisions.
1529  */
1530 svn_error_t *
1531 svn_client_switch3(svn_revnum_t *result_rev,
1532  const char *path,
1533  const char *url,
1534  const svn_opt_revision_t *peg_revision,
1535  const svn_opt_revision_t *revision,
1536  svn_depth_t depth,
1537  svn_boolean_t depth_is_sticky,
1538  svn_boolean_t ignore_externals,
1539  svn_boolean_t allow_unver_obstructions,
1540  svn_boolean_t ignore_ancestry,
1541  svn_client_ctx_t *ctx,
1542  apr_pool_t *pool);
1543 
1544 
1545 /**
1546  * Similar to svn_client_switch3() but with @a ignore_ancestry always
1547  * set to TRUE.
1548  *
1549  * @since New in 1.5.
1550  * @deprecated Provided for backward compatibility with the 1.4 API.
1551  */
1553 svn_error_t *
1554 svn_client_switch2(svn_revnum_t *result_rev,
1555  const char *path,
1556  const char *url,
1557  const svn_opt_revision_t *peg_revision,
1558  const svn_opt_revision_t *revision,
1559  svn_depth_t depth,
1560  svn_boolean_t depth_is_sticky,
1561  svn_boolean_t ignore_externals,
1562  svn_boolean_t allow_unver_obstructions,
1563  svn_client_ctx_t *ctx,
1564  apr_pool_t *pool);
1565 
1566 
1567 /**
1568  * Similar to svn_client_switch2() but with @a allow_unver_obstructions,
1569  * @a ignore_externals, and @a depth_is_sticky always set to FALSE,
1570  * and @a depth set according to @a recurse: if @a recurse is TRUE,
1571  * set @a depth to #svn_depth_infinity, if @a recurse is FALSE, set
1572  * @a depth to #svn_depth_files.
1573  *
1574  * @deprecated Provided for backward compatibility with the 1.4 API.
1575  */
1577 svn_error_t *
1578 svn_client_switch(svn_revnum_t *result_rev,
1579  const char *path,
1580  const char *url,
1581  const svn_opt_revision_t *revision,
1582  svn_boolean_t recurse,
1583  svn_client_ctx_t *ctx,
1584  apr_pool_t *pool);
1585 
1586 /** @} */
1587 
1588 /** Callback for svn_client__layout_list()
1589  *
1590  * @warning EXPERIMENTAL.
1591  */
1592 typedef svn_error_t * (*svn_client__layout_func_t)(
1593  void *layout_baton,
1594  const char *local_abspath,
1595  const char *repos_root_url,
1596  svn_boolean_t not_present,
1597  svn_boolean_t url_changed,
1598  const char *url,
1599  svn_boolean_t revision_changed,
1600  svn_revnum_t revision,
1601  svn_boolean_t depth_changed,
1602  svn_depth_t depth,
1603  apr_pool_t *scratch_pool);
1604 
1605 /**
1606  * Describe the layout of the working copy below @a local_abspath to
1607  * the callback @a layout.
1608  *
1609  * @warning EXPERIMENTAL.
1610  */
1612 svn_error_t *
1613 svn_client__layout_list(const char *local_abspath,
1615  void *layout_baton,
1616  svn_client_ctx_t *ctx,
1617  apr_pool_t *scratch_pool);
1618 
1619 
1620 /**
1621  * @defgroup Add Begin versioning files/directories in a working copy.
1622  *
1623  * @{
1624  */
1625 
1626 /**
1627  * Schedule a working copy @a path for addition to the repository.
1628  *
1629  * If @a depth is #svn_depth_empty, add just @a path and nothing
1630  * below it. If #svn_depth_files, add @a path and any file
1631  * children of @a path. If #svn_depth_immediates, add @a path, any
1632  * file children, and any immediate subdirectories (but nothing
1633  * underneath those subdirectories). If #svn_depth_infinity, add
1634  * @a path and everything under it fully recursively.
1635  *
1636  * @a path's parent must be under revision control already (unless
1637  * @a add_parents is TRUE), but @a path is not.
1638  *
1639  * If @a force is not set and @a path is already under version
1640  * control, return the error #SVN_ERR_ENTRY_EXISTS. If @a force is
1641  * set, do not error on already-versioned items. When used on a
1642  * directory in conjunction with a @a depth value greater than
1643  * #svn_depth_empty, this has the effect of scheduling for addition
1644  * any unversioned files and directories scattered within even a
1645  * versioned tree (up to @a depth).
1646  *
1647  * If @a ctx->notify_func2 is non-NULL, then for each added item, call
1648  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the
1649  * added item.
1650  *
1651  * If @a no_ignore is FALSE, don't add any file or directory (or recurse
1652  * into any directory) that is unversioned and found by recursion (as
1653  * opposed to being the explicit target @a path) and whose name matches the
1654  * svn:ignore property on its parent directory or the global-ignores list in
1655  * @a ctx->config. If @a no_ignore is TRUE, do include such files and
1656  * directories. (Note that an svn:ignore property can influence this
1657  * behaviour only when recursing into an already versioned directory with @a
1658  * force.)
1659  *
1660  * If @a no_autoprops is TRUE, don't set any autoprops on added files. If
1661  * @a no_autoprops is FALSE then all added files have autprops set as per
1662  * the auto-props list in @a ctx->config and the value of any
1663  * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by the nearest
1664  * parents of @a path which are already under version control.
1665  *
1666  * If @a add_parents is TRUE, recurse up @a path's directory and look for
1667  * a versioned directory. If found, add all intermediate paths between it
1668  * and @a path. If not found, return #SVN_ERR_CLIENT_NO_VERSIONED_PARENT.
1669  *
1670  * @a scratch_pool is used for temporary allocations only.
1671  *
1672  * @par Important:
1673  * This is a *scheduling* operation. No changes will
1674  * happen to the repository until a commit occurs. This scheduling
1675  * can be removed with svn_client_revert2().
1676  *
1677  * @since New in 1.8.
1678  */
1679 svn_error_t *
1680 svn_client_add5(const char *path,
1681  svn_depth_t depth,
1682  svn_boolean_t force,
1683  svn_boolean_t no_ignore,
1684  svn_boolean_t no_autoprops,
1685  svn_boolean_t add_parents,
1686  svn_client_ctx_t *ctx,
1687  apr_pool_t *scratch_pool);
1688 
1689 /**
1690  * Similar to svn_client_add5(), but with @a no_autoprops always set to
1691  * FALSE.
1692  *
1693  * @deprecated Provided for backward compatibility with the 1.7 API.
1694  */
1696 svn_error_t *
1697 svn_client_add4(const char *path,
1698  svn_depth_t depth,
1699  svn_boolean_t force,
1700  svn_boolean_t no_ignore,
1701  svn_boolean_t add_parents,
1702  svn_client_ctx_t *ctx,
1703  apr_pool_t *pool);
1704 
1705 /**
1706  * Similar to svn_client_add4(), but with @a add_parents always set to
1707  * FALSE and @a depth set according to @a recursive: if TRUE, then
1708  * @a depth is #svn_depth_infinity, if FALSE, then #svn_depth_empty.
1709  *
1710  * @deprecated Provided for backward compatibility with the 1.4 API.
1711  */
1713 svn_error_t *
1714 svn_client_add3(const char *path,
1715  svn_boolean_t recursive,
1716  svn_boolean_t force,
1717  svn_boolean_t no_ignore,
1718  svn_client_ctx_t *ctx,
1719  apr_pool_t *pool);
1720 
1721 /**
1722  * Similar to svn_client_add3(), but with @a no_ignore always set to
1723  * FALSE.
1724  *
1725  * @deprecated Provided for backward compatibility with the 1.2 API.
1726  */
1728 svn_error_t *
1729 svn_client_add2(const char *path,
1730  svn_boolean_t recursive,
1731  svn_boolean_t force,
1732  svn_client_ctx_t *ctx,
1733  apr_pool_t *pool);
1734 
1735 /**
1736  * Similar to svn_client_add2(), but with @a force always set to FALSE.
1737  *
1738  * @deprecated Provided for backward compatibility with the 1.0 API.
1739  */
1741 svn_error_t *
1742 svn_client_add(const char *path,
1743  svn_boolean_t recursive,
1744  svn_client_ctx_t *ctx,
1745  apr_pool_t *pool);
1746 
1747 /** @} */
1748 
1749 /**
1750  * @defgroup Mkdir Create directories in a working copy or repository.
1751  *
1752  * @{
1753  */
1754 
1755 /** Create a directory, either in a repository or a working copy.
1756  *
1757  * @a paths is an array of (const char *) paths, either all local WC paths
1758  * or all URLs.
1759  *
1760  * If @a paths contains URLs, use the authentication baton in @a ctx
1761  * and @a message to immediately attempt to commit the creation of the
1762  * directories in @a paths in the repository.
1763  *
1764  * Else, create the directories on disk, and attempt to schedule them
1765  * for addition (using svn_client_add(), whose docstring you should
1766  * read).
1767  *
1768  * If @a make_parents is TRUE, create any non-existent parent directories
1769  * also.
1770  *
1771  * If non-NULL, @a revprop_table is a hash table holding additional,
1772  * custom revision properties (<tt>const char *</tt> names mapped to
1773  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1774  * the event that this is a committing operation. This table cannot
1775  * contain any standard Subversion properties.
1776  *
1777  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1778  * combo that this function can use to query for a commit log message
1779  * when one is needed.
1780  *
1781  * If @a ctx->notify_func2 is non-NULL, when the directory has been created
1782  * (successfully) in the working copy, call @a ctx->notify_func2 with
1783  * @a ctx->notify_baton2 and the path of the new directory. Note that this is
1784  * only called for items added to the working copy.
1785  *
1786  * If @a commit_callback is non-NULL, then for each successful commit, call
1787  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1788  * the commit.
1789  *
1790  * @since New in 1.7.
1791  */
1792 svn_error_t *
1793 svn_client_mkdir4(const apr_array_header_t *paths,
1794  svn_boolean_t make_parents,
1795  const apr_hash_t *revprop_table,
1796  svn_commit_callback2_t commit_callback,
1797  void *commit_baton,
1798  svn_client_ctx_t *ctx,
1799  apr_pool_t *pool);
1800 
1801 /**
1802  * Similar to svn_client_mkdir4(), but returns the commit info in
1803  * @a *commit_info_p rather than through a callback function.
1804  *
1805  * @since New in 1.5.
1806  * @deprecated Provided for backward compatibility with the 1.6 API.
1807  */
1809 svn_error_t *
1810 svn_client_mkdir3(svn_commit_info_t **commit_info_p,
1811  const apr_array_header_t *paths,
1812  svn_boolean_t make_parents,
1813  const apr_hash_t *revprop_table,
1814  svn_client_ctx_t *ctx,
1815  apr_pool_t *pool);
1816 
1817 
1818 /**
1819  * Same as svn_client_mkdir3(), but with @a make_parents always FALSE,
1820  * and @a revprop_table always NULL.
1821  *
1822  * @since New in 1.3.
1823  * @deprecated Provided for backward compatibility with the 1.4 API.
1824  */
1826 svn_error_t *
1827 svn_client_mkdir2(svn_commit_info_t **commit_info_p,
1828  const apr_array_header_t *paths,
1829  svn_client_ctx_t *ctx,
1830  apr_pool_t *pool);
1831 
1832 /**
1833  * Same as svn_client_mkdir2(), but takes the #svn_client_commit_info_t
1834  * type for @a commit_info_p.
1835  *
1836  * @deprecated Provided for backward compatibility with the 1.2 API.
1837  */
1839 svn_error_t *
1841  const apr_array_header_t *paths,
1842  svn_client_ctx_t *ctx,
1843  apr_pool_t *pool);
1844 
1845 /** @} */
1846 
1847 /**
1848  * @defgroup Delete Remove files/directories from a working copy or repository.
1849  *
1850  * @{
1851  */
1852 
1853 /** Delete items from a repository or working copy.
1854  *
1855  * @a paths is an array of (const char *) paths, either all local WC paths
1856  * or all URLs.
1857  *
1858  * If the paths in @a paths are URLs, use the authentication baton in
1859  * @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to
1860  * immediately attempt to commit a deletion of the URLs from the
1861  * repository. Every path must belong to the same repository.
1862  *
1863  * Else, schedule the working copy paths in @a paths for removal from
1864  * the repository. Each path's parent must be under revision control.
1865  * This is just a *scheduling* operation. No changes will happen to
1866  * the repository until a commit occurs. This scheduling can be
1867  * removed with svn_client_revert2(). If a path is a file it is
1868  * immediately removed from the working copy. If the path is a
1869  * directory it will remain in the working copy but all the files, and
1870  * all unversioned items, it contains will be removed. If @a force is
1871  * not set then this operation will fail if any path contains locally
1872  * modified and/or unversioned items. If @a force is set such items
1873  * will be deleted.
1874  *
1875  * If the paths are working copy paths and @a keep_local is TRUE then
1876  * the paths will not be removed from the working copy, only scheduled
1877  * for removal from the repository. Once the scheduled deletion is
1878  * committed, they will appear as unversioned paths in the working copy.
1879  *
1880  * If non-NULL, @a revprop_table is a hash table holding additional,
1881  * custom revision properties (<tt>const char *</tt> names mapped to
1882  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1883  * the event that this is a committing operation. This table cannot
1884  * contain any standard Subversion properties.
1885  *
1886  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1887  * combo that this function can use to query for a commit log message
1888  * when one is needed.
1889  *
1890  * If @a ctx->notify_func2 is non-NULL, then for each item deleted, call
1891  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the deleted
1892  * item.
1893  *
1894  * If @a commit_callback is non-NULL, then for each successful commit, call
1895  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1896  * the commit.
1897  *
1898  * @since New in 1.7.
1899  */
1900 svn_error_t *
1901 svn_client_delete4(const apr_array_header_t *paths,
1902  svn_boolean_t force,
1903  svn_boolean_t keep_local,
1904  const apr_hash_t *revprop_table,
1905  svn_commit_callback2_t commit_callback,
1906  void *commit_baton,
1907  svn_client_ctx_t *ctx,
1908  apr_pool_t *pool);
1909 
1910 /**
1911  * Similar to svn_client_delete4(), but returns the commit info in
1912  * @a *commit_info_p rather than through a callback function.
1913  *
1914  * @since New in 1.5.
1915  * @deprecated Provided for backward compatibility with the 1.6 API.
1916  */
1918 svn_error_t *
1919 svn_client_delete3(svn_commit_info_t **commit_info_p,
1920  const apr_array_header_t *paths,
1921  svn_boolean_t force,
1922  svn_boolean_t keep_local,
1923  const apr_hash_t *revprop_table,
1924  svn_client_ctx_t *ctx,
1925  apr_pool_t *pool);
1926 
1927 /**
1928  * Similar to svn_client_delete3(), but with @a keep_local always set
1929  * to FALSE, and @a revprop_table passed as NULL.
1930  *
1931  * @deprecated Provided for backward compatibility with the 1.4 API.
1932  */
1934 svn_error_t *
1935 svn_client_delete2(svn_commit_info_t **commit_info_p,
1936  const apr_array_header_t *paths,
1937  svn_boolean_t force,
1938  svn_client_ctx_t *ctx,
1939  apr_pool_t *pool);
1940 
1941 /**
1942  * Similar to svn_client_delete2(), but takes the #svn_client_commit_info_t
1943  * type for @a commit_info_p.
1944  *
1945  * @deprecated Provided for backward compatibility with the 1.2 API.
1946  */
1948 svn_error_t *
1950  const apr_array_header_t *paths,
1951  svn_boolean_t force,
1952  svn_client_ctx_t *ctx,
1953  apr_pool_t *pool);
1954 
1955 
1956 /** @} */
1957 
1958 /**
1959  * @defgroup Import Import files into the repository.
1960  *
1961  * @{
1962  */
1963 
1964 /**
1965  * The callback invoked by svn_client_import5() before adding a node to the
1966  * list of nodes to be imported.
1967  *
1968  * @a baton is the value passed to @a svn_client_import5 as filter_baton.
1969  *
1970  * The callback receives the @a local_abspath for each node and the @a dirent
1971  * for it when walking the directory tree. Only the kind of node, including
1972  * special status is available in @a dirent.
1973  *
1974  * Implementations can set @a *filtered to TRUE, to make the import
1975  * process omit the node and (if the node is a directory) all its
1976  * descendants.
1977  *
1978  * @a scratch_pool can be used for temporary allocations.
1979  *
1980  * @since New in 1.8.
1981  */
1982 typedef svn_error_t *(*svn_client_import_filter_func_t)(
1983  void *baton,
1984  svn_boolean_t *filtered,
1985  const char *local_abspath,
1986  const svn_io_dirent2_t *dirent,
1987  apr_pool_t *scratch_pool);
1988 
1989 /** Import file or directory @a path into repository directory @a url at
1990  * head, authenticating with the authentication baton cached in @a ctx,
1991  * and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
1992  * for the (implied) commit. If some components of @a url do not exist
1993  * then create parent directories as necessary.
1994  *
1995  * This function reads an unversioned tree from disk and skips any ".svn"
1996  * directories. Even if a file or directory being imported is part of an
1997  * existing WC, this function sees it as unversioned and does not notice any
1998  * existing Subversion properties in it.
1999  *
2000  * If @a path is a directory, the contents of that directory are
2001  * imported directly into the directory identified by @a url. Note that the
2002  * directory @a path itself is not imported -- that is, the basename of
2003  * @a path is not part of the import.
2004  *
2005  * If @a path is a file, then the dirname of @a url is the directory
2006  * receiving the import. The basename of @a url is the filename in the
2007  * repository. In this case if @a url already exists, return error.
2008  *
2009  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
2010  * @a ctx->notify_baton2 as the import progresses, with any of the following
2011  * actions: #svn_wc_notify_commit_added,
2012  * #svn_wc_notify_commit_postfix_txdelta.
2013  *
2014  * Use @a scratch_pool for any temporary allocation.
2015  *
2016  * If non-NULL, @a revprop_table is a hash table holding additional,
2017  * custom revision properties (<tt>const char *</tt> names mapped to
2018  * <tt>svn_string_t *</tt> values) to be set on the new revision.
2019  * This table cannot contain any standard Subversion properties.
2020  *
2021  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
2022  * combo that this function can use to query for a commit log message
2023  * when one is needed.
2024  *
2025  * If @a depth is #svn_depth_empty, import just @a path and nothing
2026  * below it. If #svn_depth_files, import @a path and any file
2027  * children of @a path. If #svn_depth_immediates, import @a path, any
2028  * file children, and any immediate subdirectories (but nothing
2029  * underneath those subdirectories). If #svn_depth_infinity, import
2030  * @a path and everything under it fully recursively.
2031  *
2032  * If @a no_ignore is @c FALSE, don't import any file or directory (or
2033  * recurse into any directory) that is found by recursion (as opposed to
2034  * being the explicit target @a path) and whose name matches the
2035  * global-ignores list in @a ctx->config. If @a no_ignore is @c TRUE, do
2036  * include such files and directories. (Note that svn:ignore properties are
2037  * not involved, as auto-props cannot set properties on directories and even
2038  * if the target is part of a WC the import ignores any existing
2039  * properties.)
2040  *
2041  * If @a no_autoprops is TRUE, don't set any autoprops on imported files. If
2042  * @a no_autoprops is FALSE then all imported files have autprops set as per
2043  * the auto-props list in @a ctx->config and the value of any
2044  * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by and explicitly set
2045  * on @a url if @a url is already under versioned control, or the nearest parents
2046  * of @a path which are already under version control if not.
2047  *
2048  * If @a ignore_unknown_node_types is @c TRUE, ignore files of which the
2049  * node type is unknown, such as device files and pipes.
2050  *
2051  * If @a filter_callback is non-NULL, call it for each node that isn't ignored
2052  * for other reasons with @a filter_baton, to allow third party to ignore
2053  * specific nodes during importing.
2054  *
2055  * If @a commit_callback is non-NULL, then for each successful commit, call
2056  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
2057  * the commit.
2058  *
2059  * @since New in 1.8.
2060  */
2061 svn_error_t *
2062 svn_client_import5(const char *path,
2063  const char *url,
2064  svn_depth_t depth,
2065  svn_boolean_t no_ignore,
2066  svn_boolean_t no_autoprops,
2067  svn_boolean_t ignore_unknown_node_types,
2068  const apr_hash_t *revprop_table,
2069  svn_client_import_filter_func_t filter_callback,
2070  void *filter_baton,
2071  svn_commit_callback2_t commit_callback,
2072  void *commit_baton,
2073  svn_client_ctx_t *ctx,
2074  apr_pool_t *scratch_pool);
2075 
2076 /**
2077  * Similar to svn_client_import5(), but without support for an optional
2078  * @a filter_callback and @a no_autoprops always set to FALSE.
2079  *
2080  * @since New in 1.7.
2081  * @deprecated Provided for backward compatibility with the 1.7 API.
2082  */
2084 svn_error_t *
2085 svn_client_import4(const char *path,
2086  const char *url,
2087  svn_depth_t depth,
2088  svn_boolean_t no_ignore,
2089  svn_boolean_t ignore_unknown_node_types,
2090  const apr_hash_t *revprop_table,
2091  svn_commit_callback2_t commit_callback,
2092  void *commit_baton,
2093  svn_client_ctx_t *ctx,
2094  apr_pool_t *pool);
2095 
2096 /**
2097  * Similar to svn_client_import4(), but returns the commit info in
2098  * @a *commit_info_p rather than through a callback function.
2099  *
2100  * @since New in 1.5.
2101  * @deprecated Provided for backward compatibility with the 1.6 API.
2102  */
2104 svn_error_t *
2105 svn_client_import3(svn_commit_info_t **commit_info_p,
2106  const char *path,
2107  const char *url,
2108  svn_depth_t depth,
2109  svn_boolean_t no_ignore,
2110  svn_boolean_t ignore_unknown_node_types,
2111  const apr_hash_t *revprop_table,
2112  svn_client_ctx_t *ctx,
2113  apr_pool_t *pool);
2114 
2115 /**
2116  * Similar to svn_client_import3(), but with @a ignore_unknown_node_types
2117  * always set to @c FALSE, @a revprop_table passed as NULL, and @a
2118  * depth set according to @a nonrecursive: if TRUE, then @a depth is
2119  * #svn_depth_files, else #svn_depth_infinity.
2120  *
2121  * @since New in 1.3.
2122  *
2123  * @deprecated Provided for backward compatibility with the 1.4 API
2124  */
2126 svn_error_t *
2127 svn_client_import2(svn_commit_info_t **commit_info_p,
2128  const char *path,
2129  const char *url,
2130  svn_boolean_t nonrecursive,
2131  svn_boolean_t no_ignore,
2132  svn_client_ctx_t *ctx,
2133  apr_pool_t *pool);
2134 
2135 /**
2136  * Similar to svn_client_import2(), but with @a no_ignore always set
2137  * to FALSE and using the #svn_client_commit_info_t type for
2138  * @a commit_info_p.
2139  *
2140  * @deprecated Provided for backward compatibility with the 1.2 API.
2141  */
2143 svn_error_t *
2145  const char *path,
2146  const char *url,
2147  svn_boolean_t nonrecursive,
2148  svn_client_ctx_t *ctx,
2149  apr_pool_t *pool);
2150 
2151 /** @} */
2152 
2153 /**
2154  * @defgroup Commit Commit local modifications to the repository.
2155  *
2156  * @{
2157  */
2158 
2159 /**
2160  * Commit files or directories into repository, authenticating with
2161  * the authentication baton cached in @a ctx, and using
2162  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to obtain the log message.
2163  * Set @a *commit_info_p to the results of the commit, allocated in @a pool.
2164  *
2165  * @a targets is an array of <tt>const char *</tt> paths to commit. They
2166  * need not be canonicalized nor condensed; this function will take care of
2167  * that. If @a targets has zero elements, then do nothing and return
2168  * immediately without error.
2169  *
2170  * If non-NULL, @a revprop_table is a hash table holding additional,
2171  * custom revision properties (<tt>const char *</tt> names mapped to
2172  * <tt>svn_string_t *</tt> values) to be set on the new revision.
2173  * This table cannot contain any standard Subversion properties.
2174  *
2175  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
2176  * @a ctx->notify_baton2 as the commit progresses, with any of the following
2177  * actions: #svn_wc_notify_commit_modified, #svn_wc_notify_commit_added,
2178  * #svn_wc_notify_commit_deleted, #svn_wc_notify_commit_replaced,
2179  * #svn_wc_notify_commit_copied, #svn_wc_notify_commit_copied_replaced,
2180  * #svn_wc_notify_commit_postfix_txdelta.
2181  *
2182  * If @a depth is #svn_depth_infinity, commit all changes to and
2183  * below named targets. If @a depth is #svn_depth_empty, commit
2184  * only named targets (that is, only property changes on named
2185  * directory targets, and property and content changes for named file
2186  * targets). If @a depth is #svn_depth_files, behave as above for
2187  * named file targets, and for named directory targets, commit
2188  * property changes on a named directory and all changes to files
2189  * directly inside that directory. If #svn_depth_immediates, behave
2190  * as for #svn_depth_files, and for subdirectories of any named
2191  * directory target commit as though for #svn_depth_empty.
2192  *
2193  * Unlock paths in the repository, unless @a keep_locks is TRUE.
2194  *
2195  * @a changelists is an array of <tt>const char *</tt> changelist
2196  * names, used as a restrictive filter on items that are committed;
2197  * that is, don't commit anything unless it's a member of one of those
2198  * changelists. After the commit completes successfully, remove
2199  * changelist associations from the targets, unless @a
2200  * keep_changelists is set. If @a changelists is
2201  * empty (or altogether @c NULL), no changelist filtering occurs.
2202  *
2203  * If @a commit_as_operations is set to FALSE, when a copy is committed
2204  * all changes below the copy are always committed at the same time
2205  * (independent of the value of @a depth). If @a commit_as_operations is
2206  * #TRUE, changes to descendants are only committed if they are itself
2207  * included via @a depth and targets.
2208  *
2209  * If @a include_file_externals and/or @a include_dir_externals are #TRUE,
2210  * also commit all file and/or dir externals (respectively) that are reached
2211  * by recursion, except for those externals which:
2212  * - have a fixed revision, or
2213  * - come from a different repository root URL (dir externals).
2214  * These flags affect only recursion; externals that directly appear in @a
2215  * targets are always included in the commit.
2216  *
2217  * ### TODO: currently, file externals hidden inside an unversioned dir are
2218  * skipped deliberately, because we can't commit those yet.
2219  * See STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW.
2220  *
2221  * ### TODO: With @c depth_immediates, this function acts as if
2222  * @a include_dir_externals was passed #FALSE, but caller expects
2223  * immediate child dir externals to be included @c depth_empty.
2224  *
2225  * When @a commit_as_operations is #TRUE it is possible to delete a node and
2226  * all its descendants by selecting just the root of the deletion. If it is
2227  * set to #FALSE this will raise an error.
2228  *
2229  * If @a commit_callback is non-NULL, then for each successful commit, call
2230  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
2231  * the commit.
2232  *
2233  * @note #svn_depth_unknown and #svn_depth_exclude must not be passed
2234  * for @a depth.
2235  *
2236  * Use @a pool for any temporary allocations.
2237  *
2238  * @since New in 1.8.
2239  */
2240 svn_error_t *
2241 svn_client_commit6(const apr_array_header_t *targets,
2242  svn_depth_t depth,
2243  svn_boolean_t keep_locks,
2244  svn_boolean_t keep_changelists,
2245  svn_boolean_t commit_as_operations,
2246  svn_boolean_t include_file_externals,
2247  svn_boolean_t include_dir_externals,
2248  const apr_array_header_t *changelists,
2249  const apr_hash_t *revprop_table,
2250  svn_commit_callback2_t commit_callback,
2251  void *commit_baton,
2252  svn_client_ctx_t *ctx,
2253  apr_pool_t *pool);
2254 
2255 /**
2256  * Similar to svn_client_commit6(), but passes @a include_file_externals as
2257  * FALSE and @a include_dir_externals as FALSE.
2258  *
2259  * @since New in 1.7.
2260  * @deprecated Provided for backward compatibility with the 1.7 API.
2261  */
2263 svn_error_t *
2264 svn_client_commit5(const apr_array_header_t *targets,
2265  svn_depth_t depth,
2266  svn_boolean_t keep_locks,
2267  svn_boolean_t keep_changelists,
2268  svn_boolean_t commit_as_operations,
2269  const apr_array_header_t *changelists,
2270  const apr_hash_t *revprop_table,
2271  svn_commit_callback2_t commit_callback,
2272  void *commit_baton,
2273  svn_client_ctx_t *ctx,
2274  apr_pool_t *pool);
2275 
2276 /**
2277  * Similar to svn_client_commit5(), but returns the commit info in
2278  * @a *commit_info_p rather than through a callback function. Does not use
2279  * #svn_wc_notify_commit_copied or #svn_wc_notify_commit_copied_replaced
2280  * (preferring #svn_wc_notify_commit_added and
2281  * #svn_wc_notify_commit_replaced, respectively, instead).
2282  *
2283  * Also, if no error is returned and @a (*commit_info_p)->revision is set to
2284  * #SVN_INVALID_REVNUM, then the commit was a no-op; nothing needed to
2285  * be committed.
2286  *
2287  * Sets @a commit_as_operations to FALSE to match Subversion 1.6's behavior.
2288  *
2289  * @since New in 1.5.
2290  * @deprecated Provided for backward compatibility with the 1.6 API.
2291  */
2293 svn_error_t *
2294 svn_client_commit4(svn_commit_info_t **commit_info_p,
2295  const apr_array_header_t *targets,
2296  svn_depth_t depth,
2297  svn_boolean_t keep_locks,
2298  svn_boolean_t keep_changelists,
2299  const apr_array_header_t *changelists,
2300  const apr_hash_t *revprop_table,
2301  svn_client_ctx_t *ctx,
2302  apr_pool_t *pool);
2303 
2304 /**
2305  * Similar to svn_client_commit4(), but always with NULL for
2306  * @a changelist_name, FALSE for @a keep_changelist, NULL for @a
2307  * revprop_table, and @a depth set according to @a recurse: if @a
2308  * recurse is TRUE, use #svn_depth_infinity, else #svn_depth_empty.
2309  *
2310  * @deprecated Provided for backward compatibility with the 1.4 API.
2311  *
2312  * @since New in 1.3.
2313  */
2315 svn_error_t *
2316 svn_client_commit3(svn_commit_info_t **commit_info_p,
2317  const apr_array_header_t *targets,
2318  svn_boolean_t recurse,
2319  svn_boolean_t keep_locks,
2320  svn_client_ctx_t *ctx,
2321  apr_pool_t *pool);
2322 
2323 /**
2324  * Similar to svn_client_commit3(), but uses #svn_client_commit_info_t
2325  * for @a commit_info_p.
2326  *
2327  * @deprecated Provided for backward compatibility with the 1.2 API.
2328  *
2329  * @since New in 1.2.
2330  */
2332 svn_error_t *
2334  const apr_array_header_t *targets,
2335  svn_boolean_t recurse,
2336  svn_boolean_t keep_locks,
2337  svn_client_ctx_t *ctx,
2338  apr_pool_t *pool);
2339 
2340 /**
2341  * Similar to svn_client_commit2(), but with @a keep_locks set to
2342  * TRUE and @a nonrecursive instead of @a recurse.
2343  *
2344  * @deprecated Provided for backward compatibility with the 1.1 API.
2345  */
2347 svn_error_t *
2349  const apr_array_header_t *targets,
2350  svn_boolean_t nonrecursive,
2351  svn_client_ctx_t *ctx,
2352  apr_pool_t *pool);
2353 
2354 /** @} */
2355 
2356 /**
2357  * @defgroup Status Report interesting information about paths in the \
2358  * working copy.
2359  *
2360  * @{
2361  */
2362 
2363 /**
2364  * Structure for holding the "status" of a working copy item.
2365  *
2366  * @note Fields may be added to the end of this structure in future
2367  * versions. Therefore, to preserve binary compatibility, users
2368  * should not directly allocate structures of this type.
2369  *
2370  * @since New in 1.7.
2371  */
2372 typedef struct svn_client_status_t
2373 {
2374  /** The kind of node as recorded in the working copy */
2376 
2377  /** The absolute path to the node */
2378  const char *local_abspath;
2379 
2380  /** The actual size of the working file on disk, or SVN_INVALID_FILESIZE
2381  * if unknown (or if the item isn't a file at all). */
2383 
2384  /** If the path is under version control, versioned is TRUE, otherwise
2385  * FALSE. */
2387 
2388  /** Set to TRUE if the node is the victim of some kind of conflict. */
2390 
2391  /** The status of the node, based on the restructuring changes and if the
2392  * node has no restructuring changes the text and prop status. */
2393  enum svn_wc_status_kind node_status;
2394 
2395  /** The status of the text of the node, not including restructuring changes.
2396  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2397  * svn_wc_status_modified and svn_wc_status_conflicted. */
2398  enum svn_wc_status_kind text_status;
2399 
2400  /** The status of the node's properties.
2401  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2402  * svn_wc_status_modified and svn_wc_status_conflicted. */
2403  enum svn_wc_status_kind prop_status;
2404 
2405  /** A node can be 'locked' if a working copy update is in progress or
2406  * was interrupted. */
2408 
2409  /** A file or directory can be 'copied' if it's scheduled for
2410  * addition-with-history (or part of a subtree that is scheduled as such.).
2411  */
2413 
2414  /** The URL of the repository root. */
2415  const char *repos_root_url;
2416 
2417  /** The UUID of the repository */
2418  const char *repos_uuid;
2419 
2420  /** The in-repository path relative to the repository root. */
2421  const char *repos_relpath;
2422 
2423  /** Base revision. */
2425 
2426  /** Last revision this was changed */
2428 
2429  /** Date of last commit. */
2430  apr_time_t changed_date;
2431 
2432  /** Last commit author of this item */
2433  const char *changed_author;
2434 
2435  /** A file or directory can be 'switched' if the switch command has been
2436  * used. If this is TRUE, then file_external will be FALSE.
2437  */
2439 
2440  /** If the item is a file that was added to the working copy with an
2441  * svn:externals; if file_external is TRUE, then switched is always
2442  * FALSE.
2443  */
2445 
2446  /** The locally present lock. (Values of path, token, owner, comment and
2447  * are available if a lock is present) */
2449 
2450  /** Which changelist this item is part of, or NULL if not part of any. */
2451  const char *changelist;
2452 
2453  /** The depth of the node as recorded in the working copy
2454  * (#svn_depth_unknown for files or when no depth is recorded) */
2456 
2457  /**
2458  * @defgroup svn_wc_status_ood WC out-of-date info from the repository
2459  * @{
2460  *
2461  * When the working copy item is out-of-date compared to the
2462  * repository, the following fields represent the state of the
2463  * youngest revision of the item in the repository. If the working
2464  * copy is not out of date, the fields are initialized as described
2465  * below.
2466  */
2467 
2468  /** Set to the node kind of the youngest commit, or #svn_node_none
2469  * if not out of date. */
2471 
2472  /** The status of the node, based on the text status if the node has no
2473  * restructuring changes */
2474  enum svn_wc_status_kind repos_node_status;
2475 
2476  /** The node's text status in the repository. */
2477  enum svn_wc_status_kind repos_text_status;
2478 
2479  /** The node's property status in the repository. */
2480  enum svn_wc_status_kind repos_prop_status;
2481 
2482  /** The node's lock in the repository, if any. */
2484 
2485  /** Set to the youngest committed revision, or #SVN_INVALID_REVNUM
2486  * if not out of date. */
2488 
2489  /** Set to the most recent commit date, or @c 0 if not out of date. */
2490  apr_time_t ood_changed_date;
2491 
2492  /** Set to the user name of the youngest commit, or @c NULL if not
2493  * out of date or non-existent. Because a non-existent @c
2494  * svn:author property has the same behavior as an out-of-date
2495  * working copy, examine @c ood_changed_rev to determine whether
2496  * the working copy is out of date. */
2497  const char *ood_changed_author;
2498 
2499  /** @} */
2500 
2501  /** Reserved for libsvn_client's internal use; this value is only to be used
2502  * for libsvn_client backwards compatibility wrappers. This value may be NULL
2503  * or to other data in future versions. */
2505 
2506  /** Set to the local absolute path that this node was moved from, if this
2507  * file or directory has been moved here locally and is the root of that
2508  * move. Otherwise set to NULL.
2509  *
2510  * This will be NULL for moved-here nodes that are just part of a subtree
2511  * that was moved along (and are not themselves a root of a different move
2512  * operation).
2513  *
2514  * @since New in 1.8. */
2515  const char *moved_from_abspath;
2516 
2517  /** Set to the local absolute path that this node was moved to, if this file
2518  * or directory has been moved away locally and corresponds to the root
2519  * of the destination side of the move. Otherwise set to NULL.
2520  *
2521  * Note: Saying just "root" here could be misleading. For example:
2522  * svn mv A AA;
2523  * svn mv AA/B BB;
2524  * creates a situation where A/B is moved-to BB, but one could argue that
2525  * the move source's root actually was AA/B. Note that, as far as the
2526  * working copy is concerned, above case is exactly identical to:
2527  * svn mv A/B BB;
2528  * svn mv A AA;
2529  * In both situations, @a moved_to_abspath would be set for nodes A (moved
2530  * to AA) and A/B (moved to BB), only.
2531  *
2532  * This will be NULL for moved-away nodes that were just part of a subtree
2533  * that was moved along (and are not themselves a root of a different move
2534  * operation).
2535  *
2536  * @since New in 1.8. */
2537  const char *moved_to_abspath;
2538 
2539  /* NOTE! Please update svn_client_status_dup() when adding new fields here. */
2541 
2542 /**
2543  * Return a duplicate of @a status, allocated in @a result_pool. No part of the new
2544  * structure will be shared with @a status.
2545  *
2546  * @since New in 1.7.
2547  */
2550  apr_pool_t *result_pool);
2551 
2552 /**
2553  * A callback for reporting a @a status about @a path (which may be an
2554  * absolute or relative path).
2555  *
2556  * @a baton is a closure object; it should be provided by the
2557  * implementation, and passed by the caller.
2558  *
2559  * @a scratch_pool will be cleared between invocations to the callback.
2560  *
2561  * @since New in 1.7.
2562  */
2563 typedef svn_error_t *(*svn_client_status_func_t)(
2564  void *baton,
2565  const char *path,
2566  const svn_client_status_t *status,
2567  apr_pool_t *scratch_pool);
2568 
2569 /**
2570  * Given @a path to a working copy directory (or single file), call
2571  * @a status_func/status_baton with a set of #svn_wc_status_t *
2572  * structures which describe the status of @a path, and its children
2573  * (recursing according to @a depth).
2574  *
2575  * - If @a get_all is set, retrieve all entries; otherwise,
2576  * retrieve only "interesting" entries (local mods and/or
2577  * out of date).
2578  *
2579  * - If @a check_out_of_date is set, contact the repository and
2580  * augment the status structures with information about
2581  * out-of-dateness (with respect to @a revision). Also, if @a
2582  * result_rev is not @c NULL, set @a *result_rev to the actual
2583  * revision against which the working copy was compared (@a
2584  * *result_rev is not meaningful unless @a check_out_of_date is
2585  * set).
2586  *
2587  * - If @a check_working_copy is not set, do not scan the working
2588  * copy for local modifications. This parameter will be ignored
2589  * unless @a check_out_of_date is set. When set, the status
2590  * report will not contain any information about local changes in
2591  * the working copy; this includes local deletions and
2592  * replacements.
2593  *
2594  * If @a no_ignore is @c FALSE, don't report any file or directory (or
2595  * recurse into any directory) that is found by recursion (as opposed to
2596  * being the explicit target @a path) and whose name matches the
2597  * svn:ignore property on its parent directory or the global-ignores
2598  * list in @a ctx->config. If @a no_ignore is @c TRUE, report each such
2599  * file or directory with the status code #svn_wc_status_ignored.
2600  *
2601  * If @a ignore_externals is not set, then recurse into externals
2602  * definitions (if any exist) after handling the main target. This
2603  * calls the client notification function (in @a ctx) with the
2604  * #svn_wc_notify_status_external action before handling each externals
2605  * definition, and with #svn_wc_notify_status_completed
2606  * after each.
2607  *
2608  * If @a depth_as_sticky is set and @a depth is not
2609  * #svn_depth_unknown, then the status is calculated as if depth_is_sticky
2610  * was passed to an equivalent update command.
2611  *
2612  * @a changelists is an array of <tt>const char *</tt> changelist
2613  * names, used as a restrictive filter on items whose statuses are
2614  * reported; that is, don't report status about any item unless
2615  * it's a member of one of those changelists. If @a changelists is
2616  * empty (or altogether @c NULL), no changelist filtering occurs.
2617  *
2618  * If @a path is an absolute path then the @c path parameter passed in each
2619  * call to @a status_func will be an absolute path.
2620  *
2621  * All temporary allocations are performed in @a scratch_pool.
2622  *
2623  * @since New in 1.9.
2624  */
2625 svn_error_t *
2626 svn_client_status6(svn_revnum_t *result_rev,
2627  svn_client_ctx_t *ctx,
2628  const char *path,
2629  const svn_opt_revision_t *revision,
2630  svn_depth_t depth,
2631  svn_boolean_t get_all,
2632  svn_boolean_t check_out_of_date,
2633  svn_boolean_t check_working_copy,
2634  svn_boolean_t no_ignore,
2635  svn_boolean_t ignore_externals,
2636  svn_boolean_t depth_as_sticky,
2637  const apr_array_header_t *changelists,
2638  svn_client_status_func_t status_func,
2639  void *status_baton,
2640  apr_pool_t *scratch_pool);
2641 
2642 
2643 /**
2644  * Same as svn_client_status6(), but with @a check_out_of_date set to
2645  * @a update and @a check_working_copy set to @c TRUE.
2646  *
2647  * @since New in 1.7.
2648  * @deprecated Provided for backward compatibility with the 1.8 API.
2649  */
2651 svn_error_t *
2652 svn_client_status5(svn_revnum_t *result_rev,
2653  svn_client_ctx_t *ctx,
2654  const char *path,
2655  const svn_opt_revision_t *revision,
2656  svn_depth_t depth,
2657  svn_boolean_t get_all,
2658  svn_boolean_t update,
2659  svn_boolean_t no_ignore,
2660  svn_boolean_t ignore_externals,
2661  svn_boolean_t depth_as_sticky,
2662  const apr_array_header_t *changelists,
2663  svn_client_status_func_t status_func,
2664  void *status_baton,
2665  apr_pool_t *scratch_pool);
2666 
2667 /**
2668  * Same as svn_client_status5(), but using #svn_wc_status_func3_t
2669  * instead of #svn_client_status_func_t and depth_as_sticky set to TRUE.
2670  *
2671  * @since New in 1.6.
2672  * @deprecated Provided for backward compatibility with the 1.6 API.
2673  */
2675 svn_error_t *
2676 svn_client_status4(svn_revnum_t *result_rev,
2677  const char *path,
2678  const svn_opt_revision_t *revision,
2679  svn_wc_status_func3_t status_func,
2680  void *status_baton,
2681  svn_depth_t depth,
2682  svn_boolean_t get_all,
2683  svn_boolean_t update,
2684  svn_boolean_t no_ignore,
2685  svn_boolean_t ignore_externals,
2686  const apr_array_header_t *changelists,
2687  svn_client_ctx_t *ctx,
2688  apr_pool_t *pool);
2689 
2690 /**
2691  * Same as svn_client_status4(), but using an #svn_wc_status_func2_t
2692  * instead of an #svn_wc_status_func3_t.
2693  *
2694  * @since New in 1.5.
2695  * @deprecated Provided for backward compatibility with the 1.5 API.
2696  */
2698 svn_error_t *
2699 svn_client_status3(svn_revnum_t *result_rev,
2700  const char *path,
2701  const svn_opt_revision_t *revision,
2702  svn_wc_status_func2_t status_func,
2703  void *status_baton,
2704  svn_depth_t depth,
2705  svn_boolean_t get_all,
2706  svn_boolean_t update,
2707  svn_boolean_t no_ignore,
2708  svn_boolean_t ignore_externals,
2709  const apr_array_header_t *changelists,
2710  svn_client_ctx_t *ctx,
2711  apr_pool_t *pool);
2712 
2713 /**
2714  * Like svn_client_status3(), except with @a changelists passed as @c
2715  * NULL, and with @a recurse instead of @a depth. If @a recurse is
2716  * TRUE, behave as if for #svn_depth_infinity; else if @a recurse is
2717  * FALSE, behave as if for #svn_depth_immediates.
2718  *
2719  * @since New in 1.2.
2720  * @deprecated Provided for backward compatibility with the 1.4 API.
2721  */
2723 svn_error_t *
2724 svn_client_status2(svn_revnum_t *result_rev,
2725  const char *path,
2726  const svn_opt_revision_t *revision,
2727  svn_wc_status_func2_t status_func,
2728  void *status_baton,
2729  svn_boolean_t recurse,
2730  svn_boolean_t get_all,
2731  svn_boolean_t update,
2732  svn_boolean_t no_ignore,
2733  svn_boolean_t ignore_externals,
2734  svn_client_ctx_t *ctx,
2735  apr_pool_t *pool);
2736 
2737 
2738 /**
2739  * Similar to svn_client_status2(), but with @a ignore_externals
2740  * always set to FALSE, taking the #svn_wc_status_func_t type
2741  * instead of the #svn_wc_status_func2_t type for @a status_func,
2742  * and requiring @a *revision to be non-const even though it is
2743  * treated as constant.
2744  *
2745  * @deprecated Provided for backward compatibility with the 1.1 API.
2746  */
2748 svn_error_t *
2749 svn_client_status(svn_revnum_t *result_rev,
2750  const char *path,
2751  svn_opt_revision_t *revision,
2752  svn_wc_status_func_t status_func,
2753  void *status_baton,
2754  svn_boolean_t recurse,
2755  svn_boolean_t get_all,
2756  svn_boolean_t update,
2757  svn_boolean_t no_ignore,
2758  svn_client_ctx_t *ctx,
2759  apr_pool_t *pool);
2760 
2761 /** @} */
2762 
2763 /**
2764  * @defgroup Log View information about previous revisions of an object.
2765  *
2766  * @{
2767  */
2768 
2769 /**
2770  * Invoke @a receiver with @a receiver_baton on each log message from
2771  * each (#svn_opt_revision_range_t *) range in @a revision_ranges in turn,
2772  * inclusive (but never invoke @a receiver on a given log message more
2773  * than once).
2774  *
2775  * @a targets contains either a URL followed by zero or more relative
2776  * paths, or 1 working copy path, as <tt>const char *</tt>, for which log
2777  * messages are desired. @a receiver is invoked only on messages whose
2778  * revisions involved a change to some path in @a targets. @a peg_revision
2779  * indicates in which revision @a targets are valid. If @a peg_revision is
2780  * #svn_opt_revision_unspecified, it defaults to #svn_opt_revision_head
2781  * for URLs or #svn_opt_revision_working for WC paths.
2782  *
2783  * If @a limit is greater than zero only invoke @a receiver on the first
2784  * @a limit logs.
2785  *
2786  * If @a discover_changed_paths is set, then the @c changed_paths and @c
2787  * changed_paths2 fields in the @c log_entry argument to @a receiver will be
2788  * populated on each invocation. @note The @c text_modified and @c
2789  * props_modified fields of the changed paths structure may have the value
2790  * #svn_tristate_unknown if the repository does not report that information.
2791  *
2792  * If @a strict_node_history is set, copy history (if any exists) will
2793  * not be traversed while harvesting revision logs for each target.
2794  *
2795  * If @a include_merged_revisions is set, log information for revisions
2796  * which have been merged to @a targets will also be returned.
2797  *
2798  * If @a revprops is NULL, retrieve all revision properties; else, retrieve
2799  * only the revision properties named by the (const char *) array elements
2800  * (i.e. retrieve none if the array is empty).
2801  *
2802  * Use @a pool for any temporary allocation.
2803  *
2804  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2/baton2
2805  * with a 'skip' signal on any unversioned targets.
2806  *
2807  * @since New in 1.6.
2808  */
2809 svn_error_t *
2810 svn_client_log5(const apr_array_header_t *targets,
2811  const svn_opt_revision_t *peg_revision,
2812  const apr_array_header_t *revision_ranges,
2813  int limit,
2814  svn_boolean_t discover_changed_paths,
2815  svn_boolean_t strict_node_history,
2816  svn_boolean_t include_merged_revisions,
2817  const apr_array_header_t *revprops,
2818  svn_log_entry_receiver_t receiver,
2819  void *receiver_baton,
2820  svn_client_ctx_t *ctx,
2821  apr_pool_t *pool);
2822 
2823 /**
2824  * Similar to svn_client_log5(), but takes explicit start and end parameters
2825  * instead of an array of revision ranges.
2826  *
2827  * @deprecated Provided for compatibility with the 1.5 API.
2828  * @since New in 1.5.
2829  */
2831 svn_error_t *
2832 svn_client_log4(const apr_array_header_t *targets,
2833  const svn_opt_revision_t *peg_revision,
2834  const svn_opt_revision_t *start,
2835  const svn_opt_revision_t *end,
2836  int limit,
2837  svn_boolean_t discover_changed_paths,
2838  svn_boolean_t strict_node_history,
2839  svn_boolean_t include_merged_revisions,
2840  const apr_array_header_t *revprops,
2841  svn_log_entry_receiver_t receiver,
2842  void *receiver_baton,
2843  svn_client_ctx_t *ctx,
2844  apr_pool_t *pool);
2845 
2846 /**
2847  * Similar to svn_client_log4(), but using #svn_log_message_receiver_t
2848  * instead of #svn_log_entry_receiver_t. Also, @a
2849  * include_merged_revisions is set to @c FALSE and @a revprops is
2850  * svn:author, svn:date, and svn:log.
2851  *
2852  * @deprecated Provided for compatibility with the 1.4 API.
2853  * @since New in 1.4.
2854  */
2856 svn_error_t *
2857 svn_client_log3(const apr_array_header_t *targets,
2858  const svn_opt_revision_t *peg_revision,
2859  const svn_opt_revision_t *start,
2860  const svn_opt_revision_t *end,
2861  int limit,
2862  svn_boolean_t discover_changed_paths,
2863  svn_boolean_t strict_node_history,
2864  svn_log_message_receiver_t receiver,
2865  void *receiver_baton,
2866  svn_client_ctx_t *ctx,
2867  apr_pool_t *pool);
2868 
2869 
2870 /**
2871  * Similar to svn_client_log3(), but with the @c kind field of
2872  * @a peg_revision set to #svn_opt_revision_unspecified.
2873  *
2874  * @par Important:
2875  * A special case for the revision range HEAD:1, which was present
2876  * in svn_client_log(), has been removed from svn_client_log2(). Instead, it
2877  * is expected that callers will specify the range HEAD:0, to avoid a
2878  * #SVN_ERR_FS_NO_SUCH_REVISION error when invoked against an empty repository
2879  * (i.e. one not containing a revision 1).
2880  *
2881  * @deprecated Provided for compatibility with the 1.3 API.
2882  * @since New in 1.2.
2883  */
2885 svn_error_t *
2886 svn_client_log2(const apr_array_header_t *targets,
2887  const svn_opt_revision_t *start,
2888  const svn_opt_revision_t *end,
2889  int limit,
2890  svn_boolean_t discover_changed_paths,
2891  svn_boolean_t strict_node_history,
2892  svn_log_message_receiver_t receiver,
2893  void *receiver_baton,
2894  svn_client_ctx_t *ctx,
2895  apr_pool_t *pool);
2896 
2897 
2898 /**
2899  * Similar to svn_client_log2(), but with @a limit set to 0, and the
2900  * following special case:
2901  *
2902  * Special case for repositories at revision 0:
2903  *
2904  * If @a start->kind is #svn_opt_revision_head, and @a end->kind is
2905  * #svn_opt_revision_number && @a end->number is @c 1, then handle an
2906  * empty (no revisions) repository specially: instead of erroring
2907  * because requested revision 1 when the highest revision is 0, just
2908  * invoke @a receiver on revision 0, passing @c NULL for changed paths and
2909  * empty strings for the author and date. This is because that
2910  * particular combination of @a start and @a end usually indicates the
2911  * common case of log invocation -- the user wants to see all log
2912  * messages from youngest to oldest, where the oldest commit is
2913  * revision 1. That works fine, except when there are no commits in
2914  * the repository, hence this special case.
2915  *
2916  * @deprecated Provided for backward compatibility with the 1.1 API.
2917  */
2919 svn_error_t *
2920 svn_client_log(const apr_array_header_t *targets,
2921  const svn_opt_revision_t *start,
2922  const svn_opt_revision_t *end,
2923  svn_boolean_t discover_changed_paths,
2924  svn_boolean_t strict_node_history,
2925  svn_log_message_receiver_t receiver,
2926  void *receiver_baton,
2927  svn_client_ctx_t *ctx,
2928  apr_pool_t *pool);
2929 
2930 /** @} */
2931 
2932 /**
2933  * @defgroup Blame Show modification information about lines in a file.
2934  *
2935  * @{
2936  */
2937 
2938 /**
2939  * Invoke @a receiver with @a receiver_baton on each line-blame item
2940  * associated with revision @a end of @a path_or_url, using @a start
2941  * as the default source of all blame. @a peg_revision indicates in
2942  * which revision @a path_or_url is valid. If @a peg_revision->kind
2943  * is #svn_opt_revision_unspecified, then it defaults to
2944  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
2945  * WC targets.
2946  *
2947  * If @a start->kind or @a end->kind is #svn_opt_revision_unspecified,
2948  * return the error #SVN_ERR_CLIENT_BAD_REVISION. If either are
2949  * #svn_opt_revision_working, return the error
2950  * #SVN_ERR_UNSUPPORTED_FEATURE. If any of the revisions of @a
2951  * path_or_url have a binary mime-type, return the error
2952  * #SVN_ERR_CLIENT_IS_BINARY_FILE, unless @a ignore_mime_type is TRUE,
2953  * in which case blame information will be generated regardless of the
2954  * MIME types of the revisions.
2955  *
2956  * @a start may resolve to a revision number greater (younger) than @a end
2957  * only if the server is 1.8.0 or greater (supports
2958  * #SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE) and the client is 1.9.0 or
2959  * newer.
2960  *
2961  * Before the first call to @a receiver, set @a *start_revnum_p and
2962  * @a *end_revnum_p to the start and end revision number of the entire
2963  * blame operation, as resolved from the repository. This can be useful
2964  * for the blame receiver to format the blame output. Any or both of these
2965  * arguments may be @c NULL.
2966  *
2967  * Use @a diff_options to determine how to compare different revisions of the
2968  * target.
2969  *
2970  * If @a include_merged_revisions is TRUE, also return data based upon
2971  * revisions which have been merged to @a path_or_url.
2972  *
2973  * Use @a pool for any temporary allocation.
2974  *
2975  * @since New in 1.12.
2976  */
2977 svn_error_t *
2978 svn_client_blame6(svn_revnum_t *start_revnum_p,
2979  svn_revnum_t *end_revnum_p,
2980  const char *path_or_url,
2981  const svn_opt_revision_t *peg_revision,
2982  const svn_opt_revision_t *start,
2983  const svn_opt_revision_t *end,
2984  const svn_diff_file_options_t *diff_options,
2985  svn_boolean_t ignore_mime_type,
2986  svn_boolean_t include_merged_revisions,
2988  void *receiver_baton,
2989  svn_client_ctx_t *ctx,
2990  apr_pool_t *pool);
2991 
2992 
2993 /**
2994  * Similar to svn_client_blame6(), but with #svn_client_blame_receiver3_t
2995  * as the receiver.
2996  *
2997  * @deprecated Provided for backwards compatibility with the 1.11 API.
2998  *
2999  * @since New in 1.7.
3000  */
3002 svn_error_t *
3003 svn_client_blame5(const char *path_or_url,
3004  const svn_opt_revision_t *peg_revision,
3005  const svn_opt_revision_t *start,
3006  const svn_opt_revision_t *end,
3007  const svn_diff_file_options_t *diff_options,
3008  svn_boolean_t ignore_mime_type,
3009  svn_boolean_t include_merged_revisions,
3011  void *receiver_baton,
3012  svn_client_ctx_t *ctx,
3013  apr_pool_t *pool);
3014 
3015 /**
3016  * Similar to svn_client_blame5(), but with #svn_client_blame_receiver2_t
3017  * as the receiver.
3018  *
3019  * @deprecated Provided for backwards compatibility with the 1.6 API.
3020  *
3021  * @since New in 1.5.
3022  */
3024 svn_error_t *
3025 svn_client_blame4(const char *path_or_url,
3026  const svn_opt_revision_t *peg_revision,
3027  const svn_opt_revision_t *start,
3028  const svn_opt_revision_t *end,
3029  const svn_diff_file_options_t *diff_options,
3030  svn_boolean_t ignore_mime_type,
3031  svn_boolean_t include_merged_revisions,
3033  void *receiver_baton,
3034  svn_client_ctx_t *ctx,
3035  apr_pool_t *pool);
3036 
3037 /**
3038  * Similar to svn_client_blame4(), but with @a include_merged_revisions set
3039  * to FALSE, and using a #svn_client_blame_receiver2_t as the receiver.
3040  *
3041  * @deprecated Provided for backwards compatibility with the 1.4 API.
3042  *
3043  * @since New in 1.4.
3044  */
3046 svn_error_t *
3047 svn_client_blame3(const char *path_or_url,
3048  const svn_opt_revision_t *peg_revision,
3049  const svn_opt_revision_t *start,
3050  const svn_opt_revision_t *end,
3051  const svn_diff_file_options_t *diff_options,
3052  svn_boolean_t ignore_mime_type,
3053  svn_client_blame_receiver_t receiver,
3054  void *receiver_baton,
3055  svn_client_ctx_t *ctx,
3056  apr_pool_t *pool);
3057 
3058 /**
3059  * Similar to svn_client_blame3(), but with @a diff_options set to
3060  * default options as returned by svn_diff_file_options_parse() and
3061  * @a ignore_mime_type set to FALSE.
3062  *
3063  * @deprecated Provided for backwards compatibility with the 1.3 API.
3064  *
3065  * @since New in 1.2.
3066  */
3068 svn_error_t *
3069 svn_client_blame2(const char *path_or_url,
3070  const svn_opt_revision_t *peg_revision,
3071  const svn_opt_revision_t *start,
3072  const svn_opt_revision_t *end,
3073  svn_client_blame_receiver_t receiver,
3074  void *receiver_baton,
3075  svn_client_ctx_t *ctx,
3076  apr_pool_t *pool);
3077 
3078 /**
3079  * Similar to svn_client_blame2() except that @a peg_revision is always
3080  * the same as @a end.
3081  *
3082  * @deprecated Provided for backward compatibility with the 1.1 API.
3083  */
3085 svn_error_t *
3086 svn_client_blame(const char *path_or_url,
3087  const svn_opt_revision_t *start,
3088  const svn_opt_revision_t *end,
3089  svn_client_blame_receiver_t receiver,
3090  void *receiver_baton,
3091  svn_client_ctx_t *ctx,
3092  apr_pool_t *pool);
3093 
3094 /** @} */
3095 
3096 /**
3097  * @defgroup Diff Generate differences between paths.
3098  *
3099  * @{
3100  */
3101 
3102 /**
3103  * Produce diff output which describes the delta between
3104  * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2. Print
3105  * the output of the diff to @a outstream, and any errors to @a
3106  * errstream. @a path_or_url1 and @a path_or_url2 can be either
3107  * working-copy paths or URLs.
3108  *
3109  * If @a relative_to_dir is not @c NULL, the original path and
3110  * modified path will have the @a relative_to_dir stripped from the
3111  * front of the respective paths. If @a relative_to_dir is @c NULL,
3112  * paths will not be modified. If @a relative_to_dir is not
3113  * @c NULL but @a relative_to_dir is not a parent path of the target,
3114  * an error is returned. Finally, if @a relative_to_dir is a URL, an
3115  * error will be returned.
3116  *
3117  * If either @a revision1 or @a revision2 has an `unspecified' or
3118  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3119  *
3120  * @a path_or_url1 and @a path_or_url2 must both represent the same node
3121  * kind -- that is, if @a path_or_url1 is a directory, @a path_or_url2
3122  * must also be, and if @a path_or_url1 is a file, @a path_or_url2 must
3123  * also be.
3124  *
3125  * If @a depth is #svn_depth_infinity, diff fully recursively.
3126  * Else if it is #svn_depth_immediates, diff the named paths and
3127  * their file children (if any), and diff properties of
3128  * subdirectories, but do not descend further into the subdirectories.
3129  * Else if #svn_depth_files, behave as if for #svn_depth_immediates
3130  * except don't diff properties of subdirectories. If
3131  * #svn_depth_empty, diff exactly the named paths but nothing
3132  * underneath them.
3133  *
3134  * Use @a ignore_ancestry to control whether or not items being
3135  * diffed will be checked for relatedness first. Unrelated items
3136  * are typically transmitted to the editor as a deletion of one thing
3137  * and the addition of another, but if this flag is TRUE, unrelated
3138  * items will be diffed as if they were related.
3139  *
3140  * If @a no_diff_added is TRUE, then no diff output will be generated
3141  * on added files.
3142  *
3143  * If @a no_diff_deleted is TRUE, then no diff output will be
3144  * generated on deleted files.
3145  *
3146  * If @a show_copies_as_adds is TRUE, then copied files will not be diffed
3147  * against their copyfrom source, and will appear in the diff output
3148  * in their entirety, as if they were newly added.
3149  * ### BUGS: For a repos-repos diff, this is ignored. Instead, a file is
3150  * diffed against its copyfrom source iff the file is the diff target
3151  * and not if some parent directory is the diff target. For a repos-WC
3152  * diff, this is ignored if the file is the diff target.
3153  *
3154  * If @a use_git_diff_format is TRUE, then the git's extended diff format
3155  * will be used.
3156  * ### Do we need to say more about the format? A reference perhaps?
3157  *
3158  * If @a ignore_properties is TRUE, do not show property differences.
3159  * If @a properties_only is TRUE, show only property changes.
3160  * The above two options are mutually exclusive. It is an error to set
3161  * both to TRUE.
3162  *
3163  * If @a pretty_print_mergeinfo is true, then describe 'svn:mergeinfo'
3164  * property changes in a human-readable form that says what changes were
3165  * merged or reverse merged; otherwise (or if the mergeinfo property values
3166  * don't parse correctly) display them just like any other property.
3167  *
3168  * Generated headers are encoded using @a header_encoding.
3169  *
3170  * If either side has an svn:mime-type property that indicates 'binary'
3171  * content, then if @a ignore_content_type is set, attempt to produce the
3172  * diff in the usual way, otherwise produce a 'GIT binary diff' in git mode
3173  * or print a warning message in non-git mode.
3174  *
3175  * @a diff_options (an array of <tt>const char *</tt>) is used to pass
3176  * additional command line options to the diff processes invoked to compare
3177  * files. @a diff_options is allowed to be @c NULL, in which case a value
3178  * for this option might still be obtained from the Subversion configuration
3179  * file via client context @a ctx.
3180  *
3181  * The authentication baton cached in @a ctx is used to communicate with
3182  * the repository.
3183  *
3184  * @a changelists is an array of <tt>const char *</tt> changelist
3185  * names, used as a restrictive filter on items whose differences are
3186  * reported; that is, don't generate diffs about any item unless
3187  * it's a member of one of those changelists. If @a changelists is
3188  * empty (or altogether @c NULL), no changelist filtering occurs.
3189  *
3190  * @note Changelist filtering only applies to diffs in which at least
3191  * one side of the diff represents working copy data.
3192  *
3193  * @note @a header_encoding doesn't affect headers generated by external
3194  * diff programs.
3195  *
3196  * @note @a relative_to_dir doesn't affect the path index generated by
3197  * external diff programs.
3198  *
3199  * @since New in 1.11.
3200  */
3201 svn_error_t *
3202 svn_client_diff7(const apr_array_header_t *diff_options,
3203  const char *path_or_url1,
3204  const svn_opt_revision_t *revision1,
3205  const char *path_or_url2,
3206  const svn_opt_revision_t *revision2,
3207  const char *relative_to_dir,
3208  svn_depth_t depth,
3209  svn_boolean_t ignore_ancestry,
3210  svn_boolean_t no_diff_added,
3211  svn_boolean_t no_diff_deleted,
3212  svn_boolean_t show_copies_as_adds,
3213  svn_boolean_t ignore_content_type,
3214  svn_boolean_t ignore_properties,
3215  svn_boolean_t properties_only,
3216  svn_boolean_t use_git_diff_format,
3217  svn_boolean_t pretty_print_mergeinfo,
3218  const char *header_encoding,
3219  svn_stream_t *outstream,
3220  svn_stream_t *errstream,
3221  const apr_array_header_t *changelists,
3222  svn_client_ctx_t *ctx,
3223  apr_pool_t *pool);
3224 
3225 /** Similar to svn_client_diff7(), but with @a pretty_print_mergeinfo
3226  * always passed as @c TRUE.
3227  *
3228  * @deprecated Provided for backward compatibility with the 1.10 API.
3229  * @since New in 1.8.
3230  */
3232 svn_error_t *
3233 svn_client_diff6(const apr_array_header_t *diff_options,
3234  const char *path_or_url1,
3235  const svn_opt_revision_t *revision1,
3236  const char *path_or_url2,
3237  const svn_opt_revision_t *revision2,
3238  const char *relative_to_dir,
3239  svn_depth_t depth,
3240  svn_boolean_t ignore_ancestry,
3241  svn_boolean_t no_diff_added,
3242  svn_boolean_t no_diff_deleted,
3243  svn_boolean_t show_copies_as_adds,
3244  svn_boolean_t ignore_content_type,
3245  svn_boolean_t ignore_properties,
3246  svn_boolean_t properties_only,
3247  svn_boolean_t use_git_diff_format,
3248  const char *header_encoding,
3249  svn_stream_t *outstream,
3250  svn_stream_t *errstream,
3251  const apr_array_header_t *changelists,
3252  svn_client_ctx_t *ctx,
3253  apr_pool_t *pool);
3254 
3255 /** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
3256  * instead of @a outstream and @a errstream, and with @a
3257  * no_diff_added, @a ignore_properties, and @a properties_only always
3258  * passed as @c FALSE (which means that additions and property changes
3259  * are always transmitted).
3260  *
3261  * @deprecated Provided for backward compatibility with the 1.7 API.
3262  * @since New in 1.7.
3263  */
3265 svn_error_t *
3266 svn_client_diff5(const apr_array_header_t *diff_options,
3267  const char *path1,
3268  const svn_opt_revision_t *revision1,
3269  const char *path2,
3270  const svn_opt_revision_t *revision2,
3271  const char *relative_to_dir,
3272  svn_depth_t depth,
3273  svn_boolean_t ignore_ancestry,
3274  svn_boolean_t no_diff_deleted,
3275  svn_boolean_t show_copies_as_adds,
3276  svn_boolean_t ignore_content_type,
3277  svn_boolean_t use_git_diff_format,
3278  const char *header_encoding,
3279  apr_file_t *outfile,
3280  apr_file_t *errfile,
3281  const apr_array_header_t *changelists,
3282  svn_client_ctx_t *ctx,
3283  apr_pool_t *pool);
3284 
3285 /**
3286  * Similar to svn_client_diff5(), but with @a show_copies_as_adds set to
3287  * @c FALSE and @a use_git_diff_format set to @c FALSE.
3288  *
3289  * @deprecated Provided for backward compatibility with the 1.6 API.
3290  * @since New in 1.5.
3291  */
3293 svn_error_t *
3294 svn_client_diff4(const apr_array_header_t *diff_options,
3295  const char *path1,
3296  const svn_opt_revision_t *revision1,
3297  const char *path2,
3298  const svn_opt_revision_t *revision2,
3299  const char *relative_to_dir,
3300  svn_depth_t depth,
3301  svn_boolean_t ignore_ancestry,
3302  svn_boolean_t no_diff_deleted,
3303  svn_boolean_t ignore_content_type,
3304  const char *header_encoding,
3305  apr_file_t *outfile,
3306  apr_file_t *errfile,
3307  const apr_array_header_t *changelists,
3308  svn_client_ctx_t *ctx,
3309  apr_pool_t *pool);
3310 
3311 /**
3312  * Similar to svn_client_diff4(), but with @a changelists passed as @c
3313  * NULL, and @a depth set according to @a recurse: if @a recurse is
3314  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3315  * FALSE, set @a depth to #svn_depth_empty.
3316  *
3317  * @deprecated Provided for backward compatibility with the 1.4 API.
3318  * @since New in 1.3.
3319  */
3321 svn_error_t *
3322 svn_client_diff3(const apr_array_header_t *diff_options,
3323  const char *path1,
3324  const svn_opt_revision_t *revision1,
3325  const char *path2,
3326  const svn_opt_revision_t *revision2,
3327  svn_boolean_t recurse,
3328  svn_boolean_t ignore_ancestry,
3329  svn_boolean_t no_diff_deleted,
3330  svn_boolean_t ignore_content_type,
3331  const char *header_encoding,
3332  apr_file_t *outfile,
3333  apr_file_t *errfile,
3334  svn_client_ctx_t *ctx,
3335  apr_pool_t *pool);
3336 
3337 
3338 /**
3339  * Similar to svn_client_diff3(), but with @a header_encoding set to
3340  * @c APR_LOCALE_CHARSET.
3341  *
3342  * @deprecated Provided for backward compatibility with the 1.2 API.
3343  * @since New in 1.2.
3344  */
3346 svn_error_t *
3347 svn_client_diff2(const apr_array_header_t *diff_options,
3348  const char *path1,
3349  const svn_opt_revision_t *revision1,
3350  const char *path2,
3351  const svn_opt_revision_t *revision2,
3352  svn_boolean_t recurse,
3353  svn_boolean_t ignore_ancestry,
3354  svn_boolean_t no_diff_deleted,
3355  svn_boolean_t ignore_content_type,
3356  apr_file_t *outfile,
3357  apr_file_t *errfile,
3358  svn_client_ctx_t *ctx,
3359  apr_pool_t *pool);
3360 
3361 /**
3362  * Similar to svn_client_diff2(), but with @a ignore_content_type
3363  * always set to FALSE.
3364  *
3365  * @deprecated Provided for backward compatibility with the 1.1 API.
3366  */
3368 svn_error_t *
3369 svn_client_diff(const apr_array_header_t *diff_options,
3370  const char *path1,
3371  const svn_opt_revision_t *revision1,
3372  const char *path2,
3373  const svn_opt_revision_t *revision2,
3374  svn_boolean_t recurse,
3375  svn_boolean_t ignore_ancestry,
3376  svn_boolean_t no_diff_deleted,
3377  apr_file_t *outfile,
3378  apr_file_t *errfile,
3379  svn_client_ctx_t *ctx,
3380  apr_pool_t *pool);
3381 
3382 /**
3383  * Produce diff output which describes the delta between the filesystem
3384  * object @a path_or_url in peg revision @a peg_revision, as it changed
3385  * between @a start_revision and @a end_revision. @a path_or_url can
3386  * be either a working-copy path or URL.
3387  *
3388  * If @a peg_revision is #svn_opt_revision_unspecified, behave
3389  * identically to svn_client_diff7(), using @a path_or_url for both of that
3390  * function's @a path_or_url1 and @a path_or_url2 arguments.
3391  *
3392  * All other options are handled identically to svn_client_diff7().
3393  *
3394  * @since New in 1.8.
3395  */
3396 svn_error_t *
3397 svn_client_diff_peg7(const apr_array_header_t *diff_options,
3398  const char *path_or_url,
3399  const svn_opt_revision_t *peg_revision,
3400  const svn_opt_revision_t *start_revision,
3401  const svn_opt_revision_t *end_revision,
3402  const char *relative_to_dir,
3403  svn_depth_t depth,
3404  svn_boolean_t ignore_ancestry,
3405  svn_boolean_t no_diff_added,
3406  svn_boolean_t no_diff_deleted,
3407  svn_boolean_t show_copies_as_adds,
3408  svn_boolean_t ignore_content_type,
3409  svn_boolean_t ignore_properties,
3410  svn_boolean_t properties_only,
3411  svn_boolean_t use_git_diff_format,
3412  svn_boolean_t pretty_print_mergeinfo,
3413  const char *header_encoding,
3414  svn_stream_t *outstream,
3415  svn_stream_t *errstream,
3416  const apr_array_header_t *changelists,
3417  svn_client_ctx_t *ctx,
3418  apr_pool_t *pool);
3419 
3420 /** Similar to svn_client_diff_peg7(), but with @a pretty_print_mergeinfo
3421  * always passed as @c TRUE.
3422  *
3423  * @deprecated Provided for backward compatibility with the 1.7 API.
3424  * @since New in 1.7.
3425  */
3427 svn_error_t *
3428 svn_client_diff_peg6(const apr_array_header_t *diff_options,
3429  const char *path_or_url,
3430  const svn_opt_revision_t *peg_revision,
3431  const svn_opt_revision_t *start_revision,
3432  const svn_opt_revision_t *end_revision,
3433  const char *relative_to_dir,
3434  svn_depth_t depth,
3435  svn_boolean_t ignore_ancestry,
3436  svn_boolean_t no_diff_added,
3437  svn_boolean_t no_diff_deleted,
3438  svn_boolean_t show_copies_as_adds,
3439  svn_boolean_t ignore_content_type,
3440  svn_boolean_t ignore_properties,
3441  svn_boolean_t properties_only,
3442  svn_boolean_t use_git_diff_format,
3443  const char *header_encoding,
3444  svn_stream_t *outstream,
3445  svn_stream_t *errstream,
3446  const apr_array_header_t *changelists,
3447  svn_client_ctx_t *ctx,
3448  apr_pool_t *pool);
3449 
3450 /** Similar to svn_client_diff6_peg6(), but with @a outfile and @a errfile,
3451  * instead of @a outstream and @a errstream, and with @a
3452  * no_diff_added, @a ignore_properties, and @a properties_only always
3453  * passed as @c FALSE (which means that additions and property changes
3454  * are always transmitted).
3455  *
3456  * @deprecated Provided for backward compatibility with the 1.7 API.
3457  * @since New in 1.7.
3458  */
3460 svn_error_t *
3461 svn_client_diff_peg5(const apr_array_header_t *diff_options,
3462  const char *path,
3463  const svn_opt_revision_t *peg_revision,
3464  const svn_opt_revision_t *start_revision,
3465  const svn_opt_revision_t *end_revision,
3466  const char *relative_to_dir,
3467  svn_depth_t depth,
3468  svn_boolean_t ignore_ancestry,
3469  svn_boolean_t no_diff_deleted,
3470  svn_boolean_t show_copies_as_adds,
3471  svn_boolean_t ignore_content_type,
3472  svn_boolean_t use_git_diff_format,
3473  const char *header_encoding,
3474  apr_file_t *outfile,
3475  apr_file_t *errfile,
3476  const apr_array_header_t *changelists,
3477  svn_client_ctx_t *ctx,
3478  apr_pool_t *pool);
3479 
3480 /**
3481  * Similar to svn_client_diff_peg5(), but with @a show_copies_as_adds set to
3482  * @c FALSE and @a use_git_diff_format set to @c FALSE.
3483  *
3484  * @since New in 1.5.
3485  * @deprecated Provided for backward compatibility with the 1.6 API.
3486  */
3488 svn_error_t *
3489 svn_client_diff_peg4(const apr_array_header_t *diff_options,
3490  const char *path,
3491  const svn_opt_revision_t *peg_revision,
3492  const svn_opt_revision_t *start_revision,
3493  const svn_opt_revision_t *end_revision,
3494  const char *relative_to_dir,
3495  svn_depth_t depth,
3496  svn_boolean_t ignore_ancestry,
3497  svn_boolean_t no_diff_deleted,
3498  svn_boolean_t ignore_content_type,
3499  const char *header_encoding,
3500  apr_file_t *outfile,
3501  apr_file_t *errfile,
3502  const apr_array_header_t *changelists,
3503  svn_client_ctx_t *ctx,
3504  apr_pool_t *pool);
3505 
3506 /**
3507  * Similar to svn_client_diff_peg4(), but with @a changelists passed
3508  * as @c NULL, and @a depth set according to @a recurse: if @a recurse
3509  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3510  * FALSE, set @a depth to #svn_depth_files.
3511  *
3512  * @deprecated Provided for backward compatibility with the 1.4 API.
3513  * @since New in 1.3.
3514  */
3516 svn_error_t *
3517 svn_client_diff_peg3(const apr_array_header_t *diff_options,
3518  const char *path,
3519  const svn_opt_revision_t *peg_revision,
3520  const svn_opt_revision_t *start_revision,
3521  const svn_opt_revision_t *end_revision,
3522  svn_boolean_t recurse,
3523  svn_boolean_t ignore_ancestry,
3524  svn_boolean_t no_diff_deleted,
3525  svn_boolean_t ignore_content_type,
3526  const char *header_encoding,
3527  apr_file_t *outfile,
3528  apr_file_t *errfile,
3529  svn_client_ctx_t *ctx,
3530  apr_pool_t *pool);
3531 
3532 /**
3533  * Similar to svn_client_diff_peg3(), but with @a header_encoding set to
3534  * @c APR_LOCALE_CHARSET.
3535  *
3536  * @deprecated Provided for backward compatibility with the 1.2 API.
3537  * @since New in 1.2.
3538  */
3540 svn_error_t *
3541 svn_client_diff_peg2(const apr_array_header_t *diff_options,
3542  const char *path,
3543  const svn_opt_revision_t *peg_revision,
3544  const svn_opt_revision_t *start_revision,
3545  const svn_opt_revision_t *end_revision,
3546  svn_boolean_t recurse,
3547  svn_boolean_t ignore_ancestry,
3548  svn_boolean_t no_diff_deleted,
3549  svn_boolean_t ignore_content_type,
3550  apr_file_t *outfile,
3551  apr_file_t *errfile,
3552  svn_client_ctx_t *ctx,
3553  apr_pool_t *pool);
3554 
3555 /**
3556  * Similar to svn_client_diff_peg2(), but with @a ignore_content_type
3557  * always set to FALSE.
3558  *
3559  * @since New in 1.1.
3560  * @deprecated Provided for backward compatibility with the 1.1 API.
3561  */
3563 svn_error_t *
3564 svn_client_diff_peg(const apr_array_header_t *diff_options,
3565  const char *path,
3566  const svn_opt_revision_t *peg_revision,
3567  const svn_opt_revision_t *start_revision,
3568  const svn_opt_revision_t *end_revision,
3569  svn_boolean_t recurse,
3570  svn_boolean_t ignore_ancestry,
3571  svn_boolean_t no_diff_deleted,
3572  apr_file_t *outfile,
3573  apr_file_t *errfile,
3574  svn_client_ctx_t *ctx,
3575  apr_pool_t *pool);
3576 
3577 /**
3578  * Produce a diff summary which lists the changed items between
3579  * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2 without
3580  * creating text deltas. @a path_or_url1 and @a path_or_url2 can be
3581  * either working-copy paths or URLs.
3582  *
3583  * The function may report false positives if @a ignore_ancestry is false,
3584  * since a file might have been modified between two revisions, but still
3585  * have the same contents.
3586  *
3587  * Calls @a summarize_func with @a summarize_baton for each difference
3588  * with a #svn_client_diff_summarize_t structure describing the difference.
3589  *
3590  * See svn_client_diff7() for a description of the other parameters.
3591  *
3592  * @since New in 1.5.
3593  */
3594 svn_error_t *
3595 svn_client_diff_summarize2(const char *path_or_url1,
3596  const svn_opt_revision_t *revision1,
3597  const char *path_or_url2,
3598  const svn_opt_revision_t *revision2,
3599  svn_depth_t depth,
3600  svn_boolean_t ignore_ancestry,
3601  const apr_array_header_t *changelists,
3602  svn_client_diff_summarize_func_t summarize_func,
3603  void *summarize_baton,
3604  svn_client_ctx_t *ctx,
3605  apr_pool_t *pool);
3606 
3607 /**
3608  * Similar to svn_client_diff_summarize2(), but with @a changelists
3609  * passed as @c NULL, and @a depth set according to @a recurse: if @a
3610  * recurse is TRUE, set @a depth to #svn_depth_infinity, if @a
3611  * recurse is FALSE, set @a depth to #svn_depth_files.
3612  *
3613  * @deprecated Provided for backward compatibility with the 1.4 API.
3614  *
3615  * @since New in 1.4.
3616  */
3618 svn_error_t *
3619 svn_client_diff_summarize(const char *path1,
3620  const svn_opt_revision_t *revision1,
3621  const char *path2,
3622  const svn_opt_revision_t *revision2,
3623  svn_boolean_t recurse,
3624  svn_boolean_t ignore_ancestry,
3625  svn_client_diff_summarize_func_t summarize_func,
3626  void *summarize_baton,
3627  svn_client_ctx_t *ctx,
3628  apr_pool_t *pool);
3629 
3630 /**
3631  * Produce a diff summary which lists the changed items between the
3632  * filesystem object @a path_or_url in peg revision @a peg_revision, as it
3633  * changed between @a start_revision and @a end_revision. @a path_or_url can
3634  * be either a working-copy path or URL.
3635  *
3636  * If @a peg_revision is #svn_opt_revision_unspecified, behave
3637  * identically to svn_client_diff_summarize2(), using @a path_or_url for
3638  * both of that function's @a path_or_url1 and @a path_or_url2 arguments.
3639  *
3640  * The function may report false positives if @a ignore_ancestry is false,
3641  * as described in the documentation for svn_client_diff_summarize2().
3642  *
3643  * Call @a summarize_func with @a summarize_baton for each difference
3644  * with a #svn_client_diff_summarize_t structure describing the difference.
3645  *
3646  * See svn_client_diff_peg5() for a description of the other parameters.
3647  *
3648  * @since New in 1.5.
3649  */
3650 svn_error_t *
3651 svn_client_diff_summarize_peg2(const char *path_or_url,
3652  const svn_opt_revision_t *peg_revision,
3653  const svn_opt_revision_t *start_revision,
3654  const svn_opt_revision_t *end_revision,
3655  svn_depth_t depth,
3656  svn_boolean_t ignore_ancestry,
3657  const apr_array_header_t *changelists,
3658  svn_client_diff_summarize_func_t summarize_func,
3659  void *summarize_baton,
3660  svn_client_ctx_t *ctx,
3661  apr_pool_t *pool);
3662 
3663 /**
3664  * Similar to svn_client_diff_summarize_peg2(), but with @a
3665  * changelists passed as @c NULL, and @a depth set according to @a
3666  * recurse: if @a recurse is TRUE, set @a depth to
3667  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
3668  * #svn_depth_files.
3669  *
3670  * @deprecated Provided for backward compatibility with the 1.4 API.
3671  *
3672  * @since New in 1.4.
3673  */
3675 svn_error_t *
3676 svn_client_diff_summarize_peg(const char *path,
3677  const svn_opt_revision_t *peg_revision,
3678  const svn_opt_revision_t *start_revision,
3679  const svn_opt_revision_t *end_revision,
3680  svn_boolean_t recurse,
3681  svn_boolean_t ignore_ancestry,
3682  svn_client_diff_summarize_func_t summarize_func,
3683  void *summarize_baton,
3684  svn_client_ctx_t *ctx,
3685  apr_pool_t *pool);
3686 
3687 /** @} */
3688 
3689 /**
3690  * @defgroup Merge Merge changes between branches.
3691  *
3692  * @{
3693  */
3694 
3695 /** Get information about the state of merging between two branches.
3696  *
3697  * The source is specified by @a source_path_or_url at @a source_revision.
3698  * The target is specified by @a target_path_or_url at @a target_revision,
3699  * which refers to either a WC or a repository location.
3700  *
3701  * Set @a *needs_reintegration to true if an automatic merge from source
3702  * to target would be a reintegration merge: that is, if the last automatic
3703  * merge was in the opposite direction; or to false otherwise.
3704  *
3705  * Set @a *yca_url, @a *yca_rev, @a *base_url, @a *base_rev, @a *right_url,
3706  * @a *right_rev, @a *target_url, @a *target_rev to the repository locations
3707  * of, respectively: the youngest common ancestor of the branches, the base
3708  * chosen for 3-way merge, the right-hand side of the source diff, and the
3709  * target.
3710  *
3711  * Set @a repos_root_url to the URL of the repository root. This is a
3712  * common prefix of all four URL outputs.
3713  *
3714  * Allocate the results in @a result_pool. Any of the output pointers may
3715  * be NULL if not wanted.
3716  *
3717  * @since New in 1.8.
3718  */
3719 svn_error_t *
3720 svn_client_get_merging_summary(svn_boolean_t *needs_reintegration,
3721  const char **yca_url, svn_revnum_t *yca_rev,
3722  const char **base_url, svn_revnum_t *base_rev,
3723  const char **right_url, svn_revnum_t *right_rev,
3724  const char **target_url, svn_revnum_t *target_rev,
3725  const char **repos_root_url,
3726  const char *source_path_or_url,
3727  const svn_opt_revision_t *source_revision,
3728  const char *target_path_or_url,
3729  const svn_opt_revision_t *target_revision,
3730  svn_client_ctx_t *ctx,
3731  apr_pool_t *result_pool,
3732  apr_pool_t *scratch_pool);
3733 
3734 
3735 /** Merge changes from @a source1/@a revision1 to @a source2/@a revision2 into
3736  * the working-copy path @a target_wcpath.
3737  *
3738  * @a source1 and @a source2 are either URLs that refer to entries in the
3739  * repository, or paths to entries in the working copy.
3740  *
3741  * By "merging", we mean: apply file differences using
3742  * svn_wc_merge(), and schedule additions & deletions when appropriate.
3743  *
3744  * @a source1 and @a source2 must both represent the same node kind -- that
3745  * is, if @a source1 is a directory, @a source2 must also be, and if @a source1
3746  * is a file, @a source2 must also be.
3747  *
3748  * If either @a revision1 or @a revision2 has an `unspecified' or
3749  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3750  *
3751  * If @a depth is #svn_depth_infinity, merge fully recursively.
3752  * Else if #svn_depth_immediates, merge changes at most to files
3753  * that are immediate children of @a target_wcpath and to directory
3754  * properties of @a target_wcpath and its immediate subdirectory children.
3755  * Else if #svn_depth_files, merge at most to immediate file
3756  * children of @a target_wcpath and to @a target_wcpath itself.
3757  * Else if #svn_depth_empty, apply changes only to @a target_wcpath
3758  * (i.e., directory property changes only)
3759  *
3760  * If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
3761  *
3762  * If @a ignore_mergeinfo is true, disable merge tracking, by treating the
3763  * two sources as unrelated even if they actually have a common ancestor.
3764  *
3765  * If @a diff_ignore_ancestry is true, diff unrelated nodes as if related:
3766  * that is, diff the 'left' and 'right' versions of a node as if they were
3767  * related (if they are the same kind) even if they are not related.
3768  * Otherwise, diff unrelated items as a deletion of one thing and the
3769  * addition of another.
3770  *
3771  * If @a force_delete is false and the merge involves deleting a file whose
3772  * content differs from the source-left version, or a locally modified
3773  * directory, or an unversioned item, then the operation will fail. If
3774  * @a force_delete is true then all such items will be deleted.
3775  *
3776  * @a merge_options (an array of <tt>const char *</tt>), if non-NULL,
3777  * is used to pass additional command line arguments to the merge
3778  * processes (internal or external). @see
3779  * svn_diff_file_options_parse().
3780  *
3781  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with @a
3782  * ctx->notify_baton2 once for each merged target, passing the target's local
3783  * path.
3784  *
3785  * If @a record_only is TRUE, the merge is performed, but is limited only to
3786  * mergeinfo property changes on existing paths in @a target_wcpath.
3787  *
3788  * If @a dry_run is TRUE, the merge is carried out, and full notification
3789  * feedback is provided, but the working copy is not modified.
3790  *
3791  * If allow_mixed_rev is @c FALSE, and @a merge_target is a mixed-revision
3792  * working copy, raise @c SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED.
3793  * Because users rarely intend to merge into mixed-revision working copies,
3794  * it is recommended to set this parameter to FALSE by default unless the
3795  * user has explicitly requested a merge into a mixed-revision working copy.
3796  *
3797  * The authentication baton cached in @a ctx is used to communicate with the
3798  * repository.
3799  *
3800  * @since New in 1.8.
3801  */
3802 svn_error_t *
3803 svn_client_merge5(const char *source1,
3804  const svn_opt_revision_t *revision1,
3805  const char *source2,
3806  const svn_opt_revision_t *revision2,
3807  const char *target_wcpath,
3808  svn_depth_t depth,
3809  svn_boolean_t ignore_mergeinfo,
3810  svn_boolean_t diff_ignore_ancestry,
3811  svn_boolean_t force_delete,
3812  svn_boolean_t record_only,
3813  svn_boolean_t dry_run,
3814  svn_boolean_t allow_mixed_rev,
3815  const apr_array_header_t *merge_options,
3816  svn_client_ctx_t *ctx,
3817  apr_pool_t *pool);
3818 
3819 /**
3820  * Similar to svn_client_merge5(), but the single @a ignore_ancestry
3821  * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
3822  *
3823  * @deprecated Provided for backward compatibility with the 1.7 API.
3824  * @since New in 1.7.
3825  */
3827 svn_error_t *
3828 svn_client_merge4(const char *source1,
3829  const svn_opt_revision_t *revision1,
3830  const char *source2,
3831  const svn_opt_revision_t *revision2,
3832  const char *target_wcpath,
3833  svn_depth_t depth,
3834  svn_boolean_t ignore_ancestry,
3835  svn_boolean_t force_delete,
3836  svn_boolean_t record_only,
3837  svn_boolean_t dry_run,
3838  svn_boolean_t allow_mixed_rev,
3839  const apr_array_header_t *merge_options,
3840  svn_client_ctx_t *ctx,
3841  apr_pool_t *pool);
3842 
3843 /**
3844  * Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
3845  * @c TRUE. The @a force parameter maps to the @c force_delete parameter
3846  * of svn_client_merge4().
3847  *
3848  * @deprecated Provided for backward compatibility with the 1.6 API.
3849  *
3850  * @since New in 1.5.
3851  */
3853 svn_error_t *
3854 svn_client_merge3(const char *source1,
3855  const svn_opt_revision_t *revision1,
3856  const char *source2,
3857  const svn_opt_revision_t *revision2,
3858  const char *target_wcpath,
3859  svn_depth_t depth,
3860  svn_boolean_t ignore_ancestry,
3861  svn_boolean_t force,
3862  svn_boolean_t record_only,
3863  svn_boolean_t dry_run,
3864  const apr_array_header_t *merge_options,
3865  svn_client_ctx_t *ctx,
3866  apr_pool_t *pool);
3867 
3868 /**
3869  * Similar to svn_client_merge3(), but with @a record_only set to @c
3870  * FALSE, and @a depth set according to @a recurse: if @a recurse is
3871  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3872  * FALSE, set @a depth to #svn_depth_files.
3873  *
3874  * @deprecated Provided for backward compatibility with the 1.4 API.
3875  *
3876  * @since New in 1.4.
3877  */
3879 svn_error_t *
3880 svn_client_merge2(const char *source1,
3881  const svn_opt_revision_t *revision1,
3882  const char *source2,
3883  const svn_opt_revision_t *revision2,
3884  const char *target_wcpath,
3885  svn_boolean_t recurse,
3886  svn_boolean_t ignore_ancestry,
3887  svn_boolean_t force,
3888  svn_boolean_t dry_run,
3889  const apr_array_header_t *merge_options,
3890  svn_client_ctx_t *ctx,
3891  apr_pool_t *pool);
3892 
3893 
3894 /**
3895  * Similar to svn_client_merge2(), but with @a merge_options set to NULL.
3896  *
3897  * @deprecated Provided for backwards compatibility with the 1.3 API.
3898  */
3900 svn_error_t *
3901 svn_client_merge(const char *source1,
3902  const svn_opt_revision_t *revision1,
3903  const char *source2,
3904  const svn_opt_revision_t *revision2,
3905  const char *target_wcpath,
3906  svn_boolean_t recurse,
3907  svn_boolean_t ignore_ancestry,
3908  svn_boolean_t force,
3909  svn_boolean_t dry_run,
3910  svn_client_ctx_t *ctx,
3911  apr_pool_t *pool);
3912 
3913 
3914 /**
3915  * Perform a reintegration merge of @a source_path_or_url at @a source_peg_revision
3916  * into @a target_wcpath.
3917  * @a target_wcpath must be a single-revision, #svn_depth_infinity,
3918  * pristine, unswitched working copy -- in other words, it must
3919  * reflect a single revision tree, the "target". The mergeinfo on @a
3920  * source_path_or_url must reflect that all of the target has been merged into it.
3921  * Then this behaves like a merge with svn_client_merge5() from the
3922  * target's URL to the source.
3923  *
3924  * All other options are handled identically to svn_client_merge5().
3925  * The depth of the merge is always #svn_depth_infinity.
3926  *
3927  * @since New in 1.5.
3928  * @deprecated Provided for backwards compatibility with the 1.7 API.
3929  */
3931 svn_error_t *
3932 svn_client_merge_reintegrate(const char *source_path_or_url,
3933  const svn_opt_revision_t *source_peg_revision,
3934  const char *target_wcpath,
3935  svn_boolean_t dry_run,
3936  const apr_array_header_t *merge_options,
3937  svn_client_ctx_t *ctx,
3938  apr_pool_t *pool);
3939 
3940 /**
3941  * Merge changes from the source branch identified by
3942  * @a source_path_or_url in peg revision @a source_peg_revision,
3943  * into the target branch working copy at @a target_wcpath.
3944  *
3945  * If @a ranges_to_merge is NULL then perform an automatic merge of
3946  * all the eligible changes up to @a source_peg_revision. If the merge
3947  * required is a reintegrate merge, then return an error if the WC has
3948  * mixed revisions, local modifications and/or switched subtrees; if
3949  * the merge is determined to be of the non-reintegrate kind, then
3950  * return an error if @a allow_mixed_rev is false and the WC contains
3951  * mixed revisions.
3952  *
3953  * If @a ranges_to_merge is not NULL then merge the changes specified
3954  * by the revision ranges in @a ranges_to_merge, or, when honouring
3955  * mergeinfo, only the eligible parts of those revision ranges.
3956  * @a ranges_to_merge is an array of <tt>svn_opt_revision_range_t
3957  * *</tt> ranges. These ranges may describe additive and/or
3958  * subtractive merge ranges, they may overlap fully or partially,
3959  * and/or they may partially or fully negate each other. This
3960  * rangelist is not required to be sorted. If any revision in the
3961  * list of provided ranges has an `unspecified' or unrecognized
3962  * `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3963  *
3964  * If @a ranges_to_merge is an empty array, then do nothing.
3965  *
3966  * All other options are handled identically to svn_client_merge5().
3967  *
3968  * @since New in 1.8.
3969  */
3970 svn_error_t *
3971 svn_client_merge_peg5(const char *source_path_or_url,
3972  const apr_array_header_t *ranges_to_merge,
3973  const svn_opt_revision_t *source_peg_revision,
3974  const char *target_wcpath,
3975  svn_depth_t depth,
3976  svn_boolean_t ignore_mergeinfo,
3977  svn_boolean_t diff_ignore_ancestry,
3978  svn_boolean_t force_delete,
3979  svn_boolean_t record_only,
3980  svn_boolean_t dry_run,
3981  svn_boolean_t allow_mixed_rev,
3982  const apr_array_header_t *merge_options,
3983  svn_client_ctx_t *ctx,
3984  apr_pool_t *pool);
3985 
3986 /**
3987  * Similar to svn_client_merge_peg5(), but automatic merge is not available
3988  * (@a ranges_to_merge must not be NULL), and the single @a ignore_ancestry
3989  * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
3990  *
3991  * @deprecated Provided for backward compatibility with the 1.7 API.
3992  * @since New in 1.7.
3993  */
3995 svn_error_t *
3996 svn_client_merge_peg4(const char *source_path_or_url,
3997  const apr_array_header_t *ranges_to_merge,
3998  const svn_opt_revision_t *source_peg_revision,
3999  const char *target_wcpath,
4000  svn_depth_t depth,
4001  svn_boolean_t ignore_ancestry,
4002  svn_boolean_t force_delete,
4003  svn_boolean_t record_only,
4004  svn_boolean_t dry_run,
4005  svn_boolean_t allow_mixed_rev,
4006  const apr_array_header_t *merge_options,
4007  svn_client_ctx_t *ctx,
4008  apr_pool_t *pool);
4009 
4010 /**
4011  * Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
4012  * @c TRUE. The @a force parameter maps to the @c force_delete parameter
4013  * of svn_client_merge_peg4().
4014  *
4015  * @deprecated Provided for backward compatibility with the 1.6 API.
4016  *
4017  * @since New in 1.5.
4018  */
4020 svn_error_t *
4021 svn_client_merge_peg3(const char *source,
4022  const apr_array_header_t *ranges_to_merge,
4023  const svn_opt_revision_t *peg_revision,
4024  const char *target_wcpath,
4025  svn_depth_t depth,
4026  svn_boolean_t ignore_ancestry,
4027  svn_boolean_t force,
4028  svn_boolean_t record_only,
4029  svn_boolean_t dry_run,
4030  const apr_array_header_t *merge_options,
4031  svn_client_ctx_t *ctx,
4032  apr_pool_t *pool);
4033 
4034 /**
4035  * Similar to svn_client_merge_peg3(), but with @a record_only set to
4036  * @c FALSE, and @a depth set according to @a recurse: if @a recurse
4037  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
4038  * FALSE, set @a depth to #svn_depth_files.
4039  *
4040  * @deprecated Provided for backwards compatibility with the 1.4 API.
4041  *
4042  * @since New in 1.4.
4043  */
4045 svn_error_t *
4046 svn_client_merge_peg2(const char *source,
4047  const svn_opt_revision_t *revision1,
4048  const svn_opt_revision_t *revision2,
4049  const svn_opt_revision_t *peg_revision,
4050  const char *target_wcpath,
4051  svn_boolean_t recurse,
4052  svn_boolean_t ignore_ancestry,
4053  svn_boolean_t force,
4054  svn_boolean_t dry_run,
4055  const apr_array_header_t *merge_options,
4056  svn_client_ctx_t *ctx,
4057  apr_pool_t *pool);
4058 
4059 /**
4060  * Similar to svn_client_merge_peg2(), but with @a merge_options set to
4061  * NULL.
4062  *
4063  * @deprecated Provided for backwards compatibility with the 1.3 API.
4064  *
4065  * @since New in 1.1.
4066  */
4068 svn_error_t *
4069 svn_client_merge_peg(const char *source,
4070  const svn_opt_revision_t *revision1,
4071  const svn_opt_revision_t *revision2,
4072  const svn_opt_revision_t *peg_revision,
4073  const char *target_wcpath,
4074  svn_boolean_t recurse,
4075  svn_boolean_t ignore_ancestry,
4076  svn_boolean_t force,
4077  svn_boolean_t dry_run,
4078  svn_client_ctx_t *ctx,
4079  apr_pool_t *pool);
4080 
4081 
4082 /** Set @a suggestions to an ordered array of @c const char *
4083  * potential merge sources (expressed as full repository URLs) for @a
4084  * path_or_url at @a peg_revision. @a path_or_url is a working copy
4085  * path or repository URL. @a ctx is a context used for
4086  * authentication in the repository case. Use @a pool for all
4087  * allocations.
4088  *
4089  * @since New in 1.5.
4090  */
4091 svn_error_t *
4092 svn_client_suggest_merge_sources(apr_array_header_t **suggestions,
4093  const char *path_or_url,
4094  const svn_opt_revision_t *peg_revision,
4095  svn_client_ctx_t *ctx,
4096  apr_pool_t *pool);
4097 
4098 
4099 /**
4100  * Get the mergeinfo for a single target node (ignoring any subtrees).
4101  *
4102  * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge source
4103  * URLs to <tt>svn_rangelist_t *</tt> rangelists describing the ranges which
4104  * have been merged into @a path_or_url as of @a peg_revision, per
4105  * @a path_or_url's explicit mergeinfo or inherited mergeinfo if no
4106  * explicit mergeinfo if found. If no explicit or inherited mergeinfo
4107  * is found, then set @a *mergeinfo to NULL.
4108  *
4109  * Use @a pool for all necessary allocations.
4110  *
4111  * If the server doesn't support retrieval of mergeinfo (which will
4112  * never happen for file:// URLs), return an
4113  * #SVN_ERR_UNSUPPORTED_FEATURE error.
4114  *
4115  * @note Unlike most APIs which deal with mergeinfo, this one returns
4116  * data where the keys of the hash are absolute repository URLs rather
4117  * than repository filesystem paths.
4118  *
4119  * @since New in 1.5.
4120  */
4121 svn_error_t *
4122 svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo,
4123  const char *path_or_url,
4124  const svn_opt_revision_t *peg_revision,
4125  svn_client_ctx_t *ctx,
4126  apr_pool_t *pool);
4127 
4128 
4129 /**
4130  * Describe the revisions that either have or have not been merged from
4131  * one source branch (or subtree) into another.
4132  *
4133  * If @a finding_merged is TRUE, then drive log entry callbacks
4134  * @a receiver / @a receiver_baton with the revisions merged from
4135  * @a source_path_or_url (as of @a source_peg_revision) into
4136  * @a target_path_or_url (as of @a target_peg_revision). If @a
4137  * finding_merged is FALSE then find the revisions eligible for merging.
4138  *
4139  * If both @a source_start_revision and @a source_end_revision are
4140  * unspecified (that is, of kind @c svn_opt_revision_unspecified),
4141  * @a receiver will be called the requested revisions from 0 to
4142  * @a source_peg_revision and in that order (that is, oldest to
4143  * youngest). Otherwise, both @a source_start_revision and
4144  * @a source_end_revision must be specified, which has two effects:
4145  *
4146  * - @a receiver will be called only with revisions which fall
4147  * within range of @a source_start_revision to
4148  * @a source_end_revision, inclusive, and
4149  *
4150  * - those revisions will be ordered in the same "direction" as the
4151  * walk from @a source_start_revision to @a source_end_revision.
4152  * (If @a source_start_revision is the younger of the two, @a
4153  * receiver will be called with revisions in youngest-to-oldest
4154  * order; otherwise, the reverse occurs.)
4155  *
4156  * If @a depth is #svn_depth_empty consider only the explicit or
4157  * inherited mergeinfo on @a target_path_or_url when calculating merged
4158  * revisions from @a source_path_or_url. If @a depth is #svn_depth_infinity
4159  * then also consider the explicit subtree mergeinfo under @a
4160  * target_path_or_url.
4161  * If a depth other than #svn_depth_empty or #svn_depth_infinity is
4162  * requested then return a #SVN_ERR_UNSUPPORTED_FEATURE error.
4163  *
4164  * In addition to the behavior of @a discover_changed_paths described in
4165  * svn_client_log5(), if set to TRUE it enables detection of sub-tree
4166  * merges that are complete but can't be detected as complete without
4167  * access to the changed paths. Sub-tree merges detected as complete will
4168  * be included if @a finding_merged is TRUE or filtered if @a finding_merged
4169  * is FALSE.
4170  *
4171  * @a revprops is the same as for svn_client_log5(). Use @a scratch_pool for
4172  * all temporary allocations.
4173  *
4174  * @a ctx is a context used for authentication.
4175  *
4176  * If the server doesn't support retrieval of mergeinfo, return an
4177  * #SVN_ERR_UNSUPPORTED_FEATURE error.
4178  *
4179  * @since New in 1.8.
4180  */
4181 svn_error_t *
4183  const char *target_path_or_url,
4184  const svn_opt_revision_t *target_peg_revision,
4185  const char *source_path_or_url,
4186  const svn_opt_revision_t *source_peg_revision,
4187  const svn_opt_revision_t *source_start_revision,
4188  const svn_opt_revision_t *source_end_revision,
4189  svn_log_entry_receiver_t receiver,
4190  void *receiver_baton,
4191  svn_boolean_t discover_changed_paths,
4192  svn_depth_t depth,
4193  const apr_array_header_t *revprops,
4194  svn_client_ctx_t *ctx,
4195  apr_pool_t *scratch_pool);
4196 
4197 /**
4198  * Similar to svn_client_mergeinfo_log2(), but with @a source_start_revision
4199  * and @a source_end_revision always of kind @c svn_opt_revision_unspecified;
4200  *
4201  * @deprecated Provided for backwards compatibility with the 1.7 API.
4202  * @since New in 1.7.
4203  */
4205 svn_error_t *
4207  const char *target_path_or_url,
4208  const svn_opt_revision_t *target_peg_revision,
4209  const char *source_path_or_url,
4210  const svn_opt_revision_t *source_peg_revision,
4211  svn_log_entry_receiver_t receiver,
4212  void *receiver_baton,
4213  svn_boolean_t discover_changed_paths,
4214  svn_depth_t depth,
4215  const apr_array_header_t *revprops,
4216  svn_client_ctx_t *ctx,
4217  apr_pool_t *scratch_pool);
4218 
4219 /**
4220  * Similar to svn_client_mergeinfo_log(), but finds only merged revisions
4221  * and always operates at @a depth #svn_depth_empty.
4222  *
4223  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
4224  * svn_client_mergeinfo_log() instead.
4225  * @since New in 1.5.
4226  */
4228 svn_error_t *
4229 svn_client_mergeinfo_log_merged(const char *path_or_url,
4230  const svn_opt_revision_t *peg_revision,
4231  const char *merge_source_path_or_url,
4232  const svn_opt_revision_t *src_peg_revision,
4233  svn_log_entry_receiver_t receiver,
4234  void *receiver_baton,
4235  svn_boolean_t discover_changed_paths,
4236  const apr_array_header_t *revprops,
4237  svn_client_ctx_t *ctx,
4238  apr_pool_t *pool);
4239 
4240 /**
4241  * Similar to svn_client_mergeinfo_log(), but finds only eligible revisions
4242  * and always operates at @a depth #svn_depth_empty.
4243  *
4244  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
4245  * svn_client_mergeinfo_log() instead.
4246  * @since New in 1.5.
4247  */
4249 svn_error_t *
4250 svn_client_mergeinfo_log_eligible(const char *path_or_url,
4251  const svn_opt_revision_t *peg_revision,
4252  const char *merge_source_path_or_url,
4253  const svn_opt_revision_t *src_peg_revision,
4254  svn_log_entry_receiver_t receiver,
4255  void *receiver_baton,
4256  svn_boolean_t discover_changed_paths,
4257  const apr_array_header_t *revprops,
4258  svn_client_ctx_t *ctx,
4259  apr_pool_t *pool);
4260 
4261 /** @} */
4262 
4263 /**
4264  * @defgroup Cleanup Cleanup an abnormally terminated working copy.
4265  *
4266  * @{
4267  */
4268 
4269 /** Recursively vacuum a working copy directory @a dir_abspath,
4270  * removing unnecessary data.
4271  *
4272  * If @a include_externals is @c TRUE, recurse into externals and vacuum them
4273  * as well.
4274  *
4275  * If @a remove_unversioned_items is @c TRUE, remove unversioned items
4276  * in @a dir_abspath after successful working copy cleanup.
4277  * If @a remove_ignored_items is @c TRUE, remove ignored unversioned items
4278  * in @a dir_abspath after successful working copy cleanup.
4279  *
4280  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
4281  * timestamps for unmodified files in the working copy, reducing comparision
4282  * time on future checks.
4283  *
4284  * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
4285  * copy root unreferenced files in the pristine store are removed.
4286  *
4287  * When asked to remove unversioned or ignored items, and the working copy
4288  * is already locked, return #SVN_ERR_WC_LOCKED. This prevents accidental
4289  * working copy corruption in case users run the cleanup operation to
4290  * remove unversioned items while another client is performing some other
4291  * operation on the working copy.
4292  *
4293  * If @a ctx->cancel_func is non-NULL, invoke it with @a
4294  * ctx->cancel_baton at various points during the operation. If it
4295  * returns an error (typically #SVN_ERR_CANCELLED), return that error
4296  * immediately.
4297  *
4298  * Use @a scratch_pool for any temporary allocations.
4299  *
4300  * @since New in 1.9.
4301  */
4302 svn_error_t *
4303 svn_client_vacuum(const char *dir_abspath,
4304  svn_boolean_t remove_unversioned_items,
4305  svn_boolean_t remove_ignored_items,
4306  svn_boolean_t fix_recorded_timestamps,
4307  svn_boolean_t vacuum_pristines,
4308  svn_boolean_t include_externals,
4309  svn_client_ctx_t *ctx,
4310  apr_pool_t *scratch_pool);
4311 
4312 
4313 /** Recursively cleanup a working copy directory @a dir_abspath, finishing any
4314  * incomplete operations, removing lockfiles, etc.
4315  *
4316  * If @a break_locks is @c TRUE, existing working copy locks at or below @a
4317  * dir_abspath are broken, otherwise a normal write lock is obtained.
4318  *
4319  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
4320  * timestamps for unmodified files in the working copy, reducing comparision
4321  * time on future checks.
4322  *
4323  * If @a clear_dav_cache is @c TRUE, the caching of DAV information for older
4324  * mod_dav served repositories is cleared. This clearing invalidates some
4325  * cached information used for pre-HTTPv2 repositories.
4326  *
4327  * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
4328  * copy root unreferenced files in the pristine store are removed.
4329  *
4330  * If @a include_externals is @c TRUE, recurse into externals and clean
4331  * them up as well.
4332  *
4333  * If @a ctx->cancel_func is non-NULL, invoke it with @a
4334  * ctx->cancel_baton at various points during the operation. If it
4335  * returns an error (typically #SVN_ERR_CANCELLED), return that error
4336  * immediately.
4337  *
4338  * Use @a scratch_pool for any temporary allocations.
4339  *
4340  * @since New in 1.9.
4341  */
4342 svn_error_t *
4343 svn_client_cleanup2(const char *dir_abspath,
4344  svn_boolean_t break_locks,
4345  svn_boolean_t fix_recorded_timestamps,
4346  svn_boolean_t clear_dav_cache,
4347  svn_boolean_t vacuum_pristines,
4348  svn_boolean_t include_externals,
4349  svn_client_ctx_t *ctx,
4350  apr_pool_t *scratch_pool);
4351 
4352 /** Like svn_client_cleanup2(), but no support for not breaking locks and
4353  * cleaning up externals and using a potentially non absolute path.
4354  *
4355  * @deprecated Provided for limited backwards compatibility with the 1.8 API.
4356  */
4358 svn_error_t *
4359 svn_client_cleanup(const char *dir,
4360  svn_client_ctx_t *ctx,
4361  apr_pool_t *scratch_pool);
4362 
4363 
4364 /** @} */
4365 
4366 /**
4367  * @defgroup Upgrade Upgrade a working copy.
4368  *
4369  * @{
4370  */
4371 
4372 /** Recursively upgrade a working copy from any older format to the current
4373  * WC metadata storage format. @a wcroot_dir is the path to the WC root.
4374  *
4375  * Use @a scratch_pool for any temporary allocations.
4376  *
4377  * @since New in 1.7.
4378  */
4379 svn_error_t *
4380 svn_client_upgrade(const char *wcroot_dir,
4381  svn_client_ctx_t *ctx,
4382  apr_pool_t *scratch_pool);
4383 
4384 
4385 /** @} */
4386 
4387 /**
4388  * @defgroup Relocate Switch a working copy to a different repository.
4389  *
4390  * @{
4391  */
4392 
4393 /**
4394  * Recursively modify a working copy rooted at @a wcroot_dir, changing
4395  * any repository URLs that begin with @a from_prefix to begin with @a
4396  * to_prefix instead.
4397  *
4398  * @param wcroot_dir Working copy root directory
4399  * @param from_prefix Original URL
4400  * @param to_prefix New URL
4401  * @param ignore_externals If not set, recurse into external working
4402  * copies after relocating the primary working copy
4403  * @param ctx svn_client_ctx_t
4404  * @param pool The pool from which to perform memory allocations
4405  *
4406  * @since New in 1.7
4407  */
4408 svn_error_t *
4409 svn_client_relocate2(const char *wcroot_dir,
4410  const char *from_prefix,
4411  const char *to_prefix,
4412  svn_boolean_t ignore_externals,
4413  svn_client_ctx_t *ctx,
4414  apr_pool_t *pool);
4415 
4416 /**
4417  * Similar to svn_client_relocate2(), but with @a ignore_externals
4418  * always TRUE.
4419  *
4420  * @note As of the 1.7 API, @a dir is required to be a working copy
4421  * root directory, and @a recurse is required to be TRUE.
4422  *
4423  * @deprecated Provided for limited backwards compatibility with the
4424  * 1.6 API.
4425  */
4427 svn_error_t *
4428 svn_client_relocate(const char *dir,
4429  const char *from_prefix,
4430  const char *to_prefix,
4431  svn_boolean_t recurse,
4432  svn_client_ctx_t *ctx,
4433  apr_pool_t *pool);
4434 
4435 /** @} */
4436 
4437 /**
4438  * @defgroup Revert Remove local changes in a repository.
4439  *
4440  * @{
4441  */
4442 
4443 /**
4444  * Restore the pristine version of working copy @a paths,
4445  * effectively undoing any local mods. This means returning each
4446  * path's versioned status to 'unmodified' and changing its on-disk
4447  * state to match that.
4448  *
4449  * If an item was in a state of conflict, reverting also marks the
4450  * conflict as resolved. If there are conflict marker files attached
4451  * to the item, these are removed.
4452  *
4453  * @a paths is an array of (const char *) local WC paths.
4454  *
4455  * For each path in @a paths, revert it if it is a file. Else if it is
4456  * a directory, revert according to @a depth:
4457  * If @a depth is #svn_depth_empty, revert just
4458  * the directory; else if #svn_depth_files, revert the directory
4459  * and any files immediately under the directory; else if
4460  * #svn_depth_immediates, revert all of the preceding plus
4461  * immediate subdirectories; else if #svn_depth_infinity,
4462  * revert path and everything under it fully recursively.
4463  *
4464  * @a changelists is an array of <tt>const char *</tt> changelist
4465  * names, used as a restrictive filter on items reverted; that is,
4466  * don't revert any item unless it's a member of one of those
4467  * changelists. If @a changelists is empty (or altogether @c NULL),
4468  * no changelist filtering occurs.
4469  *
4470  * If @a clear_changelists is TRUE, then changelist information for the
4471  * paths is cleared while reverting.
4472  *
4473  * The @a metadata_only and @a added_keep_local options control the
4474  * extent of reverting. If @a metadata_only is TRUE, the working copy
4475  * files are untouched, but if there are conflict marker files attached
4476  * to these files these markers are removed. Otherwise, if
4477  * @a added_keep_local is TRUE, then all items are reverted except an
4478  * item that was scheduled as plain 'add' (not a copy) will not be
4479  * removed from the working copy. Otherwise, all items are reverted and
4480  * their on-disk state changed to match.
4481  *
4482  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
4483  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
4484  * the reverted item.
4485  *
4486  * If an item specified for reversion is not under version control,
4487  * then do not error, just invoke @a ctx->notify_func2 with @a
4488  * ctx->notify_baton2, using notification code #svn_wc_notify_skip.
4489  *
4490  * @warning The 'revert' command intentionally and permanently loses
4491  * local modifications.
4492  *
4493  * @since New in 1.11.
4494  */
4495 svn_error_t *
4496 svn_client_revert4(const apr_array_header_t *paths,
4497  svn_depth_t depth,
4498  const apr_array_header_t *changelists,
4499  svn_boolean_t clear_changelists,
4500  svn_boolean_t metadata_only,
4501  svn_boolean_t added_keep_local,
4502  svn_client_ctx_t *ctx,
4503  apr_pool_t *scratch_pool);
4504 
4505 /** Similar to svn_client_revert4(), but with @a added_keep_local set to
4506  * TRUE.
4507  *
4508  * @since New in 1.9.
4509  * @deprecated Provided for backwards compatibility with the 1.10 API.
4510  */
4512 svn_error_t *
4513 svn_client_revert3(const apr_array_header_t *paths,
4514  svn_depth_t depth,
4515  const apr_array_header_t *changelists,
4516  svn_boolean_t clear_changelists,
4517  svn_boolean_t metadata_only,
4518  svn_client_ctx_t *ctx,
4519  apr_pool_t *pool);
4520 
4521 /** Similar to svn_client_revert2, but with @a clear_changelists set to
4522  * FALSE and @a metadata_only set to FALSE.
4523  *
4524  * @since New in 1.5.
4525  * @deprecated Provided for backwards compatibility with the 1.8 API.
4526  */
4528 svn_error_t *
4529 svn_client_revert2(const apr_array_header_t *paths,
4530  svn_depth_t depth,
4531  const apr_array_header_t *changelists,
4532  svn_client_ctx_t *ctx,
4533  apr_pool_t *pool);
4534 
4535 
4536 /**
4537  * Similar to svn_client_revert2(), but with @a changelists passed as
4538  * @c NULL, and @a depth set according to @a recurse: if @a recurse is
4539  * TRUE, @a depth is #svn_depth_infinity, else if @a recurse is
4540  * FALSE, @a depth is #svn_depth_empty.
4541  *
4542  * @note Most APIs map @a recurse==FALSE to @a depth==svn_depth_files;
4543  * revert is deliberately different.
4544  *
4545  * @deprecated Provided for backwards compatibility with the 1.4 API.
4546  */
4548 svn_error_t *
4549 svn_client_revert(const apr_array_header_t *paths,
4550  svn_boolean_t recursive,
4551  svn_client_ctx_t *ctx,
4552  apr_pool_t *pool);
4553 
4554 
4555 /** @} */
4556 
4557 /**
4558  * @defgroup Conflicts Dealing with conflicted paths.
4559  *
4560  * @{
4561  */
4562 
4563 /**
4564  * An opaque type which represents a conflicted node in the working copy.
4565  *
4566  * @since New in 1.10.
4567  */
4569 
4570 /**
4571  * An opaque type which represents a resolution option for a conflict.
4572  *
4573  * @since New in 1.10.
4574  */
4576 
4577 /**
4578  * A public enumeration of conflict option IDs.
4579  *
4580  * @since New in 1.10, unless noted otherwise.
4581  */
4583 
4584  /* Options for text and property conflicts.
4585  * These values intentionally mirror svn_wc_conflict_choice_t. */
4586  svn_client_conflict_option_undefined = -1, /* for private use only */
4587  svn_client_conflict_option_postpone = 0,
4588  svn_client_conflict_option_base_text,
4589  svn_client_conflict_option_incoming_text, /* "theirs-full" */
4590  svn_client_conflict_option_working_text, /* "mine-full" */
4591  svn_client_conflict_option_incoming_text_where_conflicted,
4592  svn_client_conflict_option_working_text_where_conflicted,
4593  svn_client_conflict_option_merged_text,
4594  svn_client_conflict_option_unspecified,
4595  /* Values derived from svn_wc_conflict_choice_t end here. */
4596 
4597  /* Tree conflict resolution options start here. */
4598 
4599  /* Accept current working copy state. */
4600  svn_client_conflict_option_accept_current_wc_state,
4601 
4602  /* Options for local move vs incoming edit on update. */
4603  svn_client_conflict_option_update_move_destination,
4604 
4605  /* Options for local delete/replace vs incoming edit on update. */
4606  svn_client_conflict_option_update_any_moved_away_children,
4607 
4608  /* Options for incoming add vs local add or obstruction. */
4609  svn_client_conflict_option_incoming_add_ignore,
4610 
4611  /* Options for incoming file add vs local file add or obstruction. */
4612  svn_client_conflict_option_incoming_added_file_text_merge,
4613  svn_client_conflict_option_incoming_added_file_replace_and_merge,
4614 
4615  /* Options for incoming dir add vs local dir add or obstruction. */
4616  svn_client_conflict_option_incoming_added_dir_merge,
4617  svn_client_conflict_option_incoming_added_dir_replace,
4618  svn_client_conflict_option_incoming_added_dir_replace_and_merge,
4619 
4620  /* Options for incoming delete vs any */
4621  svn_client_conflict_option_incoming_delete_ignore,
4622  svn_client_conflict_option_incoming_delete_accept,
4623 
4624  /* Options for incoming move vs local edit */
4625  svn_client_conflict_option_incoming_move_file_text_merge,
4626  svn_client_conflict_option_incoming_move_dir_merge,
4627 
4628  /* Options for local move vs incoming edit on merge. */
4629  svn_client_conflict_option_local_move_file_text_merge,
4631 
4632  /* Options for local missing vs incoming edit on merge. */
4635 
4636  /* Options for local move vs incoming move on merge. */
4637  svn_client_conflict_option_both_moved_file_merge, /*< @since New in 1.12 */
4638  svn_client_conflict_option_both_moved_file_move_merge, /*< @since New in 1.12 */
4639  svn_client_conflict_option_both_moved_dir_merge, /*< @since New in 1.12 */
4640  svn_client_conflict_option_both_moved_dir_move_merge, /*< @since New in 1.12 */
4642 
4643 /**
4644  * Set a merged property value on @a option to @a merged_propval.
4645  *
4646  * Setting the merged value is required before resolving the property
4647  * conflict using an option with ID svn_client_conflict_option_merged_text.
4648  *
4649  * The contents of @a merged_propval are not copied, so the storage it
4650  * points to needs to remain valid until svn_client_conflict_prop_resolve()
4651  * has been called with @a option.
4652  *
4653  * @since New in 1.10.
4654  */
4655 void
4658  const svn_string_t *merged_propval);
4659 
4660 /**
4661  * Get a list of possible repository paths which can be applied to @a option.
4662  *
4663  * In some situations, there can be multiple possible destinations for a move.
4664  * One such situation is where a file was copied and moved in the same revision:
4665  * svn cp a b; svn mv a c; svn commit
4666  * When this move is merged elsewhere, both b and c will appear as valid move
4667  * destinations to the conflict resolver. To resolve such ambiguity, the client
4668  * may call this function to obtain a list of possible destinations the user
4669  * may choose from.
4670  *
4671  * @a *possible_moved_to_repos_relpaths is set to NULL if the @a option does
4672  * not support multiple move targets. API users may assume that only one option
4673  * among those which can be applied to a conflict supports move targets.
4674  *
4675  * The array is allocated in @a result_pool and will have "const char *"
4676  * elements pointing to strings also allocated in @a result_pool.
4677  * All paths are relpaths, and relative to the repository root.
4678  *
4679  * @see svn_client_conflict_option_set_moved_to_repos_relpath2()
4680  * @since New in 1.11.
4681  */
4682 svn_error_t *
4684  apr_array_header_t **possible_moved_to_repos_relpaths,
4686  apr_pool_t *result_pool,
4687  apr_pool_t *scratch_pool);
4688 
4689 /**
4690  * Get a list of possible repository paths which can be applied to the
4691  * svn_client_conflict_option_incoming_move_file_text_merge, or the
4692  * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
4693  *
4694  * In SVN 1.10, if a different option is passed in, this function will
4695  * raise an assertion failure. Otherwise this function behaves just like
4696  * svn_client_conflict_option_get_moved_to_repos_relpath_candidates2().
4697  *
4698  * @since New in 1.10.
4699  * @deprecated use svn_client_conflict_option_get_moved_to_repos_relpath_candidates2()
4700  */
4701 svn_error_t *
4703  apr_array_header_t **possible_moved_to_repos_relpaths,
4705  apr_pool_t *result_pool,
4706  apr_pool_t *scratch_pool);
4707 
4708 /**
4709  * Set the preferred moved target repository path. If @a option is not
4710  * applicable to a moved target repository path, do nothing.
4711  *
4712  * @a preferred_move_target_idx must be a valid index into the list returned
4713  * by svn_client_conflict_option_get_moved_to_repos_relpath_candidates().
4714  *
4715  * This function can be called multiple times.
4716  * It affects the output of svn_client_conflict_tree_get_description() and
4717  * svn_client_conflict_option_get_description(). Call these functions again
4718  * to get updated descriptions containing the newly selected move target.
4719  *
4720  * @since New in 1.11.
4721  */
4722 svn_error_t *
4725  int preferred_move_target_idx,
4726  svn_client_ctx_t *ctx,
4727  apr_pool_t *scratch_pool);
4728 
4729 /**
4730  * Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except
4731  * that in SVN 1.10 it raises an assertion failure if an option other
4732  * than svn_client_conflict_option_incoming_move_file_text_merge or
4733  * svn_client_conflict_option_incoming_move_dir_merge is passed.
4734  *
4735  * @since New in 1.10.
4736  * @deprecated use svn_client_conflict_option_set_moved_to_repos_relpath2()
4737  */
4738 svn_error_t *
4741  int preferred_move_target_idx,
4742  svn_client_ctx_t *ctx,
4743  apr_pool_t *scratch_pool);
4744 
4745 /**
4746  * Get a list of possible moved-to abspaths in the working copy which can be
4747  * applied to @a option.
4748  *
4749  * All working copy paths in the returned list correspond to one repository
4750  * path which is be one of the possible destinations of a move operation.
4751  * More than one repository-side move target candidate may exist; call
4752  * svn_client_conflict_option_get_moved_to_repos_relpath_candidates() before
4753  * calling this function to let the user select a repository path first.
4754  * Otherwise, one of the repository-side paths will be selected internally.
4755  *
4756  * @a *possible_moved_to_abspaths is set to NULL if the @a option does not
4757  * support multiple move targets. API users may assume that only one option
4758  * among those which can be applied to a conflict supports move targets.
4759  *
4760  * If no possible moved-to paths can be found, return an empty array.
4761  * This doesn't mean that no move happened in the repository. It is possible
4762  * that the move destination is outside the scope of the current working copy,
4763  * for example, in which case the conflict must be resolved in some other way.
4764  *
4765  * @see svn_client_conflict_option_set_moved_to_abspath2()
4766  * @since New in 1.11.
4767  */
4768 svn_error_t *
4770  apr_array_header_t **possible_moved_to_abspaths,
4772  apr_pool_t *result_pool,
4773  apr_pool_t *scratch_pool);
4774 
4775 /**
4776  * Get a list of possible moved-to abspaths in the working copy which can be
4777  * svn_client_conflict_option_incoming_move_file_text_merge, or the
4778  * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
4779  *
4780  * In SVN 1.10, if a different option is passed in, this function will
4781  * raise an assertion failure. Otherwise this function behaves just like
4782  * svn_client_conflict_option_get_moved_to_abspath_candidates2().
4783  *
4784  * @since New in 1.10.
4785  * @deprecated use svn_client_conflict_option_get_moved_to_abspath_candidates2()
4786  */
4787 svn_error_t *
4789  apr_array_header_t **possible_moved_to_abspaths,
4791  apr_pool_t *result_pool,
4792  apr_pool_t *scratch_pool);
4793 
4794 /**
4795  * Set the preferred moved target working copy path. If @a option is not
4796  * applicable to a moved target working copy path, do nothing.
4797  *
4798  * @a preferred_move_target_idx must be a valid index into the list
4799  * returned by svn_client_conflict_option_get_moved_to_abspath_candidates2().
4800  *
4801  * This function can be called multiple times.
4802  * It affects the output of svn_client_conflict_tree_get_description() and
4803  * svn_client_conflict_option_get_description(). Call these functions again
4804  * to get updated descriptions containing the newly selected move target.
4805  *
4806  * @since New in 1.11.
4807  */
4808 svn_error_t *
4811  int preferred_move_target_idx,
4812  svn_client_ctx_t *ctx,
4813  apr_pool_t *scratch_pool);
4814 
4815 /**
4816  * Like svn_client_conflict_option_set_moved_to_abspath2(), except that
4817  * in SVN 1.10 this function raises an assertion failure if an option
4818  * other than svn_client_conflict_option_incoming_move_file_text_merge or
4819  * svn_client_conflict_option_incoming_move_dir_merge is passed.
4820  *
4821  * @since New in 1.10.
4822  * @deprecated use svn_client_conflict_option_set_moved_to_abspath2()
4823  */
4824 svn_error_t *
4827  int preferred_move_target_idx,
4828  svn_client_ctx_t *ctx,
4829  apr_pool_t *scratch_pool);
4830 
4831 /**
4832  * Given an @a option_id, try to find the corresponding option in @a options,
4833  * which is an array of svn_client_conflict_option_t * elements.
4834  *
4835  * Return NULL if no corresponding option can be be found.
4836  *
4837  * @since New in 1.10.
4838  */
4841  apr_array_header_t *options,
4842  svn_client_conflict_option_id_t option_id);
4843 
4844 /**
4845  * Return a conflict for the conflicted path @a local_abspath.
4846  *
4847  * @since New in 1.10.
4848  */
4849 svn_error_t *
4851  const char *local_abspath,
4852  svn_client_ctx_t *ctx,
4853  apr_pool_t *result_pool,
4854  apr_pool_t *scratch_pool);
4855 
4856 /**
4857  * Callback for svn_client_conflict_conflict_walk();
4858  *
4859  * The lifetime of @a conflict is limited. Its allocation in
4860  * memory will not persist beyond this callback's execution.
4861  *
4862  * @since New in 1.10.
4863  */
4864 typedef svn_error_t *(*svn_client_conflict_walk_func_t)(
4865  void *baton,
4866  svn_client_conflict_t *conflict,
4867  apr_pool_t *scratch_pool);
4868 
4869 /**
4870  * Walk all conflicts within the specified @a depth of @a local_abspath.
4871  * Pass each conflict found during the walk to the @a conflict_walk_func
4872  * callback, along with @a conflict_walk_func_baton.
4873  * Use cancellation and notification support provided by client context @a ctx.
4874  *
4875  * This callback may choose to resolve the conflict. If the act of resolving
4876  * a conflict creates new conflicts within the walked working copy (as might
4877  * be the case for some tree conflicts), the callback will be invoked for each
4878  * such new conflict as well.
4879  *
4880  * @since New in 1.10.
4881  */
4882 svn_error_t *
4883 svn_client_conflict_walk(const char *local_abspath,
4884  svn_depth_t depth,
4885  svn_client_conflict_walk_func_t conflict_walk_func,
4886  void *conflict_walk_func_baton,
4887  svn_client_ctx_t *ctx,
4888  apr_pool_t *scratch_pool);
4889 
4890 /**
4891 * Indicate the types of conflicts present on the working copy node
4892 * described by @a conflict. Any output argument may be @c NULL if
4893 * the caller is not interested in the status of a particular type.
4894 *
4895 * The returned @a *props_conflicted array is allocated in @a result_pool.
4896 * It contains the names of conflicted properties. If no property conflict
4897 * exists, the array will contain no elements.
4898 *
4899 * @since New in 1.10.
4900 */
4901 svn_error_t *
4903  apr_array_header_t **props_conflicted,
4904  svn_boolean_t *tree_conflicted,
4905  svn_client_conflict_t *conflict,
4906  apr_pool_t *result_pool,
4907  apr_pool_t *scratch_pool);
4908 
4909 /**
4910  * Return a textual human-readable description of the property conflict
4911  * described by @a conflict, allocated in @a result_pool. The description
4912  * is encoded in UTF-8 and may contain multiple lines separated by
4913  * @c APR_EOL_STR. The last line is not terminated by a newline.
4914  *
4915  * Additionally, the description may be localized to the language used
4916  * by the current locale.
4917  *
4918  * @since New in 1.10.
4919  */
4920 svn_error_t *
4921 svn_client_conflict_prop_get_description(const char **description,
4922  svn_client_conflict_t *conflict,
4923  apr_pool_t *result_pool,
4924  apr_pool_t *scratch_pool);
4925 
4926 /**
4927  * Return a textual human-readable description of the tree conflict
4928  * described by @a conflict, allocated in @a result_pool. The description
4929  * is encoded in UTF-8 and may contain multiple lines separated by
4930  * @c APR_EOL_STR. The last line is not terminated by a newline.
4931  *
4932  * Additionally, the description may be localized to the language used
4933  * by the current locale.
4934  *
4935  * While client implementors are free to enhance descriptions by adding
4936  * additional information to the text, or break up very long lines for
4937  * formatting purposes, there is no syntax defined for descriptions, and
4938  * implementors should not rely on any particular parts of descriptions
4939  * to remain stable over time, apart from what is stated below.
4940  * Descriptions may or may not form complete sentences. They may contain
4941  * paths relative to the repository root; such paths always start with "^/",
4942  * and end with either a peg revision (e.g. "@100") or a colon followed by
4943  * a range of revisions (as in svn:mergeinfo, e.g. ":100-200").
4944  * Paths may appear on a line of their own to avoid overlong lines.
4945  * Any revision numbers mentioned elsewhere in the description are
4946  * prefixed with the letter 'r' (e.g. "r99").
4947  *
4948  * The description has two parts: One part describes the "incoming change"
4949  * applied by an update, merge, or switch operation. The other part
4950  * describes the "local change" which occurred in the working copy or
4951  * perhaps in the history of a merge target branch.
4952  * Both parts are provided independently to allow for some flexibility
4953  * when displaying the description. As a convention, displaying the
4954  * "incoming change" first and the "local change" second is recommended.
4955  *
4956  * By default, the description is based only on information available in
4957  * the working copy. If svn_client_conflict_tree_get_details() was already
4958  * called for @a conflict, the description might also contain useful
4959  * information obtained from the repository and provide for a much better
4960  * user experience.
4961  *
4962  * @since New in 1.10.
4963  */
4964 svn_error_t *
4966  const char **incoming_change_description,
4967  const char **local_change_description,
4968  svn_client_conflict_t *conflict,
4969  svn_client_ctx_t *ctx,
4970  apr_pool_t *result_pool,
4971  apr_pool_t *scratch_pool);
4972 
4973 /**
4974  * Set @a *options to an array of pointers to svn_client_conflict_option_t
4975  * objects applicable to text conflicts described by @a conflict.
4976  *
4977  * @since New in 1.10.
4978  */
4979 svn_error_t *
4980 svn_client_conflict_text_get_resolution_options(apr_array_header_t **options,
4981  svn_client_conflict_t *conflict,
4982  svn_client_ctx_t *ctx,
4983  apr_pool_t *result_pool,
4984  apr_pool_t *scratch_pool);
4985 
4986 /**
4987  * Set @a *options to an array of pointers to svn_client_conflict_option_t
4988  * objects applicable to property conflicts described by @a conflict.
4989  *
4990  * @since New in 1.10.
4991  */
4992 svn_error_t *
4993 svn_client_conflict_prop_get_resolution_options(apr_array_header_t **options,
4994  svn_client_conflict_t *conflict,
4995  svn_client_ctx_t *ctx,
4996  apr_pool_t *result_pool,
4997  apr_pool_t *scratch_pool);
4998 
4999 /**
5000  * Set @a *options to an array of pointers to svn_client_conflict_option_t
5001  * objects applicable to the tree conflict described by @a conflict.
5002  *
5003  * By default, the list of options is based only on information available in
5004  * the working copy. If svn_client_conflict_tree_get_details() was already
5005  * called for @a conflict, a more useful list of options might be returned.
5006  *
5007  * @since New in 1.10.
5008  */
5009 svn_error_t *
5010 svn_client_conflict_tree_get_resolution_options(apr_array_header_t **options,
5011  svn_client_conflict_t *conflict,
5012  svn_client_ctx_t *ctx,
5013  apr_pool_t *result_pool,
5014  apr_pool_t *scratch_pool);
5015 
5016 /**
5017  * Find more information about the tree conflict represented by @a conflict.
5018  *
5019  * A call to svn_client_conflict_tree_get_description() may yield much better
5020  * results after this function has been called.
5021  *
5022  * A call to svn_client_conflict_tree_get_resolution_options() may provide
5023  * more useful resolution options if this function has been called.
5024  *
5025  * This function may contact the repository. Use the authentication baton
5026  * cached in @a ctx for authentication if contacting the repository.
5027  *
5028  * @since New in 1.10.
5029  */
5030 svn_error_t *
5032  svn_client_ctx_t *ctx,
5033  apr_pool_t *scratch_pool);
5034 
5035 /**
5036  * Return an ID for @a option. This ID can be used by callers to associate
5037  * arbitrary data with a particular conflict resolution option.
5038  *
5039  * The ID of a particular resolution option will never change in future
5040  * revisions of this API.
5041  *
5042  * @since New in 1.10.
5043  */
5044 svn_client_conflict_option_id_t
5046 
5047 /**
5048  * Return a textual human-readable label of @a option, allocated in
5049  * @a result_pool. The label is encoded in UTF-8 and usually
5050  * contains up to three words.
5051  *
5052  * Additionally, the label may be localized to the language used
5053  * by the current locale.
5054  *
5055  * @since New in 1.10.
5056  */
5057 const char *
5059  apr_pool_t *result_pool);
5060 
5061 /**
5062  * Return a textual human-readable description of @a option, allocated in
5063  * @a result_pool. The description is encoded in UTF-8 and may contain
5064  * multiple lines separated by @c APR_EOL_STR.
5065  *
5066  * Additionally, the description may be localized to the language used
5067  * by the current locale.
5068  *
5069  * @since New in 1.10.
5070  */
5071 const char *
5073  apr_pool_t *result_pool);
5074 
5075 /**
5076  * Return the ID of the recommended resolution option. If no specific option
5077  * is recommended, return @c svn_client_conflict_option_unspecified;
5078  *
5079  * Client implementations which aim to avoid excessive interactive prompting
5080  * may wish to try a recommended resolution option before falling back to
5081  * asking the user which option to use.
5082  *
5083  * Conflict resolution with a recommended option is not guaranteed to succeed.
5084  * Clients should check for errors when trying to resolve a conflict and fall
5085  * back to other options and/or interactive prompting when the recommended
5086  * option fails to resolve a conflict.
5087  *
5088  * If @a conflict is a tree conflict, svn_client_conflict_tree_get_details()
5089  * should be called before this function to allow for useful recommendations.
5090  *
5091  * @since New in 1.10.
5092  */
5093 svn_client_conflict_option_id_t
5095 
5096 /**
5097  * Return the absolute path to the conflicted working copy node described
5098  * by @a conflict.
5099  *
5100  * @since New in 1.10.
5101  */
5102 const char *
5104 
5105 /**
5106  * Return the operation during which the conflict described by @a
5107  * conflict was recorded.
5108  *
5109  * @since New in 1.10.
5110  */
5113 
5114 /**
5115  * Return the action an update, switch, or merge operation attempted to
5116  * perform on the working copy node described by @a conflict.
5117  *
5118  * @since New in 1.10.
5119  */
5122 
5123 /**
5124  * Return the reason why the attempted action performed by an update, switch,
5125  * or merge operation conflicted with the state of the node in the working copy.
5126  *
5127  * During update and switch operations this local change is part of uncommitted
5128  * modifications in the working copy. During merge operations it may
5129  * additionally be part of the history of the merge target branch, anywhere
5130  * between the common ancestor revision and the working copy revision.
5131  *
5132  * @since New in 1.10.
5133  */
5136 
5137 /**
5138  * Return information about the repository associated with @a conflict.
5139  * In case of a foreign-repository merge this will differ from the
5140  * repository information associated with the merge target working copy.
5141  *
5142  * @since New in 1.10.
5143  */
5144 svn_error_t *
5145 svn_client_conflict_get_repos_info(const char **repos_root_url,
5146  const char **repos_uuid,
5147  svn_client_conflict_t *conflict,
5148  apr_pool_t *result_pool,
5149  apr_pool_t *scratch_pool);
5150 
5151 /**
5152  * Return the repository-relative location and the node kind of the incoming
5153  * old version of the conflicted node described by @a conflict.
5154  *
5155  * If the repository-relative path is not available, the @a
5156  * *incoming_old_repos_relpath will be set to @c NULL,
5157  *
5158  * If the peg revision is not available, @a *incoming_old_regrev will be
5159  * set to SVN_INVALID_REVNUM.
5160  *
5161  * If the node kind is not available or if the node does not exist at the
5162  * specified path and revision, @a *incoming_old_node_kind will be set to
5163  * svn_node_none.
5164  * ### Should return svn_node_unkown if not available?
5165  *
5166  * Any output parameter may be set to @c NULL by the caller to indicate that
5167  * a particular piece of information should not be returned.
5168  *
5169  * In case of tree conflicts, this "path@revision" does not necessarily exist
5170  * in the repository, and it does not necessarily represent the incoming
5171  * change which is responsible for the occurance of the tree conflict.
5172  * The responsible incoming change is generally located somewhere between
5173  * the old and new incoming versions.
5174  *
5175  * @since New in 1.10.
5176  */
5177 svn_error_t *
5179  const char **incoming_old_repos_relpath,
5180  svn_revnum_t *incoming_old_regrev,
5181  svn_node_kind_t *incoming_old_node_kind,
5182  svn_client_conflict_t *conflict,
5183  apr_pool_t *result_pool,
5184  apr_pool_t *scratch_pool);
5185 
5186 /**
5187  * Like svn_client_conflict_get_incoming_old_repos_location(), expect this
5188  * function returns the same data for the incoming new version.
5189  *
5190  * The same note about tree conflicts applies.
5191  *
5192  * @since New in 1.10.
5193  */
5194 svn_error_t *
5196  const char **incoming_new_repos_relpath,
5197  svn_revnum_t *incoming_new_regrev,
5198  svn_node_kind_t *incoming_new_node_kind,
5199  svn_client_conflict_t *conflict,
5200  apr_pool_t *result_pool,
5201  apr_pool_t *scratch_pool);
5202 
5203 /**
5204  * Return the node kind of the tree conflict victim described by @a conflict.
5205  * The victim is the local node in the working copy which was affected by the
5206  * tree conflict at the time the conflict was raised.
5207  *
5208  * @since New in 1.10.
5209  */
5212 
5213 /**
5214  * Resolve a tree @a conflict using resolution option @a option.
5215  *
5216  * May raise an error in case the tree conflict cannot be resolved yet, for
5217  * instance @c SVN_ERR_WC_OBSTRUCTED_UPDATE, @c SVN_ERR_WC_FOUND_CONFLICT,
5218  * or @c SVN_ERR_WC_CONFLICT_RESOLVER_FAILUE.
5219  * This may happen when other tree conflicts, or unversioned obstructions,
5220  * block the resolution of this tree conflict. In such a case the other
5221  * conflicts should be resolved first and resolution of this conflict should
5222  * be attempted again later.
5223  *
5224  * @since New in 1.10.
5225  */
5226 svn_error_t *
5229  svn_client_ctx_t *ctx,
5230  apr_pool_t *scratch_pool);
5231 
5232 /**
5233  * Like svn_client_conflict_tree_resolve(), except that it identifies
5234  * the desired resolution option by ID @a option_id.
5235  *
5236  * If the provided @a option_id is the ID of an option which resolves
5237  * @a conflict, try to resolve the tree conflict using that option.
5238  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5239  *
5240  * @since New in 1.10.
5241  */
5242 svn_error_t *
5244  svn_client_conflict_t *conflict,
5245  svn_client_conflict_option_id_t option_id,
5246  svn_client_ctx_t *ctx,
5247  apr_pool_t *scratch_pool);
5248 
5249 /**
5250  * Return the ID of the option this tree @a conflict has been resolved to.
5251  * If the conflict has not been resolved yet, then return
5252  * @c svn_client_conflict_option_unspecified.
5253  *
5254  * @since New in 1.10.
5255  */
5256 svn_client_conflict_option_id_t
5258 
5259 /**
5260  * Return the path to the legacy property conflicts reject file
5261  * for the property conflicts represented by @a conflict.
5262  *
5263  * This function exists for backwards compatibility only and should not be
5264  * used in new code.
5265  *
5266  * @since New in 1.10.
5267  */
5268 const char *
5270 
5271 /**
5272  * Return the set of property values involved in the conflict of property
5273  * PROPNAME described by @a conflict. If a property value is unavailable the
5274  * corresponding output argument is set to @c NULL.
5275  *
5276  * A 3-way diff of these property values can be generated with
5277  * svn_diff_mem_string_diff3(). A merged version with conflict
5278  * markers can be generated with svn_diff_mem_string_output_merge3().
5279  *
5280  * @since New in 1.10.
5281  */
5282 svn_error_t *
5284  const svn_string_t **working_propval,
5285  const svn_string_t **incoming_old_propval,
5286  const svn_string_t **incoming_new_propval,
5287  svn_client_conflict_t *conflict,
5288  const char *propname,
5289  apr_pool_t *result_pool);
5290 
5291 /**
5292  * Resolve a property @a conflict in property @a propname using resolution
5293  * option @a option. To resolve all properties to the same option at once,
5294  * set @a propname to the empty string "".
5295  *
5296  * @since New in 1.10.
5297  */
5298 svn_error_t *
5300  const char *propname,
5302  svn_client_ctx_t *ctx,
5303  apr_pool_t *scratch_pool);
5304 /**
5305  * If the provided @a option_id is the ID of an option which resolves
5306  * @a conflict, resolve the property conflict in property @a propname
5307  * using that option.
5308  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5309  *
5310  * @since New in 1.10.
5311  */
5312 svn_error_t *
5314  svn_client_conflict_t *conflict,
5315  const char *propname,
5316  svn_client_conflict_option_id_t option_id,
5317  svn_client_ctx_t *ctx,
5318  apr_pool_t *scratch_pool);
5319 
5320 /**
5321  * Return the ID of the option this property @a conflict in property
5322  * @a propname has been resolved to.
5323  * If the conflict has not been resolved yet, then return
5324  * @c svn_client_conflict_option_unspecified.
5325  *
5326  * @since New in 1.10.
5327  */
5328 svn_client_conflict_option_id_t
5330  const char *propname);
5331 
5332 /**
5333  * Return the MIME-type of the working version of the text-conflicted file
5334  * described by @a conflict.
5335  *
5336  * ### Really needed? What about base/incoming_old/incoming_new values?
5337  * @since: New in 1.10.
5338  */
5339 const char *
5341 
5342 /**
5343  * Return absolute paths to the versions of the text-conflicted file
5344  * described by @a conflict.
5345  *
5346  * If a particular content is not available, it is set to @c NULL.
5347  *
5348  * ### Should this be returning svn_stream_t instead of paths?
5349  * @since: New in 1.10.
5350  */
5351 svn_error_t *
5352 svn_client_conflict_text_get_contents(const char **base_abspath,
5353  const char **working_abspath,
5354  const char **incoming_old_abspath,
5355  const char **incoming_new_abspath,
5356  svn_client_conflict_t *conflict,
5357  apr_pool_t *result_pool,
5358  apr_pool_t *scratch_pool);
5359 
5360 /**
5361  * Resolve a text @a conflict using resolution option @a option.
5362  *
5363  * @since New in 1.10.
5364  */
5365 svn_error_t *
5368  svn_client_ctx_t *ctx,
5369  apr_pool_t *scratch_pool);
5370 
5371 /**
5372  * If the provided @a option_id is the ID of an option which resolves
5373  * @a conflict, resolve the text conflict using that option.
5374  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5375  *
5376  * @since New in 1.10.
5377  */
5378 svn_error_t *
5380  svn_client_conflict_t *conflict,
5381  svn_client_conflict_option_id_t option_id,
5382  svn_client_ctx_t *ctx,
5383  apr_pool_t *scratch_pool);
5384 
5385 /**
5386  * Return the ID of the option this text @a conflict has been resolved to.
5387  * If the conflict has not been resolved yet, then return
5388  * @c svn_client_conflict_option_unspecified.
5389  *
5390  * @since New in 1.10.
5391  */
5392 svn_client_conflict_option_id_t
5394 
5395 /** @} */
5396 
5397 /**
5398  * @defgroup Resolved Mark conflicted paths as resolved.
5399  *
5400  * @{
5401  */
5402 
5403 /**
5404  * Similar to svn_client_resolve(), but without automatic conflict
5405  * resolution support.
5406  *
5407  * @deprecated Provided for backward compatibility with the 1.4 API.
5408  * Use svn_client_resolve() with @a conflict_choice == @c
5409  * svn_wc_conflict_choose_merged instead.
5410  */
5412 svn_error_t *
5413 svn_client_resolved(const char *path,
5414  svn_boolean_t recursive,
5415  svn_client_ctx_t *ctx,
5416  apr_pool_t *pool);
5417 
5418 /** Perform automatic conflict resolution on a working copy @a path.
5419  *
5420  * If @a conflict_choice is
5421  *
5422  * - #svn_wc_conflict_choose_base:
5423  * resolve the conflict with the old file contents
5424  *
5425  * - #svn_wc_conflict_choose_mine_full:
5426  * use the original working contents
5427  *
5428  * - #svn_wc_conflict_choose_theirs_full:
5429  * use the new contents
5430  *
5431  * - #svn_wc_conflict_choose_merged:
5432  * don't change the contents at all, just remove the conflict
5433  * status, which is the pre-1.5 behavior.
5434  *
5435  * - #svn_wc_conflict_choose_theirs_conflict
5436  * ###...
5437  *
5438  * - #svn_wc_conflict_choose_mine_conflict
5439  * ###...
5440  *
5441  * - svn_wc_conflict_choose_unspecified
5442  * invoke @a ctx->conflict_func2 with @a ctx->conflict_baton2 to obtain
5443  * a resolution decision for each conflict. This can be used to
5444  * implement interactive conflict resolution but is NOT RECOMMENDED for
5445  * new code. To perform conflict resolution based on interactive user
5446  * input on a per-conflict basis, use svn_client_conflict_text_resolve(),
5447  * svn_client_conflict_prop_resolve(), and
5448  * svn_client_conflict_tree_resolve() instead of svn_client_resolve().
5449  *
5450  * #svn_wc_conflict_choose_theirs_conflict and
5451  * #svn_wc_conflict_choose_mine_conflict are not legal for binary
5452  * files or properties.
5453  *
5454  * If @a path is not in a state of conflict to begin with, do nothing.
5455  * If @a path's conflict state is removed and @a ctx->notify_func2 is non-NULL,
5456  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and @a path.
5457  * ### with what notification parameters?
5458  *
5459  * If @a depth is #svn_depth_empty, act only on @a path; if
5460  * #svn_depth_files, resolve @a path and its conflicted file
5461  * children (if any); if #svn_depth_immediates, resolve @a path and
5462  * all its immediate conflicted children (both files and directories,
5463  * if any); if #svn_depth_infinity, resolve @a path and every
5464  * conflicted file or directory anywhere beneath it.
5465  *
5466  * Note that this operation will try to lock the parent directory of
5467  * @a path in order to be able to resolve tree-conflicts on @a path.
5468  *
5469  * @since New in 1.5.
5470  */
5471 svn_error_t *
5472 svn_client_resolve(const char *path,
5473  svn_depth_t depth,
5474  svn_wc_conflict_choice_t conflict_choice,
5475  svn_client_ctx_t *ctx,
5476  apr_pool_t *pool);
5477 
5478 
5479 /** @} */
5480 
5481 /**
5482  * @defgroup Copy Copy paths in the working copy and repository.
5483  *
5484  * @{
5485  */
5486 
5487 /**
5488  * A structure which describes the source of a copy operation--its path,
5489  * revision, and peg revision.
5490  *
5491  * @since New in 1.5.
5492  */
5494 {
5495  /** The source path or URL. */
5496  const char *path;
5497 
5498  /** The source operational revision. */
5500 
5501  /** The source peg revision. */
5504 
5505 /** Copy each source in @a sources to @a dst_path.
5506  *
5507  * If multiple @a sources are given, @a dst_path must be a directory,
5508  * and @a sources will be copied as children of @a dst_path.
5509  *
5510  * @a sources is an array of <tt>svn_client_copy_source_t *</tt> elements,
5511  * either all referring to local WC items or all referring to versioned
5512  * items in the repository.
5513  *
5514  * If @a sources has only one item, attempt to copy it to @a dst_path. If
5515  * @a copy_as_child is TRUE and @a dst_path already exists, attempt to copy the
5516  * item as a child of @a dst_path. If @a copy_as_child is FALSE and
5517  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
5518  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
5519  * URL.
5520  *
5521  * If @a sources has multiple items, and @a copy_as_child is TRUE, all
5522  * @a sources are copied as children of @a dst_path. If any child of
5523  * @a dst_path already exists with the same name any item in @a sources,
5524  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
5525  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
5526  *
5527  * If @a sources has multiple items, and @a copy_as_child is FALSE, fail
5528  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
5529  *
5530  * If @a dst_path is a URL, use the authentication baton
5531  * in @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to immediately
5532  * attempt to commit the copy action in the repository.
5533  *
5534  * If @a dst_path is not a URL, then this is just a variant of
5535  * svn_client_add(), where the @a sources are scheduled for addition
5536  * as copies. No changes will happen to the repository until a commit occurs.
5537  * This scheduling can be removed with svn_client_revert2().
5538  *
5539  * If @a make_parents is TRUE, create any non-existent parent directories
5540  * also. Otherwise the parent of @a dst_path must already exist.
5541  *
5542  * If @a ignore_externals is set, don't process externals definitions
5543  * as part of this operation.
5544  *
5545  * If @a metadata_only is @c TRUE and copying a file in a working copy,
5546  * everything in the metadata is updated as if the node is moved, but the
5547  * actual disk copy operation is not performed. This feature is useful for
5548  * clients that want to keep the working copy in sync while the actual working
5549  * copy is updated by some other task.
5550  *
5551  * If @a pin_externals is set, pin URLs in copied externals definitions
5552  * to their current revision unless they were already pinned to a
5553  * particular revision. A pinned external uses a URL which points at a
5554  * fixed revision, rather than the HEAD revision. Externals in the copy
5555  * destination are pinned to either a working copy base revision or the
5556  * HEAD revision of a repository (as of the time the copy operation is
5557  * performed), depending on the type of the copy source:
5558  <pre>
5559  copy source: working copy (WC) REPOS
5560  ------------+------------------------+---------------------------+
5561  copy WC | external's WC BASE rev | external's repos HEAD rev |
5562  dest: |------------------------+---------------------------+
5563  REPOS | external's WC BASE rev | external's repos HEAD rev |
5564  ------------+------------------------+---------------------------+
5565  </pre>
5566  * If the copy source is a working copy, then all externals must be checked
5567  * out, be at a single-revision, contain no local modifications, and contain
5568  * no switched subtrees. Else, #SVN_ERR_WC_PATH_UNEXPECTED_STATUS is returned.
5569  *
5570  * If non-NULL, @a externals_to_pin restricts pinning to a subset of externals.
5571  * It is a hash table keyed by either a local absolute path or a URL at which
5572  * an svn:externals property is set. The hash table contains apr_array_header_t*
5573  * elements as returned by svn_wc_parse_externals_description3(). These arrays
5574  * contain elements of type svn_wc_external_item2_t*, each of which corresponds
5575  * to a single line of an svn:externals definition. Externals corresponding to
5576  * these items will be pinned, other externals will not be pinned.
5577  * If @a externals_to_pin is @c NULL then all externals are pinned.
5578  * If @a pin_externals is @c FALSE then @a externals_to_pin is ignored.
5579  *
5580  * If non-NULL, @a revprop_table is a hash table holding additional,
5581  * custom revision properties (<tt>const char *</tt> names mapped to
5582  * <tt>svn_string_t *</tt> values) to be set on the new revision in
5583  * the event that this is a committing operation. This table cannot
5584  * contain any standard Subversion properties.
5585  *
5586  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo
5587  * that this function can use to query for a commit log message when one is
5588  * needed.
5589  *
5590  * If @a ctx->notify_func2 is non-NULL, invoke it with @a ctx->notify_baton2
5591  * for each item added at the new location, passing the new, relative path of
5592  * the added item.
5593  *
5594  * If @a commit_callback is non-NULL, then for each successful commit, call
5595  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
5596  * the commit.
5597  *
5598  * @since New in 1.9.
5599  */
5600 svn_error_t *
5601 svn_client_copy7(const apr_array_header_t *sources,
5602  const char *dst_path,
5603  svn_boolean_t copy_as_child,
5604  svn_boolean_t make_parents,
5605  svn_boolean_t ignore_externals,
5606  svn_boolean_t metadata_only,
5607  svn_boolean_t pin_externals,
5608  const apr_hash_t *externals_to_pin,
5609  const apr_hash_t *revprop_table,
5610  svn_commit_callback2_t commit_callback,
5611  void *commit_baton,
5612  svn_client_ctx_t *ctx,
5613  apr_pool_t *pool);
5614 
5615 /**
5616  * Similar to svn_client_copy7(), but doesn't support meta_data_only
5617  * and cannot pin externals.
5618  *
5619  *
5620  * @since New in 1.7.
5621  * @deprecated Provided for backward compatibility with the 1.8 API.
5622  */
5624 svn_error_t *
5625 svn_client_copy6(const apr_array_header_t *sources,
5626  const char *dst_path,
5627  svn_boolean_t copy_as_child,
5628  svn_boolean_t make_parents,
5629  svn_boolean_t ignore_externals,
5630  const apr_hash_t *revprop_table,
5631  svn_commit_callback2_t commit_callback,
5632  void *commit_baton,
5633  svn_client_ctx_t *ctx,
5634  apr_pool_t *pool);
5635 
5636 /**
5637  * Similar to svn_client_copy6(), but returns the commit info in
5638  * @a *commit_info_p rather than through a callback function.
5639  *
5640  * @since New in 1.6.
5641  * @deprecated Provided for backward compatibility with the 1.6 API.
5642  */
5644 svn_error_t *
5645 svn_client_copy5(svn_commit_info_t **commit_info_p,
5646  const apr_array_header_t *sources,
5647  const char *dst_path,
5648  svn_boolean_t copy_as_child,
5649  svn_boolean_t make_parents,
5650  svn_boolean_t ignore_externals,
5651  const apr_hash_t *revprop_table,
5652  svn_client_ctx_t *ctx,
5653  apr_pool_t *pool);
5654 
5655 /**
5656  * Similar to svn_client_copy5(), with @a ignore_externals set to @c FALSE.
5657  *
5658  * @since New in 1.5.
5659  *
5660  * @deprecated Provided for backward compatibility with the 1.5 API.
5661  */
5663 svn_error_t *
5664 svn_client_copy4(svn_commit_info_t **commit_info_p,
5665  const apr_array_header_t *sources,
5666  const char *dst_path,
5667  svn_boolean_t copy_as_child,
5668  svn_boolean_t make_parents,
5669  const apr_hash_t *revprop_table,
5670  svn_client_ctx_t *ctx,
5671  apr_pool_t *pool);
5672 
5673 /**
5674  * Similar to svn_client_copy4(), with only one @a src_path, @a
5675  * copy_as_child set to @c FALSE, @a revprop_table passed as NULL, and
5676  * @a make_parents set to @c FALSE. Also, use @a src_revision as both
5677  * the operational and peg revision.
5678  *
5679  * @since New in 1.4.
5680  *
5681  * @deprecated Provided for backward compatibility with the 1.4 API.
5682  */
5684 svn_error_t *
5685 svn_client_copy3(svn_commit_info_t **commit_info_p,
5686  const char *src_path,
5687  const svn_opt_revision_t *src_revision,
5688  const char *dst_path,
5689  svn_client_ctx_t *ctx,
5690  apr_pool_t *pool);
5691 
5692 
5693 /**
5694  * Similar to svn_client_copy3(), with the difference that if @a dst_path
5695  * already exists and is a directory, copy the item into that directory,
5696  * keeping its name (the last component of @a src_path).
5697  *
5698  * @since New in 1.3.
5699  *
5700  * @deprecated Provided for backward compatibility with the 1.3 API.
5701  */
5703 svn_error_t *
5704 svn_client_copy2(svn_commit_info_t **commit_info_p,
5705  const char *src_path,
5706  const svn_opt_revision_t *src_revision,
5707  const char *dst_path,
5708  svn_client_ctx_t *ctx,
5709  apr_pool_t *pool);
5710 
5711 
5712 /**
5713  * Similar to svn_client_copy2(), but uses #svn_client_commit_info_t
5714  * for @a commit_info_p.
5715  *
5716  * @deprecated Provided for backward compatibility with the 1.2 API.
5717  */
5719 svn_error_t *
5721  const char *src_path,
5722  const svn_opt_revision_t *src_revision,
5723  const char *dst_path,
5724  svn_client_ctx_t *ctx,
5725  apr_pool_t *pool);
5726 
5727 
5728 /** @} */
5729 
5730 /**
5731  * @defgroup Move Move paths in the working copy or repository.
5732  *
5733  * @{
5734  */
5735 
5736 /**
5737  * Move @a src_paths to @a dst_path.
5738  *
5739  * @a src_paths is an array of (const char *) paths -- either all WC paths
5740  * or all URLs -- of versioned items. If multiple @a src_paths are given,
5741  * @a dst_path must be a directory and @a src_paths will be moved as
5742  * children of @a dst_path.
5743  *
5744  * If @a src_paths are repository URLs:
5745  *
5746  * - @a dst_path must also be a repository URL.
5747  *
5748  * - The authentication baton in @a ctx and @a ctx->log_msg_func/@a
5749  * ctx->log_msg_baton are used to commit the move.
5750  *
5751  * - The move operation will be immediately committed.
5752  *
5753  * If @a src_paths are working copy paths:
5754  *
5755  * - @a dst_path must also be a working copy path.
5756  *
5757  * - @a ctx->log_msg_func3 and @a ctx->log_msg_baton3 are ignored.
5758  *
5759  * - This is a scheduling operation. No changes will happen to the
5760  * repository until a commit occurs. This scheduling can be removed
5761  * with svn_client_revert2(). If one of @a src_paths is a file it is
5762  * removed from the working copy immediately. If one of @a src_path
5763  * is a directory it will remain in the working copy but all the files,
5764  * and unversioned items, it contains will be removed.
5765  *
5766  * If @a src_paths has only one item, attempt to move it to @a dst_path. If
5767  * @a move_as_child is TRUE and @a dst_path already exists, attempt to move the
5768  * item as a child of @a dst_path. If @a move_as_child is FALSE and
5769  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
5770  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
5771  * URL.
5772  *
5773  * If @a src_paths has multiple items, and @a move_as_child is TRUE, all
5774  * @a src_paths are moved as children of @a dst_path. If any child of
5775  * @a dst_path already exists with the same name any item in @a src_paths,
5776  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
5777  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
5778  *
5779  * If @a src_paths has multiple items, and @a move_as_child is FALSE, fail
5780  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
5781  *
5782  * If @a make_parents is TRUE, create any non-existent parent directories
5783  * also. Otherwise, the parent of @a dst_path must already exist.
5784  *
5785  * If @a allow_mixed_revisions is @c FALSE, #SVN_ERR_WC_MIXED_REVISIONS
5786  * will be raised if the move source is a mixed-revision subtree.
5787  * If @a allow_mixed_revisions is TRUE, a mixed-revision move source is
5788  * allowed but the move will degrade to a copy and a delete without local
5789  * move tracking. This parameter should be set to FALSE except where backwards
5790  * compatibility to svn_client_move6() is required.
5791  *
5792  * If @a metadata_only is @c TRUE and moving a file in a working copy,
5793  * everything in the metadata is updated as if the node is moved, but the
5794  * actual disk move operation is not performed. This feature is useful for
5795  * clients that want to keep the working copy in sync while the actual working
5796  * copy is updated by some other task.
5797  *
5798  * If non-NULL, @a revprop_table is a hash table holding additional,
5799  * custom revision properties (<tt>const char *</tt> names mapped to
5800  * <tt>svn_string_t *</tt> values) to be set on the new revision in
5801  * the event that this is a committing operation. This table cannot
5802  * contain any standard Subversion properties.
5803  *
5804  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo that
5805  * this function can use to query for a commit log message when one is needed.
5806  *
5807  * If @a ctx->notify_func2 is non-NULL, then for each item moved, call
5808  * @a ctx->notify_func2 with the @a ctx->notify_baton2 twice, once to indicate
5809  * the deletion of the moved thing, and once to indicate the addition of
5810  * the new location of the thing.
5811  *
5812  * ### Is this really true? What about svn_wc_notify_commit_replaced()? ###
5813  *
5814  * If @a commit_callback is non-NULL, then for each successful commit, call
5815  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
5816  * the commit.
5817  *
5818  * @since New in 1.8.
5819  */
5820 svn_error_t *
5821 svn_client_move7(const apr_array_header_t *src_paths,
5822  const char *dst_path,
5823  svn_boolean_t move_as_child,
5824  svn_boolean_t make_parents,
5825  svn_boolean_t allow_mixed_revisions,
5826  svn_boolean_t metadata_only,
5827  const apr_hash_t *revprop_table,
5828  svn_commit_callback2_t commit_callback,
5829  void *commit_baton,
5830  svn_client_ctx_t *ctx,
5831  apr_pool_t *pool);
5832 
5833 /**
5834  * Similar to svn_client_move7(), but with @a allow_mixed_revisions always
5835  * set to @c TRUE and @a metadata_only always to @c FALSE.
5836  *
5837  * @since New in 1.7.
5838  * @deprecated Provided for backward compatibility with the 1.7 API.
5839  */
5841 svn_error_t *
5842 svn_client_move6(const apr_array_header_t *src_paths,
5843  const char *dst_path,
5844  svn_boolean_t move_as_child,
5845  svn_boolean_t make_parents,
5846  const apr_hash_t *revprop_table,
5847  svn_commit_callback2_t commit_callback,
5848  void *commit_baton,
5849  svn_client_ctx_t *ctx,
5850  apr_pool_t *pool);
5851 
5852 /**
5853  * Similar to svn_client_move6(), but returns the commit info in
5854  * @a *commit_info_p rather than through a callback function.
5855  *
5856  * A WC-to-WC move will include any modified and/or unversioned children.
5857  * @a force is ignored.
5858  *
5859  * @since New in 1.5.
5860  * @deprecated Provided for backward compatibility with the 1.6 API.
5861  */
5863 svn_error_t *
5864 svn_client_move5(svn_commit_info_t **commit_info_p,
5865  const apr_array_header_t *src_paths,
5866  const char *dst_path,
5867  svn_boolean_t force,
5868  svn_boolean_t move_as_child,
5869  svn_boolean_t make_parents,
5870  const apr_hash_t *revprop_table,
5871  svn_client_ctx_t *ctx,
5872  apr_pool_t *pool);
5873 
5874 /**
5875  * Similar to svn_client_move5(), with only one @a src_path, @a
5876  * move_as_child set to @c FALSE, @a revprop_table passed as NULL, and
5877  * @a make_parents set to @c FALSE.
5878  *
5879  * Note: The behaviour of @a force changed in 1.5 (r860885 and r861421), when
5880  * the 'move' semantics were improved to just move the source including any
5881  * modified and/or unversioned items in it. Before that, @a force
5882  * controlled what happened to such items, but now @a force is ignored.
5883  *
5884  * @since New in 1.4.
5885  *
5886  * @deprecated Provided for backward compatibility with the 1.4 API.
5887  */
5889 svn_error_t *
5890 svn_client_move4(svn_commit_info_t **commit_info_p,
5891  const char *src_path,
5892  const char *dst_path,
5893  svn_boolean_t force,
5894  svn_client_ctx_t *ctx,
5895  apr_pool_t *pool);
5896 
5897 /**
5898  * Similar to svn_client_move4(), with the difference that if @a dst_path
5899  * already exists and is a directory, move the item into that directory,
5900  * keeping its name (the last component of @a src_path).
5901  *
5902  * @since New in 1.3.
5903  *
5904  * @deprecated Provided for backward compatibility with the 1.3 API.
5905  */
5907 svn_error_t *
5908 svn_client_move3(svn_commit_info_t **commit_info_p,
5909  const char *src_path,
5910  const char *dst_path,
5911  svn_boolean_t force,
5912  svn_client_ctx_t *ctx,
5913  apr_pool_t *pool);
5914 
5915 /**
5916  * Similar to svn_client_move3(), but uses #svn_client_commit_info_t
5917  * for @a commit_info_p.
5918  *
5919  * @deprecated Provided for backward compatibility with the 1.2 API.
5920  *
5921  * @since New in 1.2.
5922  */
5924 svn_error_t *
5926  const char *src_path,
5927  const char *dst_path,
5928  svn_boolean_t force,
5929  svn_client_ctx_t *ctx,
5930  apr_pool_t *pool);
5931 
5932 /**
5933  * Similar to svn_client_move2(), but an extra argument @a src_revision
5934  * must be passed. This has no effect, but must be of kind
5935  * #svn_opt_revision_unspecified or #svn_opt_revision_head,
5936  * otherwise error #SVN_ERR_UNSUPPORTED_FEATURE is returned.
5937  *
5938  * @deprecated Provided for backward compatibility with the 1.1 API.
5939  */
5941 svn_error_t *
5943  const char *src_path,
5944  const svn_opt_revision_t *src_revision,
5945  const char *dst_path,
5946  svn_boolean_t force,
5947  svn_client_ctx_t *ctx,
5948  apr_pool_t *pool);
5949 
5950 /** @} */
5951 
5952 
5953 /** Properties
5954  *
5955  * Note that certain svn-controlled properties must always have their
5956  * values set and stored in UTF8 with LF line endings. When
5957  * retrieving these properties, callers must convert the values back
5958  * to native locale and native line-endings before displaying them to
5959  * the user. For help with this task, see
5960  * svn_prop_needs_translation(), svn_subst_translate_string(), and
5961  * svn_subst_detranslate_string().
5962  *
5963  * @defgroup svn_client_prop_funcs Property functions
5964  * @{
5965  */
5966 
5967 
5968 /**
5969  * Set @a propname to @a propval on @a url. A @a propval of @c NULL will
5970  * delete the property.
5971  *
5972  * Immediately attempt to commit the property change in the repository,
5973  * using the authentication baton in @a ctx and @a
5974  * ctx->log_msg_func3/@a ctx->log_msg_baton3.
5975  *
5976  * If the property has changed on @a url since revision
5977  * @a base_revision_for_url (which must not be #SVN_INVALID_REVNUM), no
5978  * change will be made and an error will be returned.
5979  *
5980  * If non-NULL, @a revprop_table is a hash table holding additional,
5981  * custom revision properties (<tt>const char *</tt> names mapped to
5982  * <tt>svn_string_t *</tt> values) to be set on the new revision. This
5983  * table cannot contain any standard Subversion properties.
5984  *
5985  * If @a commit_callback is non-NULL, then call @a commit_callback with
5986  * @a commit_baton and a #svn_commit_info_t for the commit.
5987  *
5988  * If @a propname is an svn-controlled property (i.e. prefixed with
5989  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
5990  * the value is UTF8-encoded and uses LF line-endings.
5991  *
5992  * If @a skip_checks is TRUE, do no validity checking. But if @a
5993  * skip_checks is FALSE, and @a propname is not a valid property for @a
5994  * url, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the property is
5995  * not appropriate for @a url), or * #SVN_ERR_BAD_MIME_TYPE (if @a propname
5996  * is "svn:mime-type", but @a propval is not a valid mime-type).
5997  *
5998  * Use @a scratch_pool for all memory allocation.
5999  *
6000  * @since New in 1.7.
6001  */
6002 svn_error_t *
6003 svn_client_propset_remote(const char *propname,
6004  const svn_string_t *propval,
6005  const char *url,
6006  svn_boolean_t skip_checks,
6007  svn_revnum_t base_revision_for_url,
6008  const apr_hash_t *revprop_table,
6009  svn_commit_callback2_t commit_callback,
6010  void *commit_baton,
6011  svn_client_ctx_t *ctx,
6012  apr_pool_t *scratch_pool);
6013 
6014 /**
6015  * Set @a propname to @a propval on each (const char *) target in @a
6016  * targets. The targets must be all working copy paths. A @a propval
6017  * of @c NULL will delete the property.
6018  *
6019  * If @a depth is #svn_depth_empty, set the property on each member of
6020  * @a targets only; if #svn_depth_files, set it on @a targets and their
6021  * file children (if any); if #svn_depth_immediates, on @a targets and all
6022  * of their immediate children (both files and directories); if
6023  * #svn_depth_infinity, on @a targets and everything beneath them.
6024  *
6025  * @a changelists is an array of <tt>const char *</tt> changelist
6026  * names, used as a restrictive filter on items whose properties are
6027  * set; that is, don't set properties on any item unless it's a member
6028  * of one of those changelists. If @a changelists is empty (or
6029  * altogether @c NULL), no changelist filtering occurs.
6030  *
6031  * If @a propname is an svn-controlled property (i.e. prefixed with
6032  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
6033  * the value is UTF8-encoded and uses LF line-endings.
6034  *
6035  * If @a skip_checks is TRUE, do no validity checking. But if @a
6036  * skip_checks is FALSE, and @a propname is not a valid property for @a
6037  * targets, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the
6038  * property is not appropriate for @a targets), or
6039  * #SVN_ERR_BAD_MIME_TYPE (if @a propname is "svn:mime-type", but @a
6040  * propval is not a valid mime-type).
6041  *
6042  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
6043  * ctx->cancel_baton at various places during the operation.
6044  *
6045  * Use @a scratch_pool for all memory allocation.
6046  *
6047  * @since New in 1.7.
6048  */
6049 svn_error_t *
6050 svn_client_propset_local(const char *propname,
6051  const svn_string_t *propval,
6052  const apr_array_header_t *targets,
6053  svn_depth_t depth,
6054  svn_boolean_t skip_checks,
6055  const apr_array_header_t *changelists,
6056  svn_client_ctx_t *ctx,
6057  apr_pool_t *scratch_pool);
6058 
6059 /**
6060  * An amalgamation of svn_client_propset_local() and
6061  * svn_client_propset_remote() that takes only a single target, and
6062  * returns the commit info in @a *commit_info_p rather than through a
6063  * callback function.
6064  *
6065  * @since New in 1.5.
6066  * @deprecated Provided for backward compatibility with the 1.6 API.
6067  */
6069 svn_error_t *
6070 svn_client_propset3(svn_commit_info_t **commit_info_p,
6071  const char *propname,
6072  const svn_string_t *propval,
6073  const char *target,
6074  svn_depth_t depth,
6075  svn_boolean_t skip_checks,
6076  svn_revnum_t base_revision_for_url,
6077  const apr_array_header_t *changelists,
6078  const apr_hash_t *revprop_table,
6079  svn_client_ctx_t *ctx,
6080  apr_pool_t *pool);
6081 
6082 /**
6083  * Like svn_client_propset3(), but with @a base_revision_for_url
6084  * always #SVN_INVALID_REVNUM; @a commit_info_p always @c NULL; @a
6085  * changelists always @c NULL; @a revprop_table always @c NULL; and @a
6086  * depth set according to @a recurse: if @a recurse is TRUE, @a depth
6087  * is #svn_depth_infinity, else #svn_depth_empty.
6088  *
6089  * @deprecated Provided for backward compatibility with the 1.4 API.
6090  */
6092 svn_error_t *
6093 svn_client_propset2(const char *propname,
6094  const svn_string_t *propval,
6095  const char *target,
6096  svn_boolean_t recurse,
6097  svn_boolean_t skip_checks,
6098  svn_client_ctx_t *ctx,
6099  apr_pool_t *pool);
6100 
6101 /**
6102  * Like svn_client_propset2(), but with @a skip_checks always FALSE and a
6103  * newly created @a ctx.
6104  *
6105  * @deprecated Provided for backward compatibility with the 1.1 API.
6106  */
6108 svn_error_t *
6109 svn_client_propset(const char *propname,
6110  const svn_string_t *propval,
6111  const char *target,
6112  svn_boolean_t recurse,
6113  apr_pool_t *pool);
6114 
6115 /** Set @a propname to @a propval on revision @a revision in the repository
6116  * represented by @a URL. Use the authentication baton in @a ctx for
6117  * authentication, and @a pool for all memory allocation. Return the actual
6118  * rev affected in @a *set_rev. A @a propval of @c NULL will delete the
6119  * property.
6120  *
6121  * If @a original_propval is non-NULL, then just before setting the
6122  * new value, check that the old value matches @a original_propval;
6123  * if they do not match, return the error #SVN_ERR_RA_OUT_OF_DATE.
6124  * This is to help clients support interactive editing of revprops:
6125  * without this check, the window during which the property may change
6126  * underneath the user is as wide as the amount of time the user
6127  * spends editing the property. With this check, the window is
6128  * reduced to a small, constant amount of time right before we set the
6129  * new value. (To check that an old value is still non-existent, set
6130  * @a original_propval->data to NULL, and @a original_propval->len is
6131  * ignored.)
6132  * If the server advertises #SVN_RA_CAPABILITY_ATOMIC_REVPROPS, the
6133  * check of @a original_propval is done atomically.
6134  *
6135  * Note: the representation of "property is not set" in @a
6136  * original_propval differs from the representation in other APIs
6137  * (such as svn_fs_change_rev_prop2() and svn_ra_change_rev_prop2()).
6138  *
6139  * If @a force is TRUE, allow newlines in the author property.
6140  *
6141  * If @a propname is an svn-controlled property (i.e. prefixed with
6142  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
6143  * the value UTF8-encoded and uses LF line-endings.
6144  *
6145  * Note that unlike its cousin svn_client_propset3(), this routine
6146  * doesn't affect the working copy at all; it's a pure network
6147  * operation that changes an *unversioned* property attached to a
6148  * revision. This can be used to tweak log messages, dates, authors,
6149  * and the like. Be careful: it's a lossy operation.
6150 
6151  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
6152  * functions and baton which are called upon successful setting of the
6153  * property.
6154  *
6155  * Also note that unless the administrator creates a
6156  * pre-revprop-change hook in the repository, this feature will fail.
6157  *
6158  * @since New in 1.6.
6159  */
6160 svn_error_t *
6161 svn_client_revprop_set2(const char *propname,
6162  const svn_string_t *propval,
6163  const svn_string_t *original_propval,
6164  const char *URL,
6165  const svn_opt_revision_t *revision,
6166  svn_revnum_t *set_rev,
6167  svn_boolean_t force,
6168  svn_client_ctx_t *ctx,
6169  apr_pool_t *pool);
6170 
6171 /**
6172  * Similar to svn_client_revprop_set2(), but with @a original_propval
6173  * always @c NULL.
6174  *
6175  * @deprecated Provided for backward compatibility with the 1.5 API.
6176  */
6178 svn_error_t *
6179 svn_client_revprop_set(const char *propname,
6180  const svn_string_t *propval,
6181  const char *URL,
6182  const svn_opt_revision_t *revision,
6183  svn_revnum_t *set_rev,
6184  svn_boolean_t force,
6185  svn_client_ctx_t *ctx,
6186  apr_pool_t *pool);
6187 
6188 /**
6189  * Set @a *props to a hash table whose keys are absolute paths or URLs
6190  * of items on which property @a propname is explicitly set, and whose
6191  * values are <tt>svn_string_t *</tt> representing the property value for
6192  * @a propname at that path.
6193  *
6194  * If @a inherited_props is not @c NULL, then set @a *inherited_props to a
6195  * depth-first ordered array of #svn_prop_inherited_item_t * structures
6196  * representing the properties inherited by @a target. If @a target is a
6197  * working copy path, then properties inherited by @a target as far as the
6198  * root of the working copy are obtained from the working copy's actual
6199  * property values. Properties inherited from above the working copy root
6200  * come from the inherited properties cache. If @a target is a URL, then
6201  * the inherited properties come from the repository. If @a inherited_props
6202  * is not @c NULL and no inheritable properties are found, then set
6203  * @a *inherited_props to an empty array.
6204  *
6205  * The #svn_prop_inherited_item_t->path_or_url members of the
6206  * #svn_prop_inherited_item_t * structures in @a *inherited_props are
6207  * URLs if @a target is a URL or if @a target is a working copy path but the
6208  * property represented by the structure is above the working copy root (i.e.
6209  * the inherited property is from the cache). In all other cases the
6210  * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
6211  * paths.
6212  *
6213  * Allocate @a *props (including keys and values) and @a *inherited_props
6214  * (including its elements) in @a result_pool, use @a scratch_pool for
6215  * temporary allocations.
6216  *
6217  * @a target is a WC absolute path or a URL.
6218  *
6219  * Don't store any path, not even @a target, if it does not have a
6220  * property named @a propname.
6221  *
6222  * If @a revision->kind is #svn_opt_revision_unspecified, then: get
6223  * properties from the working copy if @a target is a working copy
6224  * path, or from the repository head if @a target is a URL. Else get
6225  * the properties as of @a revision. The actual node revision
6226  * selected is determined by the path as it exists in @a peg_revision.
6227  * If @a peg_revision->kind is #svn_opt_revision_unspecified, then
6228  * it defaults to #svn_opt_revision_head for URLs or
6229  * #svn_opt_revision_working for WC targets. Use the authentication
6230  * baton in @a ctx for authentication if contacting the repository.
6231  * If @a actual_revnum is not @c NULL, the actual revision number used
6232  * for the fetch is stored in @a *actual_revnum.
6233  *
6234  * If @a depth is #svn_depth_empty, fetch the property from
6235  * @a target only; if #svn_depth_files, fetch from @a target and its
6236  * file children (if any); if #svn_depth_immediates, from @a target
6237  * and all of its immediate children (both files and directories); if
6238  * #svn_depth_infinity, from @a target and everything beneath it.
6239  *
6240  * @a changelists is an array of <tt>const char *</tt> changelist
6241  * names, used as a restrictive filter on items whose properties are
6242  * gotten; that is, don't get @a propname on any item unless it's a member
6243  * of one of those changelists. If @a changelists is empty (or
6244  * altogether @c NULL), no changelist filtering occurs.
6245  *
6246  * If error, don't touch @a *props, otherwise @a *props is a hash table
6247  * even if empty.
6248  *
6249  * This function returns SVN_ERR_UNVERSIONED_RESOURCE when it is called on
6250  * unversioned nodes.
6251  *
6252  * @since New in 1.8.
6253  */
6254 svn_error_t *
6255 svn_client_propget5(apr_hash_t **props,
6256  apr_array_header_t **inherited_props,
6257  const char *propname,
6258  const char *target, /* abspath or URL */
6259  const svn_opt_revision_t *peg_revision,
6260  const svn_opt_revision_t *revision,
6261  svn_revnum_t *actual_revnum,
6262  svn_depth_t depth,
6263  const apr_array_header_t *changelists,
6264  svn_client_ctx_t *ctx,
6265  apr_pool_t *result_pool,
6266  apr_pool_t *scratch_pool);
6267 
6268 /**
6269  * Similar to svn_client_propget5 but with @a inherited_props always
6270  * passed as NULL.
6271  *
6272  * @since New in 1.7.
6273  * @deprecated Provided for backward compatibility with the 1.7 API.
6274  */
6276 svn_error_t *
6277 svn_client_propget4(apr_hash_t **props,
6278  const char *propname,
6279  const char *target, /* abspath or URL */
6280  const svn_opt_revision_t *peg_revision,
6281  const svn_opt_revision_t *revision,
6282  svn_revnum_t *actual_revnum,
6283  svn_depth_t depth,
6284  const apr_array_header_t *changelists,
6285  svn_client_ctx_t *ctx,
6286  apr_pool_t *result_pool,
6287  apr_pool_t *scratch_pool);
6288 
6289 /**
6290  * Similar to svn_client_propget4(), but with the following change to the
6291  * output hash keys: keys are `<tt>char *</tt>' paths, prefixed by
6292  * @a target, which is a working copy path or a URL.
6293  *
6294  * This function returns SVN_ERR_ENTRY_NOT_FOUND where svn_client_propget4
6295  * would return SVN_ERR_UNVERSIONED_RESOURCE.
6296  *
6297  * @since New in 1.5.
6298  * @deprecated Provided for backward compatibility with the 1.6 API.
6299  */
6301 svn_error_t *
6302 svn_client_propget3(apr_hash_t **props,
6303  const char *propname,
6304  const char *target,
6305  const svn_opt_revision_t *peg_revision,
6306  const svn_opt_revision_t *revision,
6307  svn_revnum_t *actual_revnum,
6308  svn_depth_t depth,
6309  const apr_array_header_t *changelists,
6310  svn_client_ctx_t *ctx,
6311  apr_pool_t *pool);
6312 
6313 /**
6314  * Similar to svn_client_propget3(), except that @a actual_revnum and
6315  * @a changelists are always @c NULL, and @a depth is set according to
6316  * @a recurse: if @a recurse is TRUE, then @a depth is
6317  * #svn_depth_infinity, else #svn_depth_empty.
6318  *
6319  * @deprecated Provided for backward compatibility with the 1.4 API.
6320  */
6322 svn_error_t *
6323 svn_client_propget2(apr_hash_t **props,
6324  const char *propname,
6325  const char *target,
6326  const svn_opt_revision_t *peg_revision,
6327  const svn_opt_revision_t *revision,
6328  svn_boolean_t recurse,
6329  svn_client_ctx_t *ctx,
6330  apr_pool_t *pool);
6331 
6332 /**
6333  * Similar to svn_client_propget2(), except that @a peg_revision is
6334  * always the same as @a revision.
6335  *
6336  * @deprecated Provided for backward compatibility with the 1.1 API.
6337  */
6339 svn_error_t *
6340 svn_client_propget(apr_hash_t **props,
6341  const char *propname,
6342  const char *target,
6343  const svn_opt_revision_t *revision,
6344  svn_boolean_t recurse,
6345  svn_client_ctx_t *ctx,
6346  apr_pool_t *pool);
6347 
6348 /** Set @a *propval to the value of @a propname on revision @a revision
6349  * in the repository represented by @a URL. Use the authentication baton
6350  * in @a ctx for authentication, and @a pool for all memory allocation.
6351  * Return the actual rev queried in @a *set_rev.
6352  *
6353  * If @a propname does not exist on @a revision, set @a *propval to @c NULL.
6354  *
6355  * Note that unlike its cousin svn_client_propget(), this routine
6356  * doesn't affect the working copy at all; it's a pure network
6357  * operation that queries an *unversioned* property attached to a
6358  * revision. This can query log messages, dates, authors, and the
6359  * like.
6360  */
6361 svn_error_t *
6362 svn_client_revprop_get(const char *propname,
6363  svn_string_t **propval,
6364  const char *URL,
6365  const svn_opt_revision_t *revision,
6366  svn_revnum_t *set_rev,
6367  svn_client_ctx_t *ctx,
6368  apr_pool_t *pool);
6369 
6370 /**
6371  * Invoke @a receiver with @a receiver_baton to return the regular explicit, and
6372  * possibly the inherited, properties of @a target, a URL or working copy path.
6373  * @a receiver will be called for each path encountered.
6374  *
6375  * @a target is a WC path or a URL.
6376  *
6377  * If @a revision->kind is #svn_opt_revision_unspecified, then get the
6378  * explicit (and possibly the inherited) properties from the working copy,
6379  * if @a target is a working copy path, or from the repository head if
6380  * @a target is a URL. Else get the properties as of @a revision.
6381  * The actual node revision selected is determined by the path as it exists
6382  * in @a peg_revision. If @a peg_revision->kind is
6383  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
6384  * for URLs or #svn_opt_revision_working for WC targets. Use the
6385  * authentication baton cached in @a ctx for authentication if contacting
6386  * the repository.
6387  *
6388  * If @a depth is #svn_depth_empty, list only the properties of
6389  * @a target itself. If @a depth is #svn_depth_files, and
6390  * @a target is a directory, list the properties of @a target
6391  * and its file entries. If #svn_depth_immediates, list the properties
6392  * of its immediate file and directory entries. If #svn_depth_infinity,
6393  * list the properties of its file entries and recurse (with
6394  * #svn_depth_infinity) on directory entries. #svn_depth_unknown is
6395  * equivalent to #svn_depth_empty. All other values produce undefined
6396  * results.
6397  *
6398  * @a changelists is an array of <tt>const char *</tt> changelist
6399  * names, used as a restrictive filter on items whose properties are
6400  * listed; that is, don't list properties on any item unless it's a member
6401  * of one of those changelists. If @a changelists is empty (or
6402  * altogether @c NULL), no changelist filtering occurs.
6403  *
6404  * If @a get_target_inherited_props is true, then also return any inherited
6405  * properties when @a receiver is called for @a target. If @a target is a
6406  * working copy path, then properties inherited by @a target as far as the
6407  * root of the working copy are obtained from the working copy's actual
6408  * property values. Properties inherited from above the working copy
6409  * root come from the inherited properties cache. If @a target is a URL,
6410  * then the inherited properties come from the repository.
6411  * If @a get_target_inherited_props is false, then no inherited properties
6412  * are returned to @a receiver.
6413  *
6414  * If @a target is not found, return the error #SVN_ERR_ENTRY_NOT_FOUND.
6415  *
6416  * @since New in 1.8.
6417  */
6418 svn_error_t *
6419 svn_client_proplist4(const char *target,
6420  const svn_opt_revision_t *peg_revision,
6421  const svn_opt_revision_t *revision,
6422  svn_depth_t depth,
6423  const apr_array_header_t *changelists,
6424  svn_boolean_t get_target_inherited_props,
6425  svn_proplist_receiver2_t receiver,
6426  void *receiver_baton,
6427  svn_client_ctx_t *ctx,
6428  apr_pool_t *scratch_pool);
6429 
6430 /**
6431  * Similar to svn_client_proplist4(), except that the @a receiver type
6432  * is a #svn_proplist_receiver_t, @a get_target_inherited_props is
6433  * always passed NULL, and there is no separate scratch pool.
6434  *
6435  * @since New in 1.5.
6436  * @deprecated Provided for backward compatibility with the 1.7 API.
6437  */
6439 svn_error_t *
6440 svn_client_proplist3(const char *target,
6441  const svn_opt_revision_t *peg_revision,
6442  const svn_opt_revision_t *revision,
6443  svn_depth_t depth,
6444  const apr_array_header_t *changelists,
6445  svn_proplist_receiver_t receiver,
6446  void *receiver_baton,
6447  svn_client_ctx_t *ctx,
6448  apr_pool_t *pool);
6449 
6450 /**
6451  * Similar to svn_client_proplist3(), except the properties are
6452  * returned as an array of #svn_client_proplist_item_t * structures
6453  * instead of by invoking the receiver function, there's no support
6454  * for @a changelists filtering, and @a recurse is used instead of a
6455  * #svn_depth_t parameter (FALSE corresponds to #svn_depth_empty,
6456  * and TRUE to #svn_depth_infinity).
6457  *
6458  * @since New in 1.2.
6459  *
6460  * @deprecated Provided for backward compatibility with the 1.4 API.
6461  */
6463 svn_error_t *
6464 svn_client_proplist2(apr_array_header_t **props,
6465  const char *target,
6466  const svn_opt_revision_t *peg_revision,
6467  const svn_opt_revision_t *revision,
6468  svn_boolean_t recurse,
6469  svn_client_ctx_t *ctx,
6470  apr_pool_t *pool);
6471 
6472 /**
6473  * Similar to svn_client_proplist2(), except that @a peg_revision is
6474  * always the same as @a revision.
6475  *
6476  * @deprecated Provided for backward compatibility with the 1.1 API.
6477  */
6479 svn_error_t *
6480 svn_client_proplist(apr_array_header_t **props,
6481  const char *target,
6482  const svn_opt_revision_t *revision,
6483  svn_boolean_t recurse,
6484  svn_client_ctx_t *ctx,
6485  apr_pool_t *pool);
6486 
6487 /** Set @a *props to a hash of the revision props attached to @a revision in
6488  * the repository represented by @a URL. Use the authentication baton cached
6489  * in @a ctx for authentication, and @a pool for all memory allocation.
6490  * Return the actual rev queried in @a *set_rev.
6491  *
6492  * The allocated hash maps (<tt>const char *</tt>) property names to
6493  * (#svn_string_t *) property values.
6494  *
6495  * Note that unlike its cousin svn_client_proplist(), this routine
6496  * doesn't read a working copy at all; it's a pure network operation
6497  * that reads *unversioned* properties attached to a revision.
6498  */
6499 svn_error_t *
6500 svn_client_revprop_list(apr_hash_t **props,
6501  const char *URL,
6502  const svn_opt_revision_t *revision,
6503  svn_revnum_t *set_rev,
6504  svn_client_ctx_t *ctx,
6505  apr_pool_t *pool);
6506 /** @} */
6507 
6508 
6509 /**
6510  * @defgroup Export Export a tree from version control.
6511  *
6512  * @{
6513  */
6514 
6515 /**
6516  * Export the contents of either a subversion repository or a
6517  * subversion working copy into a 'clean' directory (meaning a
6518  * directory with no administrative directories). If @a result_rev
6519  * is not @c NULL and the path being exported is a repository URL, set
6520  * @a *result_rev to the value of the revision actually exported (set
6521  * it to #SVN_INVALID_REVNUM for local exports).
6522  *
6523  * @a from_path_or_url is either the path the working copy on disk, or
6524  * a URL to the repository you wish to export.
6525  *
6526  * When exporting a directory, @a to_path is the path to the directory
6527  * where you wish to create the exported tree; when exporting a file, it
6528  * is the path of the file that will be created. If @a to_path is the
6529  * empty path, then the basename of the export file/directory in the repository
6530  * will be used. If @a to_path represents an existing directory, and a
6531  * file is being exported, then a file with the that basename will be
6532  * created under that directory (as with 'copy' operations).
6533  *
6534  * @a peg_revision is the revision where the path is first looked up
6535  * when exporting from a repository. If @a peg_revision->kind is
6536  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
6537  * for URLs or #svn_opt_revision_working for WC targets.
6538  *
6539  * @a revision is the revision that should be exported.
6540  *
6541  * @a peg_revision and @a revision must not be @c NULL.
6542  *
6543  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
6544  * functions and baton which are passed to svn_client_checkout() when
6545  * exporting from a repository.
6546  *
6547  * @a ctx is a context used for authentication in the repository case.
6548  *
6549  * @a overwrite if TRUE will cause the export to overwrite files or
6550  * directories.
6551  *
6552  * If @a ignore_externals is set, don't process externals definitions
6553  * as part of this operation.
6554  *
6555  * If @a ignore_keywords is set, don't expand keywords as part of this
6556  * operation.
6557  *
6558  * @a native_eol allows you to override the standard eol marker on the
6559  * platform you are running on. Can be either "LF", "CR" or "CRLF" or
6560  * NULL. If NULL will use the standard eol marker. Any other value
6561  * will cause the #SVN_ERR_IO_UNKNOWN_EOL error to be returned.
6562  *
6563  * If @a depth is #svn_depth_infinity, export fully recursively. Else
6564  * if it is #svn_depth_immediates, export @a from_path_or_url and its
6565  * immediate children (if any), but with subdirectories empty and at
6566  * #svn_depth_empty. Else if #svn_depth_files, export @a
6567  * from_path_or_url and its immediate file children (if any) only. If
6568  * @a depth is #svn_depth_empty, then export exactly @a
6569  * from_path_or_url and none of its children.
6570  *
6571  * All allocations are done in @a pool.
6572  *
6573  * @since New in 1.7.
6574  */
6575 svn_error_t *
6576 svn_client_export5(svn_revnum_t *result_rev,
6577  const char *from_path_or_url,
6578  const char *to_path,
6579  const svn_opt_revision_t *peg_revision,
6580  const svn_opt_revision_t *revision,
6581  svn_boolean_t overwrite,
6582  svn_boolean_t ignore_externals,
6583  svn_boolean_t ignore_keywords,
6584  svn_depth_t depth,
6585  const char *native_eol,
6586  svn_client_ctx_t *ctx,
6587  apr_pool_t *pool);
6588 
6589 /**
6590  * Similar to svn_client_export5(), but with @a ignore_keywords set
6591  * to FALSE.
6592  *
6593  * @deprecated Provided for backward compatibility with the 1.6 API.
6594  * @since New in 1.5.
6595  */
6597 svn_error_t *
6598 svn_client_export4(svn_revnum_t *result_rev,
6599  const char *from_path_or_url,
6600  const char *to_path,
6601  const svn_opt_revision_t *peg_revision,
6602  const svn_opt_revision_t *revision,
6603  svn_boolean_t overwrite,
6604  svn_boolean_t ignore_externals,
6605  svn_depth_t depth,
6606  const char *native_eol,
6607  svn_client_ctx_t *ctx,
6608  apr_pool_t *pool);
6609 
6610 
6611 /**
6612  * Similar to svn_client_export4(), but with @a depth set according to
6613  * @a recurse: if @a recurse is TRUE, set @a depth to
6614  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
6615  * #svn_depth_files.
6616  *
6617  * @deprecated Provided for backward compatibility with the 1.4 API.
6618  *
6619  * @since New in 1.2.
6620  */
6622 svn_error_t *
6623 svn_client_export3(svn_revnum_t *result_rev,
6624  const char *from_path_or_url,
6625  const char *to_path,
6626  const svn_opt_revision_t *peg_revision,
6627  const svn_opt_revision_t *revision,
6628  svn_boolean_t overwrite,
6629  svn_boolean_t ignore_externals,
6630  svn_boolean_t recurse,
6631  const char *native_eol,
6632  svn_client_ctx_t *ctx,
6633  apr_pool_t *pool);
6634 
6635 
6636 /**
6637  * Similar to svn_client_export3(), but with @a peg_revision
6638  * always set to #svn_opt_revision_unspecified, @a overwrite set to
6639  * the value of @a force, @a ignore_externals always FALSE, and
6640  * @a recurse always TRUE.
6641  *
6642  * @since New in 1.1.
6643  * @deprecated Provided for backward compatibility with the 1.1 API.
6644  */
6646 svn_error_t *
6647 svn_client_export2(svn_revnum_t *result_rev,
6648  const char *from_path_or_url,
6649  const char *to_path,
6650  svn_opt_revision_t *revision,
6651  svn_boolean_t force,
6652  const char *native_eol,
6653  svn_client_ctx_t *ctx,
6654  apr_pool_t *pool);
6655 
6656 
6657 /**
6658  * Similar to svn_client_export2(), but with @a native_eol always set
6659  * to NULL.
6660  *
6661  * @deprecated Provided for backward compatibility with the 1.0 API.
6662  */
6664 svn_error_t *
6665 svn_client_export(svn_revnum_t *result_rev,
6666  const char *from_path_or_url,
6667  const char *to_path,
6668  svn_opt_revision_t *revision,
6669  svn_boolean_t force,
6670  svn_client_ctx_t *ctx,
6671  apr_pool_t *pool);
6672 
6673 /** @} */
6674 
6675 /**
6676  * @defgroup List List / ls
6677  *
6678  * @{
6679  */
6680 
6681 /** The type of function invoked by svn_client_list3() to report the details
6682  * of each directory entry being listed.
6683  *
6684  * @a baton is the baton that was passed to the caller. @a path is the
6685  * entry's path relative to @a abs_path; it is the empty path when reporting
6686  * the top node of the list operation. @a dirent contains some or all of
6687  * the directory entry's details, as determined by the caller. @a lock is
6688  * the entry's lock, if it is locked and if lock information is being
6689  * reported by the caller; otherwise @a lock is NULL. @a abs_path is the
6690  * repository path of the top node of the list operation; it is relative to
6691  * the repository root and begins with "/".
6692  *
6693  * If svn_client_list3() was called with @a include_externals set to TRUE,
6694  * @a external_parent_url and @a external_target will be set.
6695  * @a external_parent_url is url of the directory which has the
6696  * externals definitions. @a external_target is the target subdirectory of
6697  * externals definitions which is relative to the parent directory that holds
6698  * the external item.
6699  *
6700  * If external_parent_url and external_target are defined, the item being
6701  * listed is part of the external described by external_parent_url and
6702  * external_target. Else, the item is not part of any external.
6703  * Moreover, we will never mix items which are part of separate
6704  * externals, and will always finish listing an external before listing
6705  * the next one.
6706  *
6707  * @a scratch_pool may be used for temporary allocations.
6708  *
6709  * @since New in 1.8.
6710  */
6711 typedef svn_error_t *(*svn_client_list_func2_t)(
6712  void *baton,
6713  const char *path,
6714  const svn_dirent_t *dirent,
6715  const svn_lock_t *lock,
6716  const char *abs_path,
6717  const char *external_parent_url,
6718  const char *external_target,
6719  apr_pool_t *scratch_pool);
6720 
6721 /**
6722  * Similar to #svn_client_list_func2_t, but without any information about
6723  * externals definitions.
6724  *
6725  * @deprecated Provided for backward compatibility with the 1.7 API.
6726  *
6727  * @since New in 1.4
6728  *
6729  * */
6730 typedef svn_error_t *(*svn_client_list_func_t)(void *baton,
6731  const char *path,
6732  const svn_dirent_t *dirent,
6733  const svn_lock_t *lock,
6734  const char *abs_path,
6735  apr_pool_t *pool);
6736 
6737 /**
6738  * Report the directory entry, and possibly children, for @a
6739  * path_or_url at @a revision. The actual node revision selected is
6740  * determined by the path as it exists in @a peg_revision. If @a
6741  * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
6742  * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
6743  * for WC targets.
6744  *
6745  * Report directory entries by invoking @a list_func/@a baton with @a path
6746  * relative to @a path_or_url. The dirent for @a path_or_url is reported
6747  * using an empty @a path. If @a path_or_url is a directory, also report
6748  * its children. If @a path_or_url is non-existent, return
6749  * #SVN_ERR_FS_NOT_FOUND.
6750  *
6751  * If the @a patterns array of <tt>const char *</tt> is not @c NULL, only
6752  * report paths whose last segment matches one of the specified glob
6753  * patterns. This does not affect the size of the tree nor the number of
6754  * externals being covered.
6755  *
6756  * If @a fetch_locks is TRUE, include locks when reporting directory entries.
6757  *
6758  * If @a include_externals is TRUE, also list all external items
6759  * reached by recursion. @a depth value passed to the original list target
6760  * applies for the externals also.
6761  *
6762  * Use @a scratch_pool for temporary allocations.
6763  *
6764  * Use authentication baton cached in @a ctx to authenticate against the
6765  * repository.
6766  *
6767  * If @a depth is #svn_depth_empty, list just @a path_or_url itself.
6768  * If @a depth is #svn_depth_files, list @a path_or_url and its file
6769  * entries. If #svn_depth_immediates, list its immediate file and
6770  * directory entries. If #svn_depth_infinity, list file entries and
6771  * recurse (with #svn_depth_infinity) on directory entries.
6772  *
6773  * @a dirent_fields controls which fields in the #svn_dirent_t's are
6774  * filled in. To have them totally filled in use #SVN_DIRENT_ALL,
6775  * otherwise simply bitwise OR together the combination of @c SVN_DIRENT_
6776  * fields you care about.
6777  *
6778  * @since New in 1.10.
6779  */
6780 svn_error_t *
6781 svn_client_list4(const char *path_or_url,
6782  const svn_opt_revision_t *peg_revision,
6783  const svn_opt_revision_t *revision,
6784  const apr_array_header_t *patterns,
6785  svn_depth_t depth,
6786  apr_uint32_t dirent_fields,
6787  svn_boolean_t fetch_locks,
6788  svn_boolean_t include_externals,
6789  svn_client_list_func2_t list_func,
6790  void *baton,
6791  svn_client_ctx_t *ctx,
6792  apr_pool_t *scratch_pool);
6793 
6794 /** Similar to svn_client_list4(), but with @a patterns set to @c NULL.
6795  *
6796  * @since New in 1.8.
6797  *
6798  * @deprecated Provided for backwards compatibility with the 1.9 API.
6799  */
6801 svn_error_t *
6802 svn_client_list3(const char *path_or_url,
6803  const svn_opt_revision_t *peg_revision,
6804  const svn_opt_revision_t *revision,
6805  svn_depth_t depth,
6806  apr_uint32_t dirent_fields,
6807  svn_boolean_t fetch_locks,
6808  svn_boolean_t include_externals,
6809  svn_client_list_func2_t list_func,
6810  void *baton,
6811  svn_client_ctx_t *ctx,
6812  apr_pool_t *pool);
6813 
6814 
6815 /** Similar to svn_client_list3(), but with @a include_externals set
6816  * to FALSE, and using a #svn_client_list_func_t as callback.
6817  *
6818  * @since New in 1.5.
6819  *
6820  * @deprecated Provided for backwards compatibility with the 1.7 API.
6821  */
6823 svn_error_t *
6824 svn_client_list2(const char *path_or_url,
6825  const svn_opt_revision_t *peg_revision,
6826  const svn_opt_revision_t *revision,
6827  svn_depth_t depth,
6828  apr_uint32_t dirent_fields,
6829  svn_boolean_t fetch_locks,
6830  svn_client_list_func_t list_func,
6831  void *baton,
6832  svn_client_ctx_t *ctx,
6833  apr_pool_t *pool);
6834 
6835 /**
6836  * Similar to svn_client_list2(), but with @a recurse instead of @a depth.
6837  * If @a recurse is FALSE, pass #svn_depth_immediates for @a depth; else
6838  * pass #svn_depth_infinity.
6839  *
6840  * @since New in 1.4.
6841  *
6842  * @deprecated Provided for backward compatibility with the 1.4 API.
6843  */
6845 svn_error_t *
6846 svn_client_list(const char *path_or_url,
6847  const svn_opt_revision_t *peg_revision,
6848  const svn_opt_revision_t *revision,
6849  svn_boolean_t recurse,
6850  apr_uint32_t dirent_fields,
6851  svn_boolean_t fetch_locks,
6852  svn_client_list_func_t list_func,
6853  void *baton,
6854  svn_client_ctx_t *ctx,
6855  apr_pool_t *pool);
6856 
6857 /**
6858  * Same as svn_client_list(), but always passes #SVN_DIRENT_ALL for
6859  * the @a dirent_fields argument and returns all information in two
6860  * hash tables instead of invoking a callback.
6861  *
6862  * Set @a *dirents to a newly allocated hash of directory entries.
6863  * The @a dirents hash maps entry names (<tt>const char *</tt>) to
6864  * #svn_dirent_t *'s.
6865  *
6866  * If @a locks is not @c NULL, set @a *locks to a hash table mapping
6867  * entry names (<tt>const char *</tt>) to #svn_lock_t *'s.
6868  *
6869  * @since New in 1.3.
6870  *
6871  * @deprecated Provided for backward compatibility with the 1.3 API.
6872  * Use svn_client_list2() instead.
6873  */
6875 svn_error_t *
6876 svn_client_ls3(apr_hash_t **dirents,
6877  apr_hash_t **locks,
6878  const char *path_or_url,
6879  const svn_opt_revision_t *peg_revision,
6880  const svn_opt_revision_t *revision,
6881  svn_boolean_t recurse,
6882  svn_client_ctx_t *ctx,
6883  apr_pool_t *pool);
6884 
6885 /**
6886  * Same as svn_client_ls3(), but without the ability to get locks.
6887  *
6888  * @since New in 1.2.
6889  *
6890  * @deprecated Provided for backward compatibility with the 1.2 API.
6891  * Use svn_client_list2() instead.
6892  */
6894 svn_error_t *
6895 svn_client_ls2(apr_hash_t **dirents,
6896  const char *path_or_url,
6897  const svn_opt_revision_t *peg_revision,
6898  const svn_opt_revision_t *revision,
6899  svn_boolean_t recurse,
6900  svn_client_ctx_t *ctx,
6901  apr_pool_t *pool);
6902 
6903 /**
6904  * Similar to svn_client_ls2() except that @a peg_revision is always
6905  * the same as @a revision.
6906  *
6907  * @deprecated Provided for backward compatibility with the 1.1 API.
6908  * Use svn_client_list2() instead.
6909  */
6911 svn_error_t *
6912 svn_client_ls(apr_hash_t **dirents,
6913  const char *path_or_url,
6914  svn_opt_revision_t *revision,
6915  svn_boolean_t recurse,
6916  svn_client_ctx_t *ctx,
6917  apr_pool_t *pool);
6918 
6919 
6920 /** @} */
6921 
6922 /**
6923  * @defgroup Cat View the contents of a file in the repository.
6924  *
6925  * @{
6926  */
6927 
6928 /**
6929  * Output the content of a file.
6930  *
6931  * @param[out] props Optional output argument to obtain properties.
6932  * @param[in] out The stream to which the content will be written.
6933  * @param[in] path_or_url The path or URL of the file.
6934  * @param[in] peg_revision The peg revision.
6935  * @param[in] revision The operative revision.
6936  * @param[in] expand_keywords When true, keywords (when set) are expanded.
6937  * @param[in] ctx The standard client context, used for possible
6938  * authentication.
6939  *
6940  * @return A pointer to an #svn_error_t of the type (this list is not
6941  * exhaustive): <br>
6942  * An unspecified error if @a revision is of kind
6943  * #svn_opt_revision_previous (or some other kind that requires
6944  * a local path), because the desired revision cannot be
6945  * determined. <br>
6946  * If no error occurred, return #SVN_NO_ERROR.
6947  *
6948  * If @a *props is not NULL it is set to a hash of all the file's
6949  * non-inherited properties. If it is NULL, the properties are only
6950  * used for determining how and if the file should be translated.
6951  *
6952  * @see #svn_client_ctx_t <br> @ref clnt_revisions for
6953  * a discussion of operative and peg revisions.
6954  *
6955  * @since New in 1.9.
6956  */
6957 svn_error_t *
6958 svn_client_cat3(apr_hash_t **props,
6959  svn_stream_t *out,
6960  const char *path_or_url,
6961  const svn_opt_revision_t *peg_revision,
6962  const svn_opt_revision_t *revision,
6963  svn_boolean_t expand_keywords,
6964  svn_client_ctx_t *ctx,
6965  apr_pool_t *result_pool,
6966  apr_pool_t *scratch_pool);
6967 
6968 /**
6969  * Similar to svn_client_cat3() except without the option of directly
6970  * reading the properties, and with @a expand_keywords always TRUE.
6971  *
6972  * @since New in 1.2.
6973  * @deprecated Provided for backward compatibility with the 1.8 API.
6974  */
6976 svn_error_t *
6978  const char *path_or_url,
6979  const svn_opt_revision_t *peg_revision,
6980  const svn_opt_revision_t *revision,
6981  svn_client_ctx_t *ctx,
6982  apr_pool_t *pool);
6983 
6984 
6985 /**
6986  * Similar to svn_client_cat2() except that the peg revision is always
6987  * the same as @a revision.
6988  *
6989  * @deprecated Provided for backward compatibility with the 1.1 API.
6990  */
6992 svn_error_t *
6994  const char *path_or_url,
6995  const svn_opt_revision_t *revision,
6996  svn_client_ctx_t *ctx,
6997  apr_pool_t *pool);
6998 
6999 /** @} end group: cat */
7000 
7001 
7002 
7003 /** Shelving v2, with checkpoints
7004  *
7005  * @defgroup svn_client_shelves_checkpoints Shelves and checkpoints
7006  * @{
7007  */
7008 
7009 /** A shelf.
7010  *
7011  * @warning EXPERIMENTAL.
7012  */
7013 typedef struct svn_client__shelf_t
7014 {
7015  /* Public fields (read-only for public use) */
7016  const char *name;
7017  int max_version; /**< @deprecated */
7018 
7019  /* Private fields */
7020  const char *wc_root_abspath;
7021  const char *shelves_dir;
7022  apr_hash_t *revprops; /**< non-null; allocated in POOL */
7023  svn_client_ctx_t *ctx;
7024  apr_pool_t *pool;
7026 
7027 /** One version of a shelved change-set.
7028  *
7029  * @warning EXPERIMENTAL.
7030  */
7032 {
7033  /* Public fields (read-only for public use) */
7034  svn_client__shelf_t *shelf;
7035  apr_time_t mtime; /**< time-stamp of this version */
7036 
7037  /* Private fields */
7038  const char *files_dir_abspath; /**< abspath of the storage area */
7039  int version_number; /**< version number starting from 1 */
7041 
7042 /** Open an existing shelf or create a new shelf.
7043  *
7044  * Create a new shelf (containing no versions) if a shelf named @a name
7045  * is not found.
7046  *
7047  * The shelf should be closed after use by calling svn_client_shelf_close().
7048  *
7049  * @a local_abspath is any path in the WC and is used to find the WC root.
7050  *
7051  * @warning EXPERIMENTAL.
7052  */
7054 svn_error_t *
7056  const char *name,
7057  const char *local_abspath,
7058  svn_client_ctx_t *ctx,
7059  apr_pool_t *result_pool);
7060 
7061 /** Open an existing shelf named @a name, or error if it doesn't exist.
7062  *
7063  * The shelf should be closed after use by calling svn_client_shelf_close().
7064  *
7065  * @a local_abspath is any path in the WC and is used to find the WC root.
7066  *
7067  * @warning EXPERIMENTAL.
7068  */
7070 svn_error_t *
7072  const char *name,
7073  const char *local_abspath,
7074  svn_client_ctx_t *ctx,
7075  apr_pool_t *result_pool);
7076 
7077 /** Close @a shelf.
7078  *
7079  * If @a shelf is NULL, do nothing; otherwise @a shelf must be an open shelf.
7080  *
7081  * @warning EXPERIMENTAL.
7082  */
7084 svn_error_t *
7086  apr_pool_t *scratch_pool);
7087 
7088 /** Delete the shelf named @a name, or error if it doesn't exist.
7089  *
7090  * @a local_abspath is any path in the WC and is used to find the WC root.
7091  *
7092  * @warning EXPERIMENTAL.
7093  */
7095 svn_error_t *
7096 svn_client__shelf_delete(const char *name,
7097  const char *local_abspath,
7098  svn_boolean_t dry_run,
7099  svn_client_ctx_t *ctx,
7100  apr_pool_t *scratch_pool);
7101 
7102 /** Get an editor that, when driven, will store changes in @a shelf_version.
7103  *
7104  * @warning EXPERIMENTAL.
7105  */
7107 svn_error_t *
7109  void **edit_baton_p,
7110  svn_client__shelf_version_t *shelf_version,
7111  svn_wc_notify_func2_t notify_func,
7112  void *notify_baton,
7113  svn_client_ctx_t *ctx,
7114  apr_pool_t *result_pool);
7115 
7116 /** Save the local modifications found by @a paths, @a depth,
7117  * @a changelists as a new version of @a shelf.
7118  *
7119  * If any paths are shelved, create a new shelf-version and return the new
7120  * shelf-version in @a *new_version_p, else set @a *new_version_p to null.
7121  * @a new_version_p may be null if that output is not wanted; a new shelf-
7122  * version is still saved and may be found through @a shelf.
7123  *
7124  * @a paths are relative to the CWD, or absolute.
7125  *
7126  * For each successfully shelved path: call @a shelved_func (if not null)
7127  * with @a shelved_baton.
7128  *
7129  * If any paths cannot be shelved: if @a not_shelved_func is given, call
7130  * it with @a not_shelved_baton for each such path, and still create a new
7131  * shelf-version if any paths are shelved.
7132  *
7133  * This function does not revert the changes from the WC; use
7134  * svn_client_shelf_unapply() for that.
7135  *
7136  * @warning EXPERIMENTAL.
7137  */
7139 svn_error_t *
7141  svn_client__shelf_t *shelf,
7142  const apr_array_header_t *paths,
7143  svn_depth_t depth,
7144  const apr_array_header_t *changelists,
7145  svn_client_status_func_t shelved_func,
7146  void *shelved_baton,
7147  svn_client_status_func_t not_shelved_func,
7148  void *not_shelved_baton,
7149  apr_pool_t *scratch_pool);
7150 
7151 /** Delete all newer versions of @a shelf newer than @a shelf_version.
7152  *
7153  * If @a shelf_version is null, delete all versions of @a shelf. (The
7154  * shelf will still exist, with any log message and other revprops, but
7155  * with no versions in it.)
7156  *
7157  * Leave the shelf's log message and other revprops unchanged.
7158  *
7159  * Any #svn_client__shelf_version_t object that refers to a deleted version
7160  * will become invalid: attempting to use it will give undefined behaviour.
7161  * The given @a shelf_version will remain valid.
7162  *
7163  * @warning EXPERIMENTAL.
7164  */
7166 svn_error_t *
7168  svn_client__shelf_version_t *shelf_version,
7169  apr_pool_t *scratch_pool);
7170 
7171 /** Return in @a shelf_version an existing version of @a shelf, given its
7172  * @a version_number (starting from 1). Error if that version doesn't exist.
7173  *
7174  * There is no need to "close" it after use.
7175  *
7176  * @warning EXPERIMENTAL.
7177  */
7179 svn_error_t *
7181  svn_client__shelf_t *shelf,
7182  int version_number,
7183  apr_pool_t *result_pool,
7184  apr_pool_t *scratch_pool);
7185 
7186 /** Return in @a shelf_version the newest version of @a shelf.
7187  *
7188  * Set @a shelf_version to null if no versions exist.
7189  *
7190  * @warning EXPERIMENTAL.
7191  */
7193 svn_error_t *
7195  svn_client__shelf_t *shelf,
7196  apr_pool_t *result_pool,
7197  apr_pool_t *scratch_pool);
7198 
7199 /** Return in @a versions_p an array of (#svn_client__shelf_version_t *)
7200  * containing all versions of @a shelf.
7201  *
7202  * The versions will be in chronological order, oldest to newest.
7203  *
7204  * @warning EXPERIMENTAL.
7205  */
7207 svn_error_t *
7208 svn_client__shelf_get_all_versions(apr_array_header_t **versions_p,
7209  svn_client__shelf_t *shelf,
7210  apr_pool_t *result_pool,
7211  apr_pool_t *scratch_pool);
7212 
7213 /** Apply @a shelf_version to the WC.
7214  *
7215  * If @a dry_run is true, try applying the shelf-version to the WC and
7216  * report the full set of notifications about successes and conflicts,
7217  * but leave the WC untouched.
7218  *
7219  * @warning EXPERIMENTAL.
7220  */
7222 svn_error_t *
7224  svn_boolean_t dry_run,
7225  apr_pool_t *scratch_pool);
7226 
7227 /** Test whether we can successfully apply the changes for @a file_relpath
7228  * in @a shelf_version to the WC.
7229  *
7230  * Set @a *conflict_p to true if the changes conflict with the WC state,
7231  * else to false.
7232  *
7233  * If @a file_relpath is not found in @a shelf_version, set @a *conflict_p
7234  * to FALSE.
7235  *
7236  * @a file_relpath is relative to the WC root.
7237  *
7238  * A conflict means the shelf cannot be applied successfully to the WC
7239  * because the change to be applied is not compatible with the current
7240  * working state of the WC file. Examples are a text conflict, or the
7241  * file does not exist or is a directory, or the shelf is trying to add
7242  * the file but it already exists, or trying to delete it but it does not
7243  * exist.
7244  *
7245  * Return an error only if something is broken, e.g. unable to read data
7246  * from the specified shelf-version.
7247  *
7248  * Leave the WC untouched.
7249  *
7250  * @warning EXPERIMENTAL.
7251  */
7253 svn_error_t *
7255  svn_client__shelf_version_t *shelf_version,
7256  const char *file_relpath,
7257  apr_pool_t *scratch_pool);
7258 
7259 /** Reverse-apply @a shelf_version to the WC.
7260  *
7261  * @warning EXPERIMENTAL.
7262  */
7264 svn_error_t *
7266  svn_boolean_t dry_run,
7267  apr_pool_t *scratch_pool);
7268 
7269 /** Send committable changes found in a shelf to a delta-editor.
7270  *
7271  * Push changes from the @a shelf_version subtree at @a top_relpath
7272  * to @a editor : @a edit_baton.
7273  *
7274  * @warning EXPERIMENTAL.
7275  */
7277 svn_error_t *
7279  const char *top_relpath,
7280  const svn_delta_editor_t *editor,
7281  void *edit_baton,
7282  svn_wc_notify_func2_t notify_func,
7283  void *notify_baton,
7284  apr_pool_t *scratch_pool);
7285 
7286 /** Set @a *affected_paths to a hash with one entry for each path affected
7287  * by the @a shelf_version.
7288  *
7289  * The hash key is the path of the affected file, relative to the WC root.
7290  *
7291  * (Future possibility: When moves and copies are supported, the hash key
7292  * is the old path and value is the new path.)
7293  *
7294  * @warning EXPERIMENTAL.
7295  */
7297 svn_error_t *
7298 svn_client__shelf_paths_changed(apr_hash_t **affected_paths,
7299  svn_client__shelf_version_t *shelf_version,
7300  apr_pool_t *result_pool,
7301  apr_pool_t *scratch_pool);
7302 
7303 /** Set @a shelf's revprop @a prop_name to @a prop_val.
7304  *
7305  * This can be used to set or change the shelf's log message
7306  * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
7307  *
7308  * If @a prop_val is NULL, delete the property (if present).
7309  *
7310  * @warning EXPERIMENTAL.
7311  */
7313 svn_error_t *
7315  const char *prop_name,
7316  const svn_string_t *prop_val,
7317  apr_pool_t *scratch_pool);
7318 
7319 /** Set @a shelf's revprops to @a revprop_table.
7320  *
7321  * This deletes all previous revprops.
7322  *
7323  * @warning EXPERIMENTAL.
7324  */
7326 svn_error_t *
7328  apr_hash_t *revprop_table,
7329  apr_pool_t *scratch_pool);
7330 
7331 /** Get @a shelf's revprop @a prop_name into @a *prop_val.
7332  *
7333  * If the property is not present, set @a *prop_val to NULL.
7334  *
7335  * This can be used to get the shelf's log message
7336  * (property name "svn:log" or #SVN_PROP_REVISION_LOG).
7337  *
7338  * The lifetime of the result is limited to that of @a shelf and/or
7339  * of @a result_pool.
7340  *
7341  * @warning EXPERIMENTAL.
7342  */
7344 svn_error_t *
7346  svn_client__shelf_t *shelf,
7347  const char *prop_name,
7348  apr_pool_t *result_pool);
7349 
7350 /** Get @a shelf's revprops into @a props.
7351  *
7352  * The lifetime of the result is limited to that of @a shelf and/or
7353  * of @a result_pool.
7354  *
7355  * @warning EXPERIMENTAL.
7356  */
7358 svn_error_t *
7359 svn_client__shelf_revprop_list(apr_hash_t **props,
7360  svn_client__shelf_t *shelf,
7361  apr_pool_t *result_pool);
7362 
7363 /** Set the log message in @a shelf to @a log_message.
7364  *
7365  * If @a log_message is null, delete the log message.
7366  *
7367  * Similar to svn_client_shelf_revprop_set(... SVN_PROP_REVISION_LOG ...).
7368  *
7369  * @warning EXPERIMENTAL.
7370  */
7372 svn_error_t *
7374  const char *log_message,
7375  apr_pool_t *scratch_pool);
7376 
7377 /** Get the log message in @a shelf into @a *log_message.
7378  *
7379  * Set @a *log_message to NULL if there is no log message.
7380  *
7381  * Similar to svn_client_shelf_revprop_get(... SVN_PROP_REVISION_LOG ...).
7382  *
7383  * The result is allocated in @a result_pool.
7384  *
7385  * @warning EXPERIMENTAL.
7386  */
7388 svn_error_t *
7389 svn_client__shelf_get_log_message(char **log_message,
7390  svn_client__shelf_t *shelf,
7391  apr_pool_t *result_pool);
7392 
7393 /** Information about a shelf.
7394  *
7395  * @warning EXPERIMENTAL.
7396  */
7398 {
7399  apr_time_t mtime; /**< mtime of the latest change */
7401 
7402 /** Set @a *shelf_infos to a hash, keyed by shelf name, of pointers to
7403  * @c svn_client_shelf_info_t structures, one for each shelf in the
7404  * given WC.
7405  *
7406  * @a local_abspath is any path in the WC and is used to find the WC root.
7407  *
7408  * @warning EXPERIMENTAL.
7409  */
7411 svn_error_t *
7412 svn_client__shelf_list(apr_hash_t **shelf_infos,
7413  const char *local_abspath,
7414  svn_client_ctx_t *ctx,
7415  apr_pool_t *result_pool,
7416  apr_pool_t *scratch_pool);
7417 
7418 /** Report the shelved status of all the shelved paths in @a shelf_version
7419  * via @a walk_func(@a walk_baton, ...).
7420  *
7421  * @warning EXPERIMENTAL.
7422  */
7424 svn_error_t *
7426  const char *wc_relpath,
7427  svn_wc_status_func4_t walk_func,
7428  void *walk_baton,
7429  apr_pool_t *scratch_pool);
7430 /** @} */
7431 
7432 /** Changelist commands
7433  *
7434  * @defgroup svn_client_changelist_funcs Client Changelist Functions
7435  * @{
7436  */
7437 
7438 /**
7439  * Add each path in @a paths (recursing to @a depth as necessary) to
7440  * @a changelist. If a path is already a member of another
7441  * changelist, then remove it from the other changelist and add it to
7442  * @a changelist. (For now, a path cannot belong to two changelists
7443  * at once.)
7444  *
7445  * @a paths is an array of (const char *) local WC paths.
7446  *
7447  * @a changelists is an array of <tt>const char *</tt> changelist
7448  * names, used as a restrictive filter on items whose changelist
7449  * assignments are adjusted; that is, don't tweak the changeset of any
7450  * item unless it's currently a member of one of those changelists.
7451  * If @a changelists is empty (or altogether @c NULL), no changelist
7452  * filtering occurs.
7453  *
7454  * @note This metadata is purely a client-side "bookkeeping"
7455  * convenience, and is entirely managed by the working copy.
7456  *
7457  * @since New in 1.5.
7458  */
7459 svn_error_t *
7460 svn_client_add_to_changelist(const apr_array_header_t *paths,
7461  const char *changelist,
7462  svn_depth_t depth,
7463  const apr_array_header_t *changelists,
7464  svn_client_ctx_t *ctx,
7465  apr_pool_t *pool);
7466 
7467 /**
7468  * Remove each path in @a paths (recursing to @a depth as necessary)
7469  * from changelists to which they are currently assigned.
7470  *
7471  * @a paths is an array of (const char *) local WC paths.
7472  *
7473  * @a changelists is an array of <tt>const char *</tt> changelist
7474  * names, used as a restrictive filter on items whose changelist
7475  * assignments are removed; that is, don't remove from a changeset any
7476  * item unless it's currently a member of one of those changelists.
7477  * If @a changelists is empty (or altogether @c NULL), all changelist
7478  * assignments in and under each path in @a paths (to @a depth) will
7479  * be removed.
7480  *
7481  * @note This metadata is purely a client-side "bookkeeping"
7482  * convenience, and is entirely managed by the working copy.
7483  *
7484  * @since New in 1.5.
7485  */
7486 svn_error_t *
7487 svn_client_remove_from_changelists(const apr_array_header_t *paths,
7488  svn_depth_t depth,
7489  const apr_array_header_t *changelists,
7490  svn_client_ctx_t *ctx,
7491  apr_pool_t *pool);
7492 
7493 
7494 /**
7495  * Beginning at @a path, crawl to @a depth to discover every path in
7496  * or under @a path which belongs to one of the changelists in @a
7497  * changelists (an array of <tt>const char *</tt> changelist names).
7498  * If @a changelists is @c NULL, discover paths with any changelist.
7499  * Call @a callback_func (with @a callback_baton) each time a
7500  * changelist-having path is discovered.
7501  *
7502  * @a path is a local WC path.
7503  *
7504  * If @a ctx->cancel_func is not @c NULL, invoke it passing @a
7505  * ctx->cancel_baton during the recursive walk.
7506  *
7507  * @since New in 1.5.
7508  */
7509 svn_error_t *
7510 svn_client_get_changelists(const char *path,
7511  const apr_array_header_t *changelists,
7512  svn_depth_t depth,
7513  svn_changelist_receiver_t callback_func,
7514  void *callback_baton,
7515  svn_client_ctx_t *ctx,
7516  apr_pool_t *pool);
7517 
7518 /** @} */
7519 
7520 
7521 
7522 /** Locking commands
7523  *
7524  * @defgroup svn_client_locking_funcs Client Locking Functions
7525  * @{
7526  */
7527 
7528 /**
7529  * Lock @a targets in the repository. @a targets is an array of
7530  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
7531  * All targets must be in the same repository.
7532  *
7533  * If a target is already locked in the repository, no lock will be
7534  * acquired unless @a steal_lock is TRUE, in which case the locks are
7535  * stolen. @a comment, if non-NULL, is an xml-escapable description
7536  * stored with each lock in the repository. Each acquired lock will
7537  * be stored in the working copy if the targets are WC paths.
7538  *
7539  * For each target @a ctx->notify_func2/notify_baton2 will be used to indicate
7540  * whether it was locked. An action of #svn_wc_notify_locked
7541  * means that the path was locked. If the path was not locked because
7542  * it was out of date or there was already a lock in the repository,
7543  * the notification function will be called with
7544  * #svn_wc_notify_failed_lock, and the error passed in the notification
7545  * structure.
7546  *
7547  * Use @a pool for temporary allocations.
7548  *
7549  * @since New in 1.2.
7550  */
7551 svn_error_t *
7552 svn_client_lock(const apr_array_header_t *targets,
7553  const char *comment,
7554  svn_boolean_t steal_lock,
7555  svn_client_ctx_t *ctx,
7556  apr_pool_t *pool);
7557 
7558 /**
7559  * Unlock @a targets in the repository. @a targets is an array of
7560  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
7561  * All targets must be in the same repository.
7562  *
7563  * If the targets are WC paths, and @a break_lock is FALSE, the working
7564  * copy must contain a lock for each target.
7565  * If this is not the case, or the working copy lock doesn't match the
7566  * lock token in the repository, an error will be signaled.
7567  *
7568  * If the targets are URLs, the locks may be broken even if @a break_lock
7569  * is FALSE, but only if the lock owner is the same as the
7570  * authenticated user.
7571  *
7572  * If @a break_lock is TRUE, the locks will be broken in the
7573  * repository. In both cases, the locks, if any, will be removed from
7574  * the working copy if the targets are WC paths.
7575  *
7576  * The notification functions in @a ctx will be called for each
7577  * target. If the target was successfully unlocked,
7578  * #svn_wc_notify_unlocked will be used. Else, if the error is
7579  * directly related to unlocking the path (see
7580  * #SVN_ERR_IS_UNLOCK_ERROR), #svn_wc_notify_failed_unlock will be
7581  * used and the error will be passed in the notification structure.
7582 
7583  * Use @a pool for temporary allocations.
7584  *
7585  * @since New in 1.2.
7586  */
7587 svn_error_t *
7588 svn_client_unlock(const apr_array_header_t *targets,
7589  svn_boolean_t break_lock,
7590  svn_client_ctx_t *ctx,
7591  apr_pool_t *pool);
7592 
7593 /** @} */
7594 
7595 /**
7596  * @defgroup Info Show repository information about a working copy.
7597  *
7598  * @{
7599  */
7600 
7601 /** The size of the file is unknown.
7602  * Used as value in fields of type @c apr_size_t in #svn_info_t.
7603  *
7604  * @since New in 1.5
7605  * @deprecated Provided for backward compatibility with the 1.6 API.
7606  */
7607 #define SVN_INFO_SIZE_UNKNOWN ((apr_size_t) -1)
7608 
7609 /**
7610  * A structure which describes various system-generated metadata about
7611  * a working-copy path or URL.
7612  *
7613  * @note Fields may be added to the end of this structure in future
7614  * versions. Therefore, users shouldn't allocate structures of this
7615  * type, to preserve binary compatibility.
7616  *
7617  * @since New in 1.2.
7618  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7619  * API is #svn_client_info2_t.
7620  */
7621 typedef struct svn_info_t
7622 {
7623  /** Where the item lives in the repository. */
7624  const char *URL;
7625 
7626  /** The revision of the object. If path_or_url is a working-copy
7627  * path, then this is its current working revnum. If path_or_url
7628  * is a URL, then this is the repos revision that path_or_url lives in. */
7630 
7631  /** The node's kind. */
7633 
7634  /** The root URL of the repository. */
7635  const char *repos_root_URL;
7636 
7637  /** The repository's UUID. */
7638  const char *repos_UUID;
7639 
7640  /** The last revision in which this object changed. */
7642 
7643  /** The date of the last_changed_rev. */
7644  apr_time_t last_changed_date;
7645 
7646  /** The author of the last_changed_rev. */
7647  const char *last_changed_author;
7648 
7649  /** An exclusive lock, if present. Could be either local or remote. */
7651 
7652  /** Whether or not to ignore the next 10 wc-specific fields. */
7654 
7655  /**
7656  * @name Working-copy path fields
7657  * These things only apply to a working-copy path.
7658  * See svn_wc_entry_t for explanations.
7659  * @{
7660  */
7661  svn_wc_schedule_t schedule;
7662  const char *copyfrom_url;
7663  svn_revnum_t copyfrom_rev;
7664  apr_time_t text_time;
7665  apr_time_t prop_time; /* will always be 0 for svn 1.4 and later */
7666  const char *checksum;
7667  const char *conflict_old;
7668  const char *conflict_new;
7669  const char *conflict_wrk;
7670  const char *prejfile;
7671  /** @since New in 1.5. */
7672  const char *changelist;
7673  /** @since New in 1.5. */
7675 
7676  /**
7677  * Similar to working_size64, but will be #SVN_INFO_SIZE_UNKNOWN when
7678  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
7679  *
7680  * @deprecated Provided for backward compatibility with the 1.5 API.
7681  */
7682  apr_size_t working_size;
7683 
7684  /** @} */
7685 
7686  /**
7687  * Similar to size64, but size will be #SVN_INFO_SIZE_UNKNOWN when
7688  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
7689  *
7690  * @deprecated Provided for backward compatibility with the 1.5 API.
7691  */
7692  apr_size_t size;
7693 
7694  /**
7695  * The size of the file in the repository (untranslated,
7696  * e.g. without adjustment of line endings and keyword
7697  * expansion). Only applicable for file -- not directory -- URLs.
7698  * For working copy paths, size64 will be #SVN_INVALID_FILESIZE.
7699  * @since New in 1.6.
7700  */
7702 
7703  /**
7704  * The size of the file after being translated into its local
7705  * representation, or #SVN_INVALID_FILESIZE if unknown.
7706  * Not applicable for directories.
7707  * @since New in 1.6.
7708  * @name Working-copy path fields
7709  * @{
7710  */
7711  svn_filesize_t working_size64;
7712 
7713  /**
7714  * Info on any tree conflict of which this node is a victim. Otherwise NULL.
7715  * @since New in 1.6.
7716  */
7718 
7719  /** @} */
7720 
7721 } svn_info_t;
7722 
7723 
7724 /**
7725  * The callback invoked by svn_client_info2(). Each invocation
7726  * describes @a path with the information present in @a info. Note
7727  * that any fields within @a info may be NULL if information is
7728  * unavailable. Use @a pool for all temporary allocation.
7729  *
7730  * @since New in 1.2.
7731  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7732  * API is #svn_client_info_receiver2_t.
7733  */
7734 typedef svn_error_t *(*svn_info_receiver_t)(
7735  void *baton,
7736  const char *path,
7737  const svn_info_t *info,
7738  apr_pool_t *pool);
7739 
7740 /**
7741  * Return a duplicate of @a info, allocated in @a pool. No part of the new
7742  * structure will be shared with @a info.
7743  *
7744  * @since New in 1.3.
7745  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7746  * API is #svn_client_info2_dup().
7747  */
7749 svn_info_t *
7750 svn_info_dup(const svn_info_t *info,
7751  apr_pool_t *pool);
7752 
7753 /**
7754  * A structure which describes various system-generated metadata about
7755  * a working-copy path or URL.
7756  *
7757  * @note Fields may be added to the end of this structure in future
7758  * versions. Therefore, users shouldn't allocate structures of this
7759  * type, to preserve binary compatibility.
7760  *
7761  * @since New in 1.7.
7762  */
7763 typedef struct svn_client_info2_t
7764 {
7765  /** Where the item lives in the repository. */
7766  const char *URL;
7767 
7768  /** The revision of the object. If the target is a working-copy
7769  * path, then this is its current working revnum. If the target
7770  * is a URL, then this is the repos revision that it lives in. */
7772 
7773  /** The root URL of the repository. */
7774  const char *repos_root_URL;
7775 
7776  /** The repository's UUID. */
7777  const char *repos_UUID;
7778 
7779  /** The node's kind. */
7781 
7782  /** The size of the file in the repository (untranslated,
7783  * e.g. without adjustment of line endings and keyword
7784  * expansion). Only applicable for file -- not directory -- URLs.
7785  * For working copy paths, @a size will be #SVN_INVALID_FILESIZE. */
7787 
7788  /** The last revision in which this object changed. */
7790 
7791  /** The date of the last_changed_rev. */
7792  apr_time_t last_changed_date;
7793 
7794  /** The author of the last_changed_rev. */
7795  const char *last_changed_author;
7796 
7797  /** An exclusive lock, if present. Could be either local or remote. */
7799 
7800  /** Possible information about the working copy, NULL if not valid. */
7802 
7804 
7805 /**
7806  * Return a duplicate of @a info, allocated in @a pool. No part of the new
7807  * structure will be shared with @a info.
7808  *
7809  * @since New in 1.7.
7810  */
7813  apr_pool_t *pool);
7814 
7815 /**
7816  * The callback invoked by info retrievers. Each invocation
7817  * describes @a abspath_or_url with the information present in @a info.
7818  * Use @a scratch_pool for all temporary allocation.
7819  *
7820  * @since New in 1.7.
7821  */
7822 typedef svn_error_t *(*svn_client_info_receiver2_t)(
7823  void *baton,
7824  const char *abspath_or_url,
7825  const svn_client_info2_t *info,
7826  apr_pool_t *scratch_pool);
7827 
7828 /**
7829  * Invoke @a receiver with @a receiver_baton to return information
7830  * about @a abspath_or_url in @a revision. The information returned is
7831  * system-generated metadata, not the sort of "property" metadata
7832  * created by users. See #svn_client_info2_t.
7833  *
7834  * If both revision arguments are either #svn_opt_revision_unspecified
7835  * or @c NULL, then information will be pulled solely from the working copy;
7836  * no network connections will be made.
7837  *
7838  * Otherwise, information will be pulled from a repository. The
7839  * actual node revision selected is determined by the @a abspath_or_url
7840  * as it exists in @a peg_revision. If @a peg_revision->kind is
7841  * #svn_opt_revision_unspecified, then it defaults to
7842  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
7843  * WC targets.
7844  *
7845  * If @a abspath_or_url is not a local path, then if @a revision is of
7846  * kind #svn_opt_revision_previous (or some other kind that requires
7847  * a local path), an error will be returned, because the desired
7848  * revision cannot be determined.
7849  *
7850  * Use the authentication baton cached in @a ctx to authenticate
7851  * against the repository.
7852  *
7853  * If @a abspath_or_url is a file, just invoke @a receiver on it. If it
7854  * is a directory, then descend according to @a depth. If @a depth is
7855  * #svn_depth_empty, invoke @a receiver on @a abspath_or_url and
7856  * nothing else; if #svn_depth_files, on @a abspath_or_url and its
7857  * immediate file children; if #svn_depth_immediates, the preceding
7858  * plus on each immediate subdirectory; if #svn_depth_infinity, then
7859  * recurse fully, invoking @a receiver on @a abspath_or_url and
7860  * everything beneath it.
7861  *
7862  * If @a fetch_excluded is TRUE, also also send excluded nodes in the working
7863  * copy to @a receiver, otherwise these are skipped. If @a fetch_actual_only
7864  * is TRUE also send nodes that don't exist as versioned but are still
7865  * tree conflicted.
7866  *
7867  * If @a include_externals is @c TRUE, recurse into externals and report about
7868  * them as well.
7869  *
7870  * @a changelists is an array of <tt>const char *</tt> changelist
7871  * names, used as a restrictive filter on items whose info is
7872  * reported; that is, don't report info about any item unless
7873  * it's a member of one of those changelists. If @a changelists is
7874  * empty (or altogether @c NULL), no changelist filtering occurs.
7875  *
7876  * @since New in 1.9.
7877  */
7878 svn_error_t *
7879 svn_client_info4(const char *abspath_or_url,
7880  const svn_opt_revision_t *peg_revision,
7881  const svn_opt_revision_t *revision,
7882  svn_depth_t depth,
7883  svn_boolean_t fetch_excluded,
7884  svn_boolean_t fetch_actual_only,
7885  svn_boolean_t include_externals,
7886  const apr_array_header_t *changelists,
7887  svn_client_info_receiver2_t receiver,
7888  void *receiver_baton,
7889  svn_client_ctx_t *ctx,
7890  apr_pool_t *scratch_pool);
7891 
7892 
7893 /** Similar to svn_client_info4, but doesn't support walking externals.
7894  *
7895  * @since New in 1.7.
7896  * @deprecated Provided for backward compatibility with the 1.8 API.
7897  */
7899 svn_error_t *
7900 svn_client_info3(const char *abspath_or_url,
7901  const svn_opt_revision_t *peg_revision,
7902  const svn_opt_revision_t *revision,
7903  svn_depth_t depth,
7904  svn_boolean_t fetch_excluded,
7905  svn_boolean_t fetch_actual_only,
7906  const apr_array_header_t *changelists,
7907  svn_client_info_receiver2_t receiver,
7908  void *receiver_baton,
7909  svn_client_ctx_t *ctx,
7910  apr_pool_t *scratch_pool);
7911 
7912 /** Similar to svn_client_info3, but uses an svn_info_receiver_t instead of
7913  * a #svn_client_info_receiver2_t, and @a path_or_url may be a relative path.
7914  *
7915  * @since New in 1.5.
7916  * @deprecated Provided for backward compatibility with the 1.6 API.
7917  */
7919 svn_error_t *
7920 svn_client_info2(const char *path_or_url,
7921  const svn_opt_revision_t *peg_revision,
7922  const svn_opt_revision_t *revision,
7923  svn_info_receiver_t receiver,
7924  void *receiver_baton,
7925  svn_depth_t depth,
7926  const apr_array_header_t *changelists,
7927  svn_client_ctx_t *ctx,
7928  apr_pool_t *pool);
7929 
7930 /**
7931  * Similar to svn_client_info2() but with @a changelists passed as @c
7932  * NULL, and @a depth set according to @a recurse: if @a recurse is
7933  * TRUE, @a depth is #svn_depth_infinity, else #svn_depth_empty.
7934  *
7935  * @deprecated Provided for backward compatibility with the 1.4 API.
7936  */
7938 svn_error_t *
7939 svn_client_info(const char *path_or_url,
7940  const svn_opt_revision_t *peg_revision,
7941  const svn_opt_revision_t *revision,
7942  svn_info_receiver_t receiver,
7943  void *receiver_baton,
7944  svn_boolean_t recurse,
7945  svn_client_ctx_t *ctx,
7946  apr_pool_t *pool);
7947 
7948 /**
7949  * Set @a *wcroot_abspath to the local abspath of the root of the
7950  * working copy in which @a local_abspath resides.
7951  *
7952  * @since New in 1.7.
7953  */
7954 svn_error_t *
7955 svn_client_get_wc_root(const char **wcroot_abspath,
7956  const char *local_abspath,
7957  svn_client_ctx_t *ctx,
7958  apr_pool_t *result_pool,
7959  apr_pool_t *scratch_pool);
7960 
7961 /**
7962  * Set @a *min_revision and @a *max_revision to the lowest and highest
7963  * revision numbers found within @a local_abspath. If @a committed is
7964  * TRUE, set @a *min_revision and @a *max_revision to the lowest and
7965  * highest comitted (i.e. "last changed") revision numbers,
7966  * respectively. NULL may be passed for either of @a min_revision and
7967  * @a max_revision to indicate the caller's lack of interest in the
7968  * value. Use @a scratch_pool for temporary allocations.
7969  *
7970  * @since New in 1.7.
7971  */
7972 svn_error_t *
7974  svn_revnum_t *max_revision,
7975  const char *local_abspath,
7976  svn_boolean_t committed,
7977  svn_client_ctx_t *ctx,
7978  apr_pool_t *scratch_pool);
7979 
7980 /** @} */
7981 
7982 
7983 /**
7984  * @defgroup Patch Apply a patch to the working copy
7985  *
7986  * @{
7987  */
7988 
7989 /**
7990  * The callback invoked by svn_client_patch() before attempting to patch
7991  * the target file at @a canon_path_from_patchfile (the path as parsed from
7992  * the patch file, but in canonicalized form). The callback can set
7993  * @a *filtered to @c TRUE to prevent the file from being patched, or else
7994  * must set it to @c FALSE.
7995  *
7996  * The callback is also provided with @a patch_abspath, the path of a
7997  * temporary file containing the patched result, and with @a reject_abspath,
7998  * the path to a temporary file containing the diff text of any hunks
7999  * which were rejected during patching.
8000  *
8001  * Because the callback is invoked before the patching attempt is made,
8002  * there is no guarantee that the target file will actually be patched
8003  * successfully. Client implementations must pay attention to notification
8004  * feedback provided by svn_client_patch() to find out which paths were
8005  * patched successfully.
8006  *
8007  * Note also that the files at @a patch_abspath and @a reject_abspath are
8008  * guaranteed to remain on disk after patching only if the
8009  * @a remove_tempfiles parameter for svn_client_patch() is @c FALSE.
8010  *
8011  * The const char * parameters may be allocated in @a scratch_pool which
8012  * will be cleared after each invocation.
8013  *
8014  * @since New in 1.7.
8015  */
8016 typedef svn_error_t *(*svn_client_patch_func_t)(
8017  void *baton,
8018  svn_boolean_t *filtered,
8019  const char *canon_path_from_patchfile,
8020  const char *patch_abspath,
8021  const char *reject_abspath,
8022  apr_pool_t *scratch_pool);
8023 
8024 /**
8025  * Apply a unidiff patch that's located at absolute path
8026  * @a patch_abspath to the working copy directory at @a wc_dir_abspath.
8027  *
8028  * This function makes a best-effort attempt at applying the patch.
8029  * It might skip patch targets which cannot be patched (e.g. targets
8030  * that are outside of the working copy). It will also reject hunks
8031  * which cannot be applied to a target in case the hunk's context
8032  * does not match anywhere in the patch target.
8033  *
8034  * If @a dry_run is TRUE, the patching process is carried out, and full
8035  * notification feedback is provided, but the working copy is not modified.
8036  *
8037  * @a strip_count specifies how many leading path components should be
8038  * stripped from paths obtained from the patch. It is an error if a
8039  * negative strip count is passed.
8040  *
8041  * If @a reverse is @c TRUE, apply patches in reverse, deleting lines
8042  * the patch would add and adding lines the patch would delete.
8043  *
8044  * If @a ignore_whitespace is TRUE, allow patches to be applied if they
8045  * only differ from the target by whitespace.
8046  *
8047  * If @a remove_tempfiles is TRUE, lifetimes of temporary files created
8048  * during patching will be managed internally. Otherwise, the caller should
8049  * take ownership of these files, the names of which can be obtained by
8050  * passing a @a patch_func callback.
8051  *
8052  * If @a patch_func is non-NULL, invoke @a patch_func with @a patch_baton
8053  * for each patch target processed.
8054  *
8055  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
8056  * @a ctx->notify_baton2 as patching progresses.
8057  *
8058  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
8059  * ctx->cancel_baton at various places during the operation.
8060  *
8061  * Use @a scratch_pool for temporary allocations.
8062  *
8063  * @since New in 1.7.
8064  */
8065 svn_error_t *
8066 svn_client_patch(const char *patch_abspath,
8067  const char *wc_dir_abspath,
8068  svn_boolean_t dry_run,
8069  int strip_count,
8070  svn_boolean_t reverse,
8071  svn_boolean_t ignore_whitespace,
8072  svn_boolean_t remove_tempfiles,
8073  svn_client_patch_func_t patch_func,
8074  void *patch_baton,
8075  svn_client_ctx_t *ctx,
8076  apr_pool_t *scratch_pool);
8077 
8078 /** @} */
8079 
8080 /** @} end group: Client working copy management */
8081 
8082 /**
8083  *
8084  * @defgroup clnt_sessions Client session related functions
8085  *
8086  * @{
8087  *
8088  */
8089 
8090 
8091 /* Converting paths to URLs. */
8092 
8093 /** Set @a *url to the URL for @a path_or_url allocated in result_pool.
8094  *
8095  * If @a path_or_url is already a URL, set @a *url to @a path_or_url.
8096  *
8097  * If @a path_or_url is a versioned item, set @a *url to @a
8098  * path_or_url's entry URL. If @a path_or_url is unversioned (has
8099  * no entry), set @a *url to NULL.
8100  *
8101  * Use @a ctx->wc_ctx to retrieve the information. Use
8102  ** @a scratch_pool for temporary allocations.
8103  *
8104  * @since New in 1.7.
8105  */
8106 svn_error_t *
8107 svn_client_url_from_path2(const char **url,
8108  const char *path_or_url,
8109  svn_client_ctx_t *ctx,
8110  apr_pool_t *result_pool,
8111  apr_pool_t *scratch_pool);
8112 
8113 /** Similar to svn_client_url_from_path2(), but without a context argument.
8114  *
8115  * @since New in 1.5.
8116  * @deprecated Provided for backward compatibility with the 1.6 API.
8117  */
8119 svn_error_t *
8120 svn_client_url_from_path(const char **url,
8121  const char *path_or_url,
8122  apr_pool_t *pool);
8123 
8124 
8125 
8126 /* Fetching a repository's root URL and UUID. */
8127 
8128 /** Set @a *repos_root_url and @a *repos_uuid, to the root URL and UUID of
8129  * the repository in which @a abspath_or_url is versioned. Use the
8130  * authentication baton and working copy context cached in @a ctx as
8131  * necessary. @a repos_root_url and/or @a repos_uuid may be NULL if not
8132  * wanted.
8133  *
8134  * This function will open a temporary RA session to the repository if
8135  * necessary to get the information.
8136  *
8137  * Allocate @a *repos_root_url and @a *repos_uuid in @a result_pool.
8138  * Use @a scratch_pool for temporary allocations.
8139  *
8140  * @since New in 1.8.
8141  */
8142 svn_error_t *
8143 svn_client_get_repos_root(const char **repos_root_url,
8144  const char **repos_uuid,
8145  const char *abspath_or_url,
8146  svn_client_ctx_t *ctx,
8147  apr_pool_t *result_pool,
8148  apr_pool_t *scratch_pool);
8149 
8150 /** Set @a *url to the repository root URL of the repository in which
8151  * @a path_or_url is versioned (or scheduled to be versioned),
8152  * allocated in @a pool. @a ctx is required for possible repository
8153  * authentication.
8154  *
8155  * @since New in 1.5.
8156  * @deprecated Provided for backward compatibility with the 1.7 API. Use
8157  * svn_client_get_repos_root() instead, with an absolute path.
8158  */
8160 svn_error_t *
8161 svn_client_root_url_from_path(const char **url,
8162  const char *path_or_url,
8163  svn_client_ctx_t *ctx,
8164  apr_pool_t *pool);
8165 
8166 /** Get repository @a uuid for @a url.
8167  *
8168  * Use a @a pool to open a temporary RA session to @a url, discover the
8169  * repository uuid, and free the session. Return the uuid in @a uuid,
8170  * allocated in @a pool. @a ctx is required for possible repository
8171  * authentication.
8172  *
8173  * @deprecated Provided for backward compatibility with the 1.7 API. Use
8174  * svn_client_get_repos_root() instead.
8175  */
8177 svn_error_t *
8178 svn_client_uuid_from_url(const char **uuid,
8179  const char *url,
8180  svn_client_ctx_t *ctx,
8181  apr_pool_t *pool);
8182 
8183 
8184 /** Return the repository @a uuid for working-copy @a local_abspath,
8185  * allocated in @a result_pool. Use @a ctx->wc_ctx to retrieve the
8186  * information.
8187  *
8188  * Use @a scratch_pool for temporary allocations.
8189  *
8190  * @since New in 1.7.
8191  * @deprecated Provided for backward compatibility with the 1.7 API. Use
8192  * svn_client_get_repos_root() instead.
8193  */
8195 svn_error_t *
8196 svn_client_uuid_from_path2(const char **uuid,
8197  const char *local_abspath,
8198  svn_client_ctx_t *ctx,
8199  apr_pool_t *result_pool,
8200  apr_pool_t *scratch_pool);
8201 
8202 /** Similar to svn_client_uuid_from_path2(), but with a relative path and
8203  * an access baton.
8204  *
8205  * @deprecated Provided for backward compatibility with the 1.6 API.
8206  */
8208 svn_error_t *
8209 svn_client_uuid_from_path(const char **uuid,
8210  const char *path,
8211  svn_wc_adm_access_t *adm_access,
8212  svn_client_ctx_t *ctx,
8213  apr_pool_t *pool);
8214 
8215 
8216 /* Opening RA sessions. */
8217 
8218 /** Open an RA session rooted at @a url, and return it in @a *session.
8219  *
8220  * Use the authentication baton stored in @a ctx for authentication.
8221  * @a *session is allocated in @a result_pool.
8222  *
8223  * If @a wri_abspath is not NULL, use the working copy identified by @a
8224  * wri_abspath to potentially avoid transferring unneeded data.
8225  *
8226  * @note This function is similar to svn_ra_open4(), but the caller avoids
8227  * having to providing its own callback functions.
8228  * @since New in 1.8.
8229  */
8230 svn_error_t *
8232  const char *url,
8233  const char *wri_abspath,
8234  svn_client_ctx_t *ctx,
8235  apr_pool_t *result_pool,
8236  apr_pool_t *scratch_pool);
8237 
8238 /** Similar to svn_client_open_ra_session2(), but with @ wri_abspath
8239  * always passed as NULL, and with the same pool used as both @a
8240  * result_pool and @a scratch_pool.
8241  *
8242  * @since New in 1.3.
8243  * @deprecated Provided for backward compatibility with the 1.7 API.
8244  */
8246 svn_error_t *
8248  const char *url,
8249  svn_client_ctx_t *ctx,
8250  apr_pool_t *pool);
8251 
8252 
8253 /** @} end group: Client session related functions */
8254 
8255 /** @} */
8256 
8257 #ifdef __cplusplus
8258 }
8259 #endif /* __cplusplus */
8260 
8261 #endif /* SVN_CLIENT_H */
svn_error_t * svn_client_cleanup2(const char *dir_abspath, svn_boolean_t break_locks, svn_boolean_t fix_recorded_timestamps, svn_boolean_t clear_dav_cache, svn_boolean_t vacuum_pristines, svn_boolean_t include_externals, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Recursively cleanup a working copy directory dir_abspath, finishing any incomplete operations...
Options to control the behaviour of the file diff routines.
Definition: svn_diff.h:469
svn_error_t * svn_client_revert3(const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_boolean_t clear_changelists, svn_boolean_t metadata_only, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_revert4(), but with added_keep_local set to TRUE.
svn_error_t * svn_client_merge2(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge3(), but with record_only set to FALSE, and depth set according to recurse...
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:7641
svn_node_kind_t kind
The node&#39;s kind.
Definition: svn_client.h:7632
svn_client_get_commit_log2_t log_msg_func2
Log message callback function.
Definition: svn_client.h:1011
svn_error_t * svn_client_checkout(svn_revnum_t *result_rev, const char *URL, const char *path, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_checkout2(), but with peg_revision always set to svn_opt_revision_unspecified a...
svn_error_t * svn_client_diff7(const apr_array_header_t *diff_options, const char *path_or_url1, const svn_opt_revision_t *revision1, const char *path_or_url2, const svn_opt_revision_t *revision2, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_added, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t ignore_properties, svn_boolean_t properties_only, svn_boolean_t use_git_diff_format, svn_boolean_t pretty_print_mergeinfo, const char *header_encoding, svn_stream_t *outstream, svn_stream_t *errstream, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Produce diff output which describes the delta between path_or_url1/revision1 and path_or_url2/revisio...
svn_error_t *(* svn_auth_ssl_server_trust_prompt_func_t)(svn_auth_cred_ssl_server_trust_t **cred, void *baton, const char *realm, apr_uint32_t failures, const svn_auth_ssl_server_cert_info_t *cert_info, svn_boolean_t may_save, apr_pool_t *pool)
Set *cred by prompting the user, allocating *cred in pool.
Definition: svn_auth.h:439
svn_error_t * svn_client_propget5(apr_hash_t **props, apr_array_header_t **inherited_props, const char *propname, const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_revnum_t *actual_revnum, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *props to a hash table whose keys are absolute paths or URLs of items on which property propname ...
svn_ra_check_tunnel_func_t check_tunnel_func
Check-tunnel callback.
Definition: svn_client.h:1070
void svn_client_get_ssl_client_cert_pw_prompt_provider(svn_auth_provider_object_t **provider, svn_auth_ssl_client_cert_pw_prompt_func_t prompt_func, void *prompt_baton, int retry_limit, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_pw_t, allocated in pool.
svn_client_get_commit_log_t log_msg_func
Log message callback function.
Definition: svn_client.h:978
Counted-length strings for Subversion, plus some C string goodies.
svn_error_t * svn_client__shelf_unapply(svn_client__shelf_version_t *shelf_version, svn_boolean_t dry_run, apr_pool_t *scratch_pool)
Reverse-apply shelf_version to the WC.
svn_error_t * svn_client_proplist4(const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, const apr_array_header_t *changelists, svn_boolean_t get_target_inherited_props, svn_proplist_receiver2_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Invoke receiver with receiver_baton to return the regular explicit, and possibly the inherited...
svn_info_t * svn_info_dup(const svn_info_t *info, apr_pool_t *pool)
Return a duplicate of info, allocated in pool.
svn_error_t * svn_client_copy6(const apr_array_header_t *sources, const char *dst_path, svn_boolean_t copy_as_child, svn_boolean_t make_parents, svn_boolean_t ignore_externals, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy7(), but doesn&#39;t support meta_data_only and cannot pin externals.
svn_error_t * svn_client_status6(svn_revnum_t *result_rev, svn_client_ctx_t *ctx, const char *path, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t get_all, svn_boolean_t check_out_of_date, svn_boolean_t check_working_copy, svn_boolean_t no_ignore, svn_boolean_t ignore_externals, svn_boolean_t depth_as_sticky, const apr_array_header_t *changelists, svn_client_status_func_t status_func, void *status_baton, apr_pool_t *scratch_pool)
Given path to a working copy directory (or single file), call status_func/status_baton with a set of ...
svn_wc_context_t * wc_ctx
A working copy context for the client operation to use.
Definition: svn_client.h:1059
svn_wc_conflict_choice_t
The way in which the conflict callback chooses a course of action.
Definition: svn_wc.h:2163
apr_byte_t state_flags
state flags
Definition: svn_client.h:564
svn_error_t * svn_client_unlock(const apr_array_header_t *targets, svn_boolean_t break_lock, svn_client_ctx_t *ctx, apr_pool_t *pool)
Unlock targets in the repository.
The commit candidate structure.
Definition: svn_client.h:464
svn_error_t * svn_client_list2(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, apr_uint32_t dirent_fields, svn_boolean_t fetch_locks, svn_client_list_func_t list_func, void *baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_list3(), but with include_externals set to FALSE, and using a svn_client_list_f...
struct svn_client__shelf_version_t svn_client__shelf_version_t
One version of a shelved change-set.
const char * changed_author
Last commit author of this item.
Definition: svn_client.h:2433
svn_error_t * svn_client_log(const apr_array_header_t *targets, const svn_opt_revision_t *start, const svn_opt_revision_t *end, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_log2(), but with limit set to 0, and the following special case: ...
struct svn_info_t svn_info_t
A structure which describes various system-generated metadata about a working-copy path or URL...
svn_error_t * svn_client_suggest_merge_sources(apr_array_header_t **suggestions, const char *path_or_url, const svn_opt_revision_t *peg_revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
Set suggestions to an ordered array of const char * potential merge sources (expressed as full reposi...
const char * repos_relpath
The in-repository path relative to the repository root.
Definition: svn_client.h:2421
svn_error_t * svn_client_mkdir(svn_client_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_mkdir2(), but takes the svn_client_commit_info_t type for commit_info_p.
svn_error_t * svn_client_ls(apr_hash_t **dirents, const char *path_or_url, svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_ls2() except that peg_revision is always the same as revision.
svn_error_t * svn_client_url_from_path2(const char **url, const char *path_or_url, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *url to the URL for path_or_url allocated in result_pool.
svn_client_conflict_option_t * svn_client_conflict_option_find_by_id(apr_array_header_t *options, svn_client_conflict_option_id_t option_id)
Given an option_id, try to find the corresponding option in options, which is an array of svn_client_...
const char * path
absolute working-copy path of item.
Definition: svn_client.h:473
svn_error_t * svn_client__shelf_revprop_list(apr_hash_t **props, svn_client__shelf_t *shelf, apr_pool_t *result_pool)
Get shelf&#39;s revprops into props.
Information about commits passed back to client from this module.
Definition: svn_client.h:416
const char * svn_client_conflict_get_local_abspath(svn_client_conflict_t *conflict)
Return the absolute path to the conflicted working copy node described by conflict.
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:7647
apr_hash_t * mimetypes_map
MIME types map.
Definition: svn_client.h:1037
A provider object, ready to be put into an array and given to svn_auth_open().
Definition: svn_auth.h:158
void svn_client_get_ssl_client_cert_prompt_provider(svn_auth_provider_object_t **provider, svn_auth_ssl_client_cert_prompt_func_t prompt_func, void *prompt_baton, int retry_limit, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_t, allocated in pool.
svn_error_t *(* svn_wc_conflict_resolver_func_t)(svn_wc_conflict_result_t **result, const svn_wc_conflict_description_t *description, void *baton, apr_pool_t *pool)
Similar to svn_wc_conflict_resolver_func2_t, but using svn_wc_conflict_description_t instead of svn_w...
Definition: svn_wc.h:2291
This struct contains information about a working copy node.
Definition: svn_wc.h:3242
svn_auth_baton_t * auth_baton
main authentication baton.
Definition: svn_client.h:961
svn_error_t * svn_client_conflict_prop_get_resolution_options(apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to property c...
An item with text modifications.
Definition: svn_client.h:880
svn_error_t * svn_client_get_repos_root(const char **repos_root_url, const char **repos_uuid, const char *abspath_or_url, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *repos_root_url and *repos_uuid, to the root URL and UUID of the repository in which abspath_or_u...
svn_error_t *(* svn_auth_ssl_client_cert_prompt_func_t)(svn_auth_cred_ssl_client_cert_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
Set *cred by prompting the user, allocating *cred in pool.
Definition: svn_auth.h:459
svn_boolean_t prop_changed
Properties changed? For consistency with &#39;svn status&#39; output, this should be false if summarize_kind ...
Definition: svn_client.h:907
struct svn_client_proplist_item_t svn_client_proplist_item_t
This is a structure which stores a filename and a hash of property names and values.
svn_client_proplist_item_t * svn_client_proplist_item_dup(const svn_client_proplist_item_t *item, apr_pool_t *pool)
Return a duplicate of item, allocated in pool.
svn_wc_conflict_reason_t svn_client_conflict_get_local_change(svn_client_conflict_t *conflict)
Return the reason why the attempted action performed by an update, switch, or merge operation conflic...
void * notify_baton2
notification baton for notify_func2().
Definition: svn_client.h:1006
const char * svn_client_conflict_option_get_description(svn_client_conflict_option_t *option, apr_pool_t *result_pool)
Return a textual human-readable description of option, allocated in result_pool.
svn_error_t * svn_client_add3(const char *path, svn_boolean_t recursive, svn_boolean_t force, svn_boolean_t no_ignore, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_add4(), but with add_parents always set to FALSE and depth set according to rec...
svn_error_t * svn_client_list(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, apr_uint32_t dirent_fields, svn_boolean_t fetch_locks, svn_client_list_func_t list_func, void *baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_list2(), but with recurse instead of depth.
svn_error_t *(* svn_info_receiver_t)(void *baton, const char *path, const svn_info_t *info, apr_pool_t *pool)
The callback invoked by svn_client_info2().
Definition: svn_client.h:7734
svn_wc_conflict_resolver_func_t conflict_func
Conflict resolution callback and baton, if available.
Definition: svn_client.h:1041
All information about a commit.
Definition: svn_types.h:689
svn_client_conflict_option_id_t svn_client_conflict_tree_get_resolution(svn_client_conflict_t *conflict)
Return the ID of the option this tree conflict has been resolved to.
svn_client_commit_item3_t * svn_client_commit_item3_create(apr_pool_t *pool)
Return a new commit item object, allocated in pool.
svn_error_t * svn_client_conflict_text_resolve_by_id(svn_client_conflict_t *conflict, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
If the provided option_id is the ID of an option which resolves conflict, resolve the text conflict u...
svn_revnum_t changed_rev
Last revision this was changed.
Definition: svn_client.h:2427
svn_error_t * svn_client_conflict_get_incoming_new_repos_location(const char **incoming_new_repos_relpath, svn_revnum_t *incoming_new_regrev, svn_node_kind_t *incoming_new_node_kind, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Like svn_client_conflict_get_incoming_old_repos_location(), expect this function returns the same dat...
svn_client_conflict_option_id_t svn_client_conflict_text_get_resolution(svn_client_conflict_t *conflict)
Return the ID of the option this text conflict has been resolved to.
svn_error_t * svn_client_copy4(svn_commit_info_t **commit_info_p, const apr_array_header_t *sources, const char *dst_path, svn_boolean_t copy_as_child, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy5(), with ignore_externals set to FALSE.
svn_error_t * svn_client_move7(const apr_array_header_t *src_paths, const char *dst_path, svn_boolean_t move_as_child, svn_boolean_t make_parents, svn_boolean_t allow_mixed_revisions, svn_boolean_t metadata_only, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Move src_paths to dst_path.
const char * local_abspath
The absolute path to the node.
Definition: svn_client.h:2378
svn_error_t * svn_client_revert4(const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_boolean_t clear_changelists, svn_boolean_t metadata_only, svn_boolean_t added_keep_local, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Restore the pristine version of working copy paths, effectively undoing any local mods...
svn_boolean_t switched
A file or directory can be &#39;switched&#39; if the switch command has been used.
Definition: svn_client.h:2438
svn_error_t * svn_client_create_context(svn_client_ctx_t **ctx, apr_pool_t *pool)
Similar to svn_client_create_context2 but passes a NULL cfg_hash.
const char * changelist
Which changelist this item is part of, or NULL if not part of any.
Definition: svn_client.h:2451
svn_error_t * svn_client_checkout3(svn_revnum_t *result_rev, const char *URL, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t ignore_externals, svn_boolean_t allow_unver_obstructions, svn_client_ctx_t *ctx, apr_pool_t *pool)
Checkout a working copy from a repository.
svn_revnum_t revision
Base revision.
Definition: svn_client.h:2424
svn_error_t * svn_client_conflict_tree_resolve_by_id(svn_client_conflict_t *conflict, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Like svn_client_conflict_tree_resolve(), except that it identifies the desired resolution option by I...
apr_time_t changed_date
Date of last commit.
Definition: svn_client.h:2430
svn_error_t * svn_client_open_ra_session2(svn_ra_session_t **session, const char *url, const char *wri_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Open an RA session rooted at url, and return it in *session.
const svn_opt_revision_t * revision
The source operational revision.
Definition: svn_client.h:5499
svn_boolean_t conflicted
Set to TRUE if the node is the victim of some kind of conflict.
Definition: svn_client.h:2389
struct svn_wc_context_t svn_wc_context_t
The context for all working copy interactions.
Definition: svn_wc.h:179
svn_error_t * svn_client_info3(const char *abspath_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t fetch_excluded, svn_boolean_t fetch_actual_only, const apr_array_header_t *changelists, svn_client_info_receiver2_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Similar to svn_client_info4, but doesn&#39;t support walking externals.
svn_error_t * svn_client_args_to_target_array2(apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, svn_client_ctx_t *ctx, svn_boolean_t keep_last_origpath_on_truepath_collision, apr_pool_t *pool)
Pull remaining target arguments from os into *targets_p, converting them to UTF-8, followed by targets from known_targets (which might come from, for example, the "--targets" command line option).
svn_error_t * svn_client_min_max_revisions(svn_revnum_t *min_revision, svn_revnum_t *max_revision, const char *local_abspath, svn_boolean_t committed, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Set *min_revision and *max_revision to the lowest and highest revision numbers found within local_abs...
const svn_opt_revision_t * peg_revision
The source peg revision.
Definition: svn_client.h:5502
svn_revnum_t revision
revision of textbase
Definition: svn_client.h:555
svn_error_t *(* svn_client_blame_receiver2_t)(void *baton, apr_int64_t line_no, svn_revnum_t revision, const char *author, const char *date, svn_revnum_t merged_revision, const char *merged_author, const char *merged_date, const char *merged_path, const char *line, apr_pool_t *pool)
Similar to svn_client_blame_receiver3_t, but with separate author and date revision properties instea...
Definition: svn_client.h:824
svn_error_t * svn_client_update2(apr_array_header_t **result_revs, const apr_array_header_t *paths, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_boolean_t ignore_externals, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_update3() but with allow_unver_obstructions always set to FALSE, depth_is_sticky to FALSE, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.
svn_error_t * svn_client_mergeinfo_log_merged(const char *path_or_url, const svn_opt_revision_t *peg_revision, const char *merge_source_path_or_url, const svn_opt_revision_t *src_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_mergeinfo_log(), but finds only merged revisions and always operates at depth s...
svn_error_t * svn_client_merge5(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Merge changes from source1/revision1 to source2/revision2 into the working-copy path target_wcpath...
svn_error_t * svn_client__shelf_get_all_versions(apr_array_header_t **versions_p, svn_client__shelf_t *shelf, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return in versions_p an array of (svn_client__shelf_version_t *) containing all versions of shelf...
svn_error_t *(* svn_client_info_receiver2_t)(void *baton, const char *abspath_or_url, const svn_client_info2_t *info, apr_pool_t *scratch_pool)
The callback invoked by info retrievers.
Definition: svn_client.h:7822
svn_error_t * svn_client_conflict_text_get_contents(const char **base_abspath, const char **working_abspath, const char **incoming_old_abspath, const char **incoming_new_abspath, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return absolute paths to the versions of the text-conflicted file described by conflict.
const char * client_name
Custom client name string, or NULL.
Definition: svn_client.h:1046
svn_error_t * svn_client_ls2(apr_hash_t **dirents, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_ls3(), but without the ability to get locks.
svn_client_status_t * svn_client_status_dup(const svn_client_status_t *status, apr_pool_t *result_pool)
Return a duplicate of status, allocated in result_pool.
svn_error_t * svn_client_diff4(const apr_array_header_t *diff_options, const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff5(), but with show_copies_as_adds set to FALSE and use_git_diff_format set ...
const char * url
commit URL for this item.
Definition: svn_client.h:481
svn_error_t * svn_client__shelf_open_existing(svn_client__shelf_t **shelf_p, const char *name, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool)
Open an existing shelf named name, or error if it doesn&#39;t exist.
svn_error_t * svn_client_propset(const char *propname, const svn_string_t *propval, const char *target, svn_boolean_t recurse, apr_pool_t *pool)
Like svn_client_propset2(), but with skip_checks always FALSE and a newly created ctx...
svn_client_diff_summarize_kind_t
The difference type in an svn_diff_summarize_t structure.
Definition: svn_client.h:871
svn_error_t * svn_client_info2(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_info_receiver_t receiver, void *receiver_baton, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_info3, but uses an svn_info_receiver_t instead of a svn_client_info_receiver2_t...
svn_boolean_t has_wc_info
Whether or not to ignore the next 10 wc-specific fields.
Definition: svn_client.h:7653
const char * author
author of the commit.
Definition: svn_client.h:425
svn_error_t * svn_client_conflict_tree_get_description(const char **incoming_change_description, const char **local_change_description, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return a textual human-readable description of the tree conflict described by conflict, allocated in result_pool.
svn_error_t * svn_client_list4(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, const apr_array_header_t *patterns, svn_depth_t depth, apr_uint32_t dirent_fields, svn_boolean_t fetch_locks, svn_boolean_t include_externals, svn_client_list_func2_t list_func, void *baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Report the directory entry, and possibly children, for path_or_url at revision.
svn_error_t * svn_client__shelf_revprop_set(svn_client__shelf_t *shelf, const char *prop_name, const svn_string_t *prop_val, apr_pool_t *scratch_pool)
Set shelf&#39;s revprop prop_name to prop_val.
apr_hash_t * config
a hash mapping of const char * configuration file names to svn_config_t *&#39;s.
Definition: svn_client.h:990
struct svn_client_ctx_t svn_client_ctx_t
A client context structure, which holds client specific callbacks, batons, serves as a cache for conf...
svn_error_t * svn_client_diff6(const apr_array_header_t *diff_options, const char *path_or_url1, const svn_opt_revision_t *revision1, const char *path_or_url2, const svn_opt_revision_t *revision2, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_added, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t ignore_properties, svn_boolean_t properties_only, svn_boolean_t use_git_diff_format, const char *header_encoding, svn_stream_t *outstream, svn_stream_t *errstream, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff7(), but with pretty_print_mergeinfo always passed as TRUE.
svn_error_t * svn_client_copy(svn_client_commit_info_t **commit_info_p, const char *src_path, const svn_opt_revision_t *src_revision, const char *dst_path, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy2(), but uses svn_client_commit_info_t for commit_info_p.
struct svn_client_copy_source_t svn_client_copy_source_t
A structure which describes the source of a copy operation–its path, revision, and peg revision...
svn_error_t * svn_client_diff3(const apr_array_header_t *diff_options, const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff4(), but with changelists passed as NULL, and depth set according to recurs...
svn_filesize_t size64
The size of the file in the repository (untranslated, e.g.
Definition: svn_client.h:7701
svn_wc_conflict_action_t svn_client_conflict_get_incoming_change(svn_client_conflict_t *conflict)
Return the action an update, switch, or merge operation attempted to perform on the working copy node...
A structure full of callback functions the delta source will invoke as it produces the delta...
Definition: svn_delta.h:883
svn_wc_conflict_action_t
The type of action being attempted on an object.
Definition: svn_wc.h:1623
svn_error_t * svn_client_conflict_option_get_moved_to_abspath_candidates2(apr_array_header_t **possible_moved_to_abspaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Get a list of possible moved-to abspaths in the working copy which can be applied to option...
int version_number
version number starting from 1
Definition: svn_client.h:7039
svn_error_t * svn_client_commit5(const apr_array_header_t *targets, svn_depth_t depth, svn_boolean_t keep_locks, svn_boolean_t keep_changelists, svn_boolean_t commit_as_operations, const apr_array_header_t *changelists, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_commit6(), but passes include_file_externals as FALSE and include_dir_externals...
svn_error_t * svn_client_propget2(apr_hash_t **props, const char *propname, const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_propget3(), except that actual_revnum and changelists are always NULL...
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:476
svn_error_t * svn_client_url_from_path(const char **url, const char *path_or_url, apr_pool_t *pool)
Similar to svn_client_url_from_path2(), but without a context argument.
svn_error_t * svn_client_mergeinfo_log(svn_boolean_t finding_merged, const char *target_path_or_url, const svn_opt_revision_t *target_peg_revision, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Similar to svn_client_mergeinfo_log2(), but with source_start_revision and source_end_revision always...
svn_error_t * svn_client_conflict_option_set_moved_to_abspath(svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Like svn_client_conflict_option_set_moved_to_abspath2(), except that in SVN 1.10 this function raises...
svn_error_t * svn_client_relocate(const char *dir, const char *from_prefix, const char *to_prefix, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_relocate2(), but with ignore_externals always TRUE.
void * cancel_baton
a baton to pass to the cancellation callback.
Definition: svn_client.h:997
svn_error_t * svn_client_mkdir4(const apr_array_header_t *paths, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Create a directory, either in a repository or a working copy.
Structure for holding the "status" of a working copy item.
Definition: svn_client.h:2372
svn_error_t * svn_client_get_wc_root(const char **wcroot_abspath, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *wcroot_abspath to the local abspath of the root of the working copy in which local_abspath resid...
svn_error_t *(* svn_ra_open_tunnel_func_t)(svn_stream_t **request, svn_stream_t **response, svn_ra_close_tunnel_func_t *close_func, void **close_baton, void *tunnel_baton, const char *tunnel_name, const char *user, const char *hostname, int port, svn_cancel_func_t cancel_func, void *cancel_baton, apr_pool_t *pool)
Callback function for opening a tunnel in ra_svn.
Definition: svn_ra.h:322
const char * session_relpath
When processing the commit this contains the relative path for the commit session.
Definition: svn_client.h:526
svn_error_t * svn_client_blame6(svn_revnum_t *start_revnum_p, svn_revnum_t *end_revnum_p, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, const svn_diff_file_options_t *diff_options, svn_boolean_t ignore_mime_type, svn_boolean_t include_merged_revisions, svn_client_blame_receiver4_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Invoke receiver with receiver_baton on each line-blame item associated with revision end of path_or_u...
svn_node_kind_t kind
The node&#39;s kind.
Definition: svn_client.h:7780
svn_error_t * svn_client_cleanup(const char *dir, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Like svn_client_cleanup2(), but no support for not breaking locks and cleaning up externals and using...
svn_error_t *(* svn_commit_callback2_t)(const svn_commit_info_t *commit_info, void *baton, apr_pool_t *pool)
Callback function type for commits.
Definition: svn_types.h:1001
const char * svn_client_conflict_prop_get_reject_abspath(svn_client_conflict_t *conflict)
Return the path to the legacy property conflicts reject file for the property conflicts represented b...
const char * repos_uuid
The UUID of the repository.
Definition: svn_client.h:2418
svn_error_t * svn_client_merge4(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge5(), but the single ignore_ancestry parameter maps to both ignore_mergeinf...
svn_cancel_func_t cancel_func
a callback to be used to see if the client wishes to cancel the running operation.
Definition: svn_client.h:994
svn_error_t * svn_client_blame5(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, const svn_diff_file_options_t *diff_options, svn_boolean_t ignore_mime_type, svn_boolean_t include_merged_revisions, svn_client_blame_receiver3_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_blame6(), but with svn_client_blame_receiver3_t as the receiver.
void svn_client_get_ssl_client_cert_file_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_t, allocated in pool.
const void * backwards_compatibility_baton
Reserved for libsvn_client&#39;s internal use; this value is only to be used for libsvn_client backwards ...
Definition: svn_client.h:2504
svn_client_diff_summarize_t * svn_client_diff_summarize_dup(const svn_client_diff_summarize_t *diff, apr_pool_t *pool)
Return a duplicate of diff, allocated in pool.
svn_error_t * svn_client_revprop_set(const char *propname, const svn_string_t *propval, const char *URL, const svn_opt_revision_t *revision, svn_revnum_t *set_rev, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_revprop_set2(), but with original_propval always NULL.
svn_error_t * svn_client_diff_summarize2(const char *path_or_url1, const svn_opt_revision_t *revision1, const char *path_or_url2, const svn_opt_revision_t *revision2, svn_depth_t depth, svn_boolean_t ignore_ancestry, const apr_array_header_t *changelists, svn_client_diff_summarize_func_t summarize_func, void *summarize_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Produce a diff summary which lists the changed items between path_or_url1/revision1 and path_or_url2/...
svn_error_t * svn_client__shelf_get_newest_version(svn_client__shelf_version_t **shelf_version_p, svn_client__shelf_t *shelf, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return in shelf_version the newest version of shelf.
svn_client_conflict_option_id_t svn_client_conflict_get_recommended_option_id(svn_client_conflict_t *conflict)
Return the ID of the recommended resolution option.
A lock object, for client & server to share.
Definition: svn_types.h:1108
svn_depth_t depth
Definition: svn_client.h:7674
svn_error_t * svn_client_add_to_changelist(const apr_array_header_t *paths, const char *changelist, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Add each path in paths (recursing to depth as necessary) to changelist.
svn_error_t * svn_client_conflict_get(svn_client_conflict_t **conflict, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return a conflict for the conflicted path local_abspath.
svn_error_t *(* svn_auth_username_prompt_func_t)(svn_auth_cred_username_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
Set *cred by prompting the user, allocating *cred in pool.
Definition: svn_auth.h:396
void(* svn_wc_status_func_t)(void *baton, const char *path, svn_wc_status_t *status)
Same as svn_wc_status_func2_t, but for older svn_wc_status_t structures.
Definition: svn_wc.h:4174
svn_error_t * svn_client_diff_peg6(const apr_array_header_t *diff_options, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_added, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t ignore_properties, svn_boolean_t properties_only, svn_boolean_t use_git_diff_format, const char *header_encoding, svn_stream_t *outstream, svn_stream_t *errstream, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_peg7(), but with pretty_print_mergeinfo always passed as TRUE...
svn_error_t *(* svn_wc_conflict_resolver_func2_t)(svn_wc_conflict_result_t **result, const svn_wc_conflict_description2_t *description, void *baton, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
A callback used in merge, update and switch for resolving conflicts during the application of a tree ...
Definition: svn_wc.h:2276
svn_error_t * svn_client_update3(apr_array_header_t **result_revs, const apr_array_header_t *paths, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t depth_is_sticky, svn_boolean_t ignore_externals, svn_boolean_t allow_unver_obstructions, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_update4() but with make_parents always set to FALSE and adds_as_modification se...
apr_time_t last_changed_date
The date of the last_changed_rev.
Definition: svn_client.h:7792
A simple counted string.
Definition: svn_string.h:96
void svn_client_get_ssl_server_trust_file_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_server_trust_t, allocated in pool.
The commit candidate structure.
Definition: svn_client.h:576
Subversion&#39;s authentication system.
void svn_client_conflict_option_set_merged_propval(svn_client_conflict_option_t *option, const svn_string_t *merged_propval)
Set a merged property value on option to merged_propval.
svn_error_t * svn_client_conflict_get_repos_info(const char **repos_root_url, const char **repos_uuid, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return information about the repository associated with conflict.
svn_error_t * svn_client_root_url_from_path(const char **url, const char *path_or_url, svn_client_ctx_t *ctx, apr_pool_t *pool)
Set *url to the repository root URL of the repository in which path_or_url is versioned (or scheduled...
svn_boolean_t copied
A file or directory can be &#39;copied&#39; if it&#39;s scheduled for addition-with-history (or part of a subtree...
Definition: svn_client.h:2412
const char * url
commit URL for this item
Definition: svn_client.h:552
svn_error_t * svn_client_diff_peg2(const apr_array_header_t *diff_options, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_peg3(), but with header_encoding set to APR_LOCALE_CHARSET.
struct svn_client_conflict_option_t svn_client_conflict_option_t
An opaque type which represents a resolution option for a conflict.
Definition: svn_client.h:4575
const char * repos_root_URL
The root URL of the repository.
Definition: svn_client.h:7635
const svn_lock_t * repos_lock
The node&#39;s lock in the repository, if any.
Definition: svn_client.h:2483
const svn_version_t * svn_client_version(void)
Get libsvn_client version information.
Information about a shelf.
Definition: svn_client.h:7397
const char * moved_from_abspath
When committing a move, this contains the absolute path where the node was directly moved from...
Definition: svn_client.h:535
svn_boolean_t wc_is_locked
A node can be &#39;locked&#39; if a working copy update is in progress or was interrupted.
Definition: svn_client.h:2407
apr_array_header_t * outgoing_prop_changes
An array of svn_prop_t *&#39;s, which are outgoing changes to make to properties in the repository...
Definition: svn_client.h:519
svn_node_kind_t svn_client_conflict_tree_get_victim_node_kind(svn_client_conflict_t *conflict)
Return the node kind of the tree conflict victim described by conflict.
svn_error_t * svn_client_diff_peg5(const apr_array_header_t *diff_options, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t use_git_diff_format, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff6_peg6(), but with outfile and errfile, instead of outstream and errstream...
svn_error_t * svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo, const char *path_or_url, const svn_opt_revision_t *peg_revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
Get the mergeinfo for a single target node (ignoring any subtrees).
svn_node_kind_t kind
The kind of node as recorded in the working copy.
Definition: svn_client.h:2375
svn_filesize_t filesize
The actual size of the working file on disk, or SVN_INVALID_FILESIZE if unknown (or if the item isn&#39;t...
Definition: svn_client.h:2382
svn_error_t * svn_client_commit_item_create(const svn_client_commit_item3_t **item, apr_pool_t *pool)
Like svn_client_commit_item3_create() but with a stupid "const" qualifier on the returned structure...
svn_error_t * svn_client_lock(const apr_array_header_t *targets, const char *comment, svn_boolean_t steal_lock, svn_client_ctx_t *ctx, apr_pool_t *pool)
Lock targets in the repository.
svn_error_t * svn_client_uuid_from_path(const char **uuid, const char *path, svn_wc_adm_access_t *adm_access, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_uuid_from_path2(), but with a relative path and an access baton.
svn_error_t * svn_client_conflict_get_conflicted(svn_boolean_t *text_conflicted, apr_array_header_t **props_conflicted, svn_boolean_t *tree_conflicted, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Indicate the types of conflicts present on the working copy node described by conflict.
svn_error_t * svn_client_diff_summarize_peg(const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_client_diff_summarize_func_t summarize_func, void *summarize_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_summarize_peg2(), but with changelists passed as NULL, and depth set accor...
svn_error_t * svn_client_log5(const apr_array_header_t *targets, const svn_opt_revision_t *peg_revision, const apr_array_header_t *revision_ranges, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_boolean_t include_merged_revisions, const apr_array_header_t *revprops, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Invoke receiver with receiver_baton on each log message from each (svn_opt_revision_range_t *) range ...
svn_error_t *(* svn_client__layout_func_t)(void *layout_baton, const char *local_abspath, const char *repos_root_url, svn_boolean_t not_present, svn_boolean_t url_changed, const char *url, svn_boolean_t revision_changed, svn_revnum_t revision, svn_boolean_t depth_changed, svn_depth_t depth, apr_pool_t *scratch_pool)
Callback for svn_client__layout_list()
Definition: svn_client.h:1592
svn_error_t * svn_client_log2(const apr_array_header_t *targets, const svn_opt_revision_t *start, const svn_opt_revision_t *end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_log3(), but with the kind field of peg_revision set to svn_opt_revision_unspeci...
svn_error_t *(* svn_client_conflict_walk_func_t)(void *baton, svn_client_conflict_t *conflict, apr_pool_t *scratch_pool)
Callback for svn_client_conflict_conflict_walk();.
Definition: svn_client.h:4864
svn_error_t * svn_client_diff2(const apr_array_header_t *diff_options, const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff3(), but with header_encoding set to APR_LOCALE_CHARSET.
A revision, specified in one of svn_opt_revision_kind ways.
Definition: svn_opt.h:469
svn_revnum_t ood_changed_rev
Set to the youngest committed revision, or SVN_INVALID_REVNUM if not out of date. ...
Definition: svn_client.h:2487
svn_error_t *(* svn_client_list_func_t)(void *baton, const char *path, const svn_dirent_t *dirent, const svn_lock_t *lock, const char *abs_path, apr_pool_t *pool)
Similar to svn_client_list_func2_t, but without any information about externals definitions.
Definition: svn_client.h:6730
svn_client_conflict_option_id_t
A public enumeration of conflict option IDs.
Definition: svn_client.h:4582
svn_error_t * svn_client__shelf_revprop_set_all(svn_client__shelf_t *shelf, apr_hash_t *revprop_table, apr_pool_t *scratch_pool)
Set shelf&#39;s revprops to revprop_table.
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:7624
svn_error_t * svn_client_diff_peg(const apr_array_header_t *diff_options, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_peg2(), but with ignore_content_type always set to FALSE.
svn_error_t * svn_client_blame3(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, const svn_diff_file_options_t *diff_options, svn_boolean_t ignore_mime_type, svn_client_blame_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_blame4(), but with include_merged_revisions set to FALSE, and using a svn_clien...
svn_depth_t
The concept of depth for directories.
svn_error_t * svn_client_conflict_option_get_moved_to_abspath_candidates(apr_array_header_t **possible_moved_to_abspaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Get a list of possible moved-to abspaths in the working copy which can be svn_client_conflict_option_...
svn_filesize_t size
The size of the file in the repository (untranslated, e.g.
Definition: svn_client.h:7786
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:599
svn_error_t *(* svn_client_diff_summarize_func_t)(const svn_client_diff_summarize_t *diff, void *baton, apr_pool_t *pool)
A callback used in svn_client_diff_summarize2() and svn_client_diff_summarize_peg2() for reporting a ...
Definition: svn_client.h:934
Repository Access.
svn_boolean_t versioned
If the path is under version control, versioned is TRUE, otherwise FALSE.
Definition: svn_client.h:2386
svn_error_t *(* svn_proplist_receiver2_t)(void *baton, const char *path, apr_hash_t *prop_hash, apr_array_header_t *inherited_props, apr_pool_t *scratch_pool)
The callback invoked by svn_client_proplist4().
Definition: svn_client.h:378
void(* svn_wc_status_func2_t)(void *baton, const char *path, svn_wc_status2_t *status)
Same as svn_wc_status_func3_t, but without a provided pool or the ability to propagate errors...
Definition: svn_wc.h:4165
const char * copyfrom_url
copyfrom-url or NULL if not a copied item
Definition: svn_client.h:487
Subversion error object.
Definition: svn_types.h:180
void(* svn_ra_progress_notify_func_t)(apr_off_t progress, apr_off_t total, void *baton, apr_pool_t *pool)
Callback function type for progress notification.
Definition: svn_ra.h:219
svn_boolean_t file_external
If the item is a file that was added to the working copy with an svn:externals; if file_external is T...
Definition: svn_client.h:2444
svn_error_t * svn_client_diff5(const apr_array_header_t *diff_options, const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t use_git_diff_format, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff6(), but with outfile and errfile, instead of outstream and errstream...
Contextual diffing.
apr_time_t ood_changed_date
Set to the most recent commit date, or 0 if not out of date.
Definition: svn_client.h:2490
apr_hash_t * revprops
non-null; allocated in POOL
Definition: svn_client.h:7022
svn_error_t * svn_client_conflict_prop_get_description(const char **description, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return a textual human-readable description of the property conflict described by conflict...
svn_revnum_t rev
The revision of the object.
Definition: svn_client.h:7771
svn_error_t * svn_client_copy7(const apr_array_header_t *sources, const char *dst_path, svn_boolean_t copy_as_child, svn_boolean_t make_parents, svn_boolean_t ignore_externals, svn_boolean_t metadata_only, svn_boolean_t pin_externals, const apr_hash_t *externals_to_pin, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Copy each source in sources to dst_path.
svn_error_t * svn_client_get_merging_summary(svn_boolean_t *needs_reintegration, const char **yca_url, svn_revnum_t *yca_rev, const char **base_url, svn_revnum_t *base_rev, const char **right_url, svn_revnum_t *right_rev, const char **target_url, svn_revnum_t *target_rev, const char **repos_root_url, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_path_or_url, const svn_opt_revision_t *target_revision, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Get information about the state of merging between two branches.
svn_error_t * svn_client__shelf_set_log_message(svn_client__shelf_t *shelf, const char *log_message, apr_pool_t *scratch_pool)
Set the log message in shelf to log_message.
svn_error_t *(* svn_wc_status_func4_t)(void *baton, const char *local_abspath, const svn_wc_status3_t *status, apr_pool_t *scratch_pool)
A callback for reporting a status about local_abspath.
Definition: svn_wc.h:4141
svn_error_t * svn_client_propset_local(const char *propname, const svn_string_t *propval, const apr_array_header_t *targets, svn_depth_t depth, svn_boolean_t skip_checks, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Set propname to propval on each (const char *) target in targets.
apr_byte_t state_flags
state flags
Definition: svn_client.h:493
svn_error_t * svn_client_import4(const char *path, const char *url, svn_depth_t depth, svn_boolean_t no_ignore, svn_boolean_t ignore_unknown_node_types, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_import5(), but without support for an optional filter_callback and no_autoprops...
apr_hash_t * prop_hash
A hash of (const char *) property names, and (svn_string_t *) property values.
Definition: svn_client.h:353
svn_node_kind_t
The various types of nodes in the Subversion filesystem.
apr_int64_t svn_filesize_t
The size of a file in the Subversion FS.
Definition: svn_types.h:434
svn_wc_notify_func2_t notify_func2
notification function, defaulting to a function that forwards to notify_func().
Definition: svn_client.h:1002
svn_wc_schedule_t
The schedule states an entry can be in.
Definition: svn_wc.h:2866
void * log_msg_baton3
The callback baton for log_msg_func3.
Definition: svn_client.h:1033
svn_error_t * svn_client_add2(const char *path, svn_boolean_t recursive, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_add3(), but with no_ignore always set to FALSE.
svn_error_t * svn_client_propget(apr_hash_t **props, const char *propname, const char *target, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_propget2(), except that peg_revision is always the same as revision.
svn_error_t * svn_client_commit3(svn_commit_info_t **commit_info_p, const apr_array_header_t *targets, svn_boolean_t recurse, svn_boolean_t keep_locks, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_commit4(), but always with NULL for changelist_name, FALSE for keep_changelist...
svn_error_t *(* svn_auth_ssl_client_cert_pw_prompt_func_t)(svn_auth_cred_ssl_client_cert_pw_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
Set *cred by prompting the user, allocating *cred in pool.
Definition: svn_auth.h:477
const char * moved_from_abspath
Set to the local absolute path that this node was moved from, if this file or directory has been move...
Definition: svn_client.h:2515
svn_error_t * svn_client_status3(svn_revnum_t *result_rev, const char *path, const svn_opt_revision_t *revision, svn_wc_status_func2_t status_func, void *status_baton, svn_depth_t depth, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_boolean_t ignore_externals, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_status4(), but using an svn_wc_status_func2_t instead of an svn_wc_status_func3_t...
svn_error_t * svn_client_export4(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t overwrite, svn_boolean_t ignore_externals, svn_depth_t depth, const char *native_eol, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_export5(), but with ignore_keywords set to FALSE.
svn_error_t * svn_client__shelf_delete(const char *name, const char *local_abspath, svn_boolean_t dry_run, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Delete the shelf named name, or error if it doesn&#39;t exist.
svn_client_conflict_option_id_t svn_client_conflict_prop_get_resolution(svn_client_conflict_t *conflict, const char *propname)
Return the ID of the option this property conflict in property propname has been resolved to...
svn_error_t * svn_client__shelf_version_open(svn_client__shelf_version_t **shelf_version_p, svn_client__shelf_t *shelf, int version_number, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return in shelf_version an existing version of shelf, given its version_number (starting from 1)...
svn_error_t * svn_client__shelf_version_status_walk(svn_client__shelf_version_t *shelf_version, const char *wc_relpath, svn_wc_status_func4_t walk_func, void *walk_baton, apr_pool_t *scratch_pool)
Report the shelved status of all the shelved paths in shelf_version via walk_func(walk_baton, ...).
svn_error_t * svn_client_commit4(svn_commit_info_t **commit_info_p, const apr_array_header_t *targets, svn_depth_t depth, svn_boolean_t keep_locks, svn_boolean_t keep_changelists, const apr_array_header_t *changelists, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_commit5(), but returns the commit info in *commit_info_p rather than through a ...
Similar to svn_wc_conflict_description2_t, but with relative paths and adm_access batons...
Definition: svn_wc.h:1939
svn_error_t * svn_client_conflict_text_get_resolution_options(apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to text confl...
const char * svn_client_conflict_option_get_label(svn_client_conflict_option_t *option, apr_pool_t *result_pool)
Return a textual human-readable label of option, allocated in result_pool.
const char * path
The source path or URL.
Definition: svn_client.h:5496
svn_error_t * svn_client_merge_reintegrate(const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Perform a reintegration merge of source_path_or_url at source_peg_revision into target_wcpath.
struct svn_client_status_t svn_client_status_t
Structure for holding the "status" of a working copy item.
svn_ra_open_tunnel_func_t open_tunnel_func
Open-tunnel callback.
Definition: svn_client.h:1080
svn_error_t * svn_client_proplist(apr_array_header_t **props, const char *target, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_proplist2(), except that peg_revision is always the same as revision...
struct svn_client_commit_item3_t svn_client_commit_item3_t
The commit candidate structure.
svn_error_t * svn_client_info4(const char *abspath_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t fetch_excluded, svn_boolean_t fetch_actual_only, svn_boolean_t include_externals, const apr_array_header_t *changelists, svn_client_info_receiver2_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Invoke receiver with receiver_baton to return information about abspath_or_url in revision...
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:7795
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:582
struct svn_wc_adm_access_t svn_wc_adm_access_t
Baton for access to a working copy administrative area.
Definition: svn_wc.h:237
svn_error_t * svn_client_log4(const apr_array_header_t *targets, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_boolean_t include_merged_revisions, const apr_array_header_t *revprops, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_log5(), but takes explicit start and end parameters instead of an array of revi...
svn_error_t * svn_client__shelf_close(svn_client__shelf_t *shelf, apr_pool_t *scratch_pool)
Close shelf.
Subversion&#39;s working copy library.
svn_error_t * svn_client_add4(const char *path, svn_depth_t depth, svn_boolean_t force, svn_boolean_t no_ignore, svn_boolean_t add_parents, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_add5(), but with no_autoprops always set to FALSE.
#define SVN_EXPERIMENTAL
Macro used to mark experimental functions.
Definition: svn_types.h:88
svn_error_t *(* svn_client_get_commit_log3_t)(const char **log_msg, const char **tmp_file, const apr_array_header_t *commit_items, void *baton, apr_pool_t *pool)
Callback type used by commit-y operations to get a commit log message from the caller.
Definition: svn_client.h:668
svn_error_t * svn_client__shelf_replay(svn_client__shelf_version_t *shelf_version, const char *top_relpath, const svn_delta_editor_t *editor, void *edit_baton, svn_wc_notify_func2_t notify_func, void *notify_baton, apr_pool_t *scratch_pool)
Send committable changes found in a shelf to a delta-editor.
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:569
svn_error_t * svn_client_uuid_from_path2(const char **uuid, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return the repository uuid for working-copy local_abspath, allocated in result_pool.
svn_error_t * svn_client_blame(const char *path_or_url, const svn_opt_revision_t *start, const svn_opt_revision_t *end, svn_client_blame_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_blame2() except that peg_revision is always the same as end.
svn_error_t * svn_client_merge_peg4(const char *source_path_or_url, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge_peg5(), but automatic merge is not available (ranges_to_merge must not be...
svn_error_t *(* svn_client_status_func_t)(void *baton, const char *path, const svn_client_status_t *status, apr_pool_t *scratch_pool)
A callback for reporting a status about path (which may be an absolute or relative path)...
Definition: svn_client.h:2563
svn_error_t * svn_client_revert(const apr_array_header_t *paths, svn_boolean_t recursive, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_revert2(), but with changelists passed as NULL, and depth set according to recu...
svn_error_t * svn_client_blame2(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, svn_client_blame_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_blame3(), but with diff_options set to default options as returned by svn_diff_...
struct svn_client__shelf_info_t svn_client__shelf_info_t
Information about a shelf.
svn_error_t * svn_client_export5(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t overwrite, svn_boolean_t ignore_externals, svn_boolean_t ignore_keywords, svn_depth_t depth, const char *native_eol, svn_client_ctx_t *ctx, apr_pool_t *pool)
Export the contents of either a subversion repository or a subversion working copy into a &#39;clean&#39; dir...
apr_size_t working_size
Similar to working_size64, but will be SVN_INFO_SIZE_UNKNOWN when its value would overflow apr_size_t...
Definition: svn_client.h:7682
svn_error_t * svn_client_revprop_get(const char *propname, svn_string_t **propval, const char *URL, const svn_opt_revision_t *revision, svn_revnum_t *set_rev, svn_client_ctx_t *ctx, apr_pool_t *pool)
Set *propval to the value of propname on revision revision in the repository represented by URL...
struct svn_client_diff_summarize_t svn_client_diff_summarize_t
A struct that describes the diff of an item.
svn_error_t * svn_client_ls3(apr_hash_t **dirents, apr_hash_t **locks, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_list(), but always passes SVN_DIRENT_ALL for the dirent_fields argument and return...
svn_error_t *(* svn_log_entry_receiver_t)(void *baton, svn_log_entry_t *log_entry, apr_pool_t *pool)
The callback invoked by log message loopers, such as svn_ra_plugin_t.get_log() and svn_repos_get_logs...
Definition: svn_types.h:967
svn_error_t * svn_client__shelf_revprop_get(svn_string_t **prop_val, svn_client__shelf_t *shelf, const char *prop_name, apr_pool_t *result_pool)
Get shelf&#39;s revprop prop_name into *prop_val.
svn_error_t * svn_client_conflict_option_get_moved_to_repos_relpath_candidates(apr_array_header_t **possible_moved_to_repos_relpaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Get a list of possible repository paths which can be applied to the svn_client_conflict_option_incomi...
const char * repos_root_url
The URL of the repository root.
Definition: svn_client.h:2415
svn_client_conflict_option_id_t svn_client_conflict_option_get_id(svn_client_conflict_option_t *option)
Return an ID for option.
svn_wc_operation_t
The user operation that exposed a conflict.
Definition: svn_wc.h:1681
svn_wc_conflict_resolver_func2_t conflict_func2
Conflict resolution callback and baton, if available.
Definition: svn_client.h:1051
svn_error_t * svn_client_cat(svn_stream_t *out, const char *path_or_url, const svn_opt_revision_t *revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_cat2() except that the peg revision is always the same as revision.
svn_error_t *(* svn_auth_simple_prompt_func_t)(svn_auth_cred_simple_t **cred, void *baton, const char *realm, const char *username, svn_boolean_t may_save, apr_pool_t *pool)
Credential-constructing prompt functions.
Definition: svn_auth.h:376
svn_error_t * svn_client_merge3(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge4(), but with allow_mixed_rev set to TRUE.
svn_error_t * svn_client_propget4(apr_hash_t **props, const char *propname, const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_revnum_t *actual_revnum, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Similar to svn_client_propget5 but with inherited_props always passed as NULL.
svn_error_t * svn_client_conflict_tree_get_details(svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Find more information about the tree conflict represented by conflict.
svn_client_get_commit_log3_t log_msg_func3
Log message callback function.
Definition: svn_client.h:1029
svn_error_t * svn_client__shelf_mods_editor(const svn_delta_editor_t **editor_p, void **edit_baton_p, svn_client__shelf_version_t *shelf_version, svn_wc_notify_func2_t notify_func, void *notify_baton, svn_client_ctx_t *ctx, apr_pool_t *result_pool)
Get an editor that, when driven, will store changes in shelf_version.
svn_error_t * svn_client_update4(apr_array_header_t **result_revs, const apr_array_header_t *paths, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t depth_is_sticky, svn_boolean_t ignore_externals, svn_boolean_t allow_unver_obstructions, svn_boolean_t adds_as_modification, svn_boolean_t make_parents, svn_client_ctx_t *ctx, apr_pool_t *pool)
Update working trees paths to revision, authenticating with the authentication baton cached in ctx...
svn_revnum_t copyfrom_rev
copyfrom-rev, valid when copyfrom_url != NULL
Definition: svn_client.h:561
struct svn_client_commit_item_t svn_client_commit_item_t
The commit candidate structure.
svn_error_t * svn_client_info(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_info_receiver_t receiver, void *receiver_baton, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_info2() but with changelists passed as NULL, and depth set according to recurse...
svn_error_t * svn_client__shelf_save_new_version3(svn_client__shelf_version_t **new_version_p, svn_client__shelf_t *shelf, const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_status_func_t shelved_func, void *shelved_baton, svn_client_status_func_t not_shelved_func, void *not_shelved_baton, apr_pool_t *scratch_pool)
Save the local modifications found by paths, depth, changelists as a new version of shelf...
svn_error_t * svn_client_import5(const char *path, const char *url, svn_depth_t depth, svn_boolean_t no_ignore, svn_boolean_t no_autoprops, svn_boolean_t ignore_unknown_node_types, const apr_hash_t *revprop_table, svn_client_import_filter_func_t filter_callback, void *filter_baton, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Import file or directory path into repository directory url at head, authenticating with the authenti...
Version information.
Definition: svn_version.h:147
void svn_client_get_simple_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_simple_t that gets/sets...
svn_depth_t depth
The depth of the node as recorded in the working copy (svn_depth_unknown for files or when no depth i...
Definition: svn_client.h:2455
const char * changelist
Definition: svn_client.h:7672
svn_error_t * svn_client_propset_remote(const char *propname, const svn_string_t *propval, const char *url, svn_boolean_t skip_checks, svn_revnum_t base_revision_for_url, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Set propname to propval on url.
svn_error_t * svn_client_patch(const char *patch_abspath, const char *wc_dir_abspath, svn_boolean_t dry_run, int strip_count, svn_boolean_t reverse, svn_boolean_t ignore_whitespace, svn_boolean_t remove_tempfiles, svn_client_patch_func_t patch_func, void *patch_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Apply a unidiff patch that&#39;s located at absolute path patch_abspath to the working copy directory at ...
revision::number status(context &ctx, const char *path, const revision &rev, depth depth, status_flags flags, status_callback callback)
Perform a status operation on path.
apr_size_t size
Similar to size64, but size will be SVN_INFO_SIZE_UNKNOWN when its value would overflow apr_size_t (s...
Definition: svn_client.h:7692
struct svn_stream_t svn_stream_t
An abstract stream of bytes–either incoming or outgoing or both.
Definition: svn_io.h:863
svn_error_t *(* svn_log_message_receiver_t)(void *baton, apr_hash_t *changed_paths, svn_revnum_t revision, const char *author, const char *date, const char *message, apr_pool_t *pool)
Similar to svn_log_entry_receiver_t, except this uses separate parameters for each part of the log en...
Definition: svn_types.h:978
svn_error_t * svn_client_conflict_option_set_moved_to_repos_relpath(svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except that in SVN 1...
Subversion&#39;s data types.
const svn_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:7798
A struct that describes the diff of an item.
Definition: svn_client.h:896
struct svn_auth_baton_t svn_auth_baton_t
The type of a Subversion authentication object.
Definition: svn_auth.h:87
svn_error_t * svn_client_move5(svn_commit_info_t **commit_info_p, const apr_array_header_t *src_paths, const char *dst_path, svn_boolean_t force, svn_boolean_t move_as_child, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move6(), but returns the commit info in *commit_info_p rather than through a ca...
svn_error_t * svn_client_delete2(svn_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_delete3(), but with keep_local always set to FALSE, and revprop_table passed as...
svn_error_t * svn_client_mkdir2(svn_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_mkdir3(), but with make_parents always FALSE, and revprop_table always NULL...
svn_node_kind_t node_kind
File or dir.
Definition: svn_client.h:910
svn_error_t * svn_client_get_changelists(const char *path, const apr_array_header_t *changelists, svn_depth_t depth, svn_changelist_receiver_t callback_func, void *callback_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Beginning at path, crawl to depth to discover every path in or under path which belongs to one of the...
svn_error_t * svn_client_vacuum(const char *dir_abspath, svn_boolean_t remove_unversioned_items, svn_boolean_t remove_ignored_items, svn_boolean_t fix_recorded_timestamps, svn_boolean_t vacuum_pristines, svn_boolean_t include_externals, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Recursively vacuum a working copy directory dir_abspath, removing unnecessary data.
svn_error_t * svn_client_conflict_tree_resolve(svn_client_conflict_t *conflict, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Resolve a tree conflict using resolution option option.
svn_error_t * svn_client_args_to_target_array(apr_array_header_t **targets_p, apr_getopt_t *os, const apr_array_header_t *known_targets, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_args_to_target_array2() but with keep_last_origpath_on_truepath_collision alway...
svn_error_t *(* svn_client_get_commit_log_t)(const char **log_msg, const char **tmp_file, apr_array_header_t *commit_items, void *baton, apr_pool_t *pool)
Callback type used by commit-y operations to get a commit log message from the caller.
Definition: svn_client.h:722
svn_error_t * svn_client_revprop_set2(const char *propname, const svn_string_t *propval, const svn_string_t *original_propval, const char *URL, const svn_opt_revision_t *revision, svn_revnum_t *set_rev, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Set propname to propval on revision revision in the repository represented by URL.
This is a structure which stores a filename and a hash of property names and values.
Definition: svn_client.h:346
svn_error_t * svn_client_resolved(const char *path, svn_boolean_t recursive, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_resolve(), but without automatic conflict resolution support.
svn_error_t * svn_client_status5(svn_revnum_t *result_rev, svn_client_ctx_t *ctx, const char *path, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_boolean_t ignore_externals, svn_boolean_t depth_as_sticky, const apr_array_header_t *changelists, svn_client_status_func_t status_func, void *status_baton, apr_pool_t *scratch_pool)
Same as svn_client_status6(), but with check_out_of_date set to update and check_working_copy set to ...
svn_error_t * svn_client_revprop_list(apr_hash_t **props, const char *URL, const svn_opt_revision_t *revision, svn_revnum_t *set_rev, svn_client_ctx_t *ctx, apr_pool_t *pool)
Set *props to a hash of the revision props attached to revision in the repository represented by URL...
svn_error_t * svn_client_conflict_get_incoming_old_repos_location(const char **incoming_old_repos_relpath, svn_revnum_t *incoming_old_regrev, svn_node_kind_t *incoming_old_node_kind, svn_client_conflict_t *conflict, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Return the repository-relative location and the node kind of the incoming old version of the conflict...
svn_error_t * svn_client_conflict_prop_get_propvals(const svn_string_t **base_propval, const svn_string_t **working_propval, const svn_string_t **incoming_old_propval, const svn_string_t **incoming_new_propval, svn_client_conflict_t *conflict, const char *propname, apr_pool_t *result_pool)
Return the set of property values involved in the conflict of property PROPNAME described by conflict...
svn_error_t * svn_client_mergeinfo_log2(svn_boolean_t finding_merged, const char *target_path_or_url, const svn_opt_revision_t *target_peg_revision, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const svn_opt_revision_t *source_start_revision, const svn_opt_revision_t *source_end_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Describe the revisions that either have or have not been merged from one source branch (or subtree) i...
svn_error_t * svn_client_diff_peg3(const apr_array_header_t *diff_options, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_peg4(), but with changelists passed as NULL, and depth set according to re...
svn_error_t *(* svn_client_blame_receiver3_t)(void *baton, svn_revnum_t start_revnum, svn_revnum_t end_revnum, apr_int64_t line_no, svn_revnum_t revision, apr_hash_t *rev_props, svn_revnum_t merged_revision, apr_hash_t *merged_rev_props, const char *merged_path, const char *line, svn_boolean_t local_change, apr_pool_t *pool)
Similar to svn_client_blame_receiver4_t, but with the line parameter as a (const char*) instead of an...
Definition: svn_client.h:801
const char * path
Path relative to the target.
Definition: svn_client.h:900
struct svn_client_info2_t svn_client_info2_t
A structure which describes various system-generated metadata about a working-copy path or URL...
svn_client_commit_item3_t * svn_client_commit_item3_dup(const svn_client_commit_item3_t *item, apr_pool_t *pool)
Return a duplicate of item, allocated in pool.
svn_ra_progress_notify_func_t progress_func
Notification callback for network progress information.
Definition: svn_client.h:1020
A structure which describes various system-generated metadata about a working-copy path or URL...
Definition: svn_client.h:7621
#define SVN_DEPRECATED
Macro used to mark deprecated functions.
Definition: svn_types.h:62
svn_error_t * svn_client_status4(svn_revnum_t *result_rev, const char *path, const svn_opt_revision_t *revision, svn_wc_status_func3_t status_func, void *status_baton, svn_depth_t depth, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_boolean_t ignore_externals, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Same as svn_client_status5(), but using svn_wc_status_func3_t instead of svn_client_status_func_t and...
const svn_wc_info_t * wc_info
Possible information about the working copy, NULL if not valid.
Definition: svn_client.h:7801
void(* svn_wc_notify_func2_t)(void *baton, const svn_wc_notify_t *notify, apr_pool_t *pool)
Notify the world that notify->action has happened to notify->path.
Definition: svn_wc.h:1553
svn_wc_conflict_description_t * tree_conflict
Info on any tree conflict of which this node is a victim.
Definition: svn_client.h:7717
A structure which describes various system-generated metadata about a working-copy path or URL...
Definition: svn_client.h:7763
svn_boolean_t(* svn_ra_check_tunnel_func_t)(void *tunnel_baton, const char *tunnel_name)
Callback function that checks if an ra_svn tunnel called tunnel_name is handled by the callbakcs or t...
Definition: svn_ra.h:283
long int svn_revnum_t
A revision number.
svn_error_t * svn_client_merge(const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge2(), but with merge_options set to NULL.
svn_error_t *(* svn_wc_status_func3_t)(void *baton, const char *path, svn_wc_status2_t *status, apr_pool_t *pool)
Same as svn_wc_status_func4_t, but with a non-const status and a relative path.
Definition: svn_wc.h:4153
svn_error_t *(* svn_cancel_func_t)(void *cancel_baton)
A user defined callback that subversion will call with a user defined baton to see if the current ope...
Definition: svn_types.h:1085
const svn_lock_t * lock
The locally present lock.
Definition: svn_client.h:2448
svn_error_t *(* svn_proplist_receiver_t)(void *baton, const char *path, apr_hash_t *prop_hash, apr_pool_t *pool)
Similar to svn_proplist_receiver2_t, but doesn&#39;t return inherited properties.
Definition: svn_client.h:393
svn_error_t * svn_client_commit2(svn_client_commit_info_t **commit_info_p, const apr_array_header_t *targets, svn_boolean_t recurse, svn_boolean_t keep_locks, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_commit3(), but uses svn_client_commit_info_t for commit_info_p.
svn_revnum_t revision
just-committed revision.
Definition: svn_client.h:419
svn_error_t * svn_client_diff_peg7(const apr_array_header_t *diff_options, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_added, svn_boolean_t no_diff_deleted, svn_boolean_t show_copies_as_adds, svn_boolean_t ignore_content_type, svn_boolean_t ignore_properties, svn_boolean_t properties_only, svn_boolean_t use_git_diff_format, svn_boolean_t pretty_print_mergeinfo, const char *header_encoding, svn_stream_t *outstream, svn_stream_t *errstream, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Produce diff output which describes the delta between the filesystem object path_or_url in peg revisi...
const char * date
server-side date of the commit.
Definition: svn_client.h:422
svn_error_t * svn_client__shelf_list(apr_hash_t **shelf_infos, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *shelf_infos to a hash, keyed by shelf name, of pointers to svn_client_shelf_info_t structures...
apr_time_t last_changed_date
The date of the last_changed_rev.
Definition: svn_client.h:7644
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:7789
struct svn_client_conflict_t svn_client_conflict_t
An opaque type which represents a conflicted node in the working copy.
Definition: svn_client.h:4568
svn_error_t * svn_client_list3(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, apr_uint32_t dirent_fields, svn_boolean_t fetch_locks, svn_boolean_t include_externals, svn_client_list_func2_t list_func, void *baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_list4(), but with patterns set to NULL.
const char * copyfrom_url
copyfrom-url
Definition: svn_client.h:591
const char * url
commit URL for this item
Definition: svn_client.h:585
svn_error_t * svn_client_propget3(apr_hash_t **props, const char *propname, const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_revnum_t *actual_revnum, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_propget4(), but with the following change to the output hash keys: keys are `ch...
svn_error_t * svn_client_delete(svn_client_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_delete2(), but takes the svn_client_commit_info_t type for commit_info_p.
svn_error_t * svn_client_diff_summarize_peg2(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, svn_depth_t depth, svn_boolean_t ignore_ancestry, const apr_array_header_t *changelists, svn_client_diff_summarize_func_t summarize_func, void *summarize_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Produce a diff summary which lists the changed items between the filesystem object path_or_url in peg...
svn_error_t *(* svn_client_blame_receiver4_t)(void *baton, apr_int64_t line_no, svn_revnum_t revision, apr_hash_t *rev_props, svn_revnum_t merged_revision, apr_hash_t *merged_rev_props, const char *merged_path, const svn_string_t *line, svn_boolean_t local_change, apr_pool_t *pool)
Callback type used by svn_client_blame6() to notify the caller that line line_no of the blamed file w...
Definition: svn_client.h:776
svn_revnum_t revision
revision (copyfrom-rev if _IS_COPY)
Definition: svn_client.h:588
A structure which describes the source of a copy operation–its path, revision, and peg revision...
Definition: svn_client.h:5493
svn_error_t * svn_client_export(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, svn_opt_revision_t *revision, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_export2(), but with native_eol always set to NULL.
svn_error_t * svn_client__layout_list(const char *local_abspath, svn_client__layout_func_t layout, void *layout_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Describe the layout of the working copy below local_abspath to the callback layout.
void svn_client_get_username_prompt_provider(svn_auth_provider_object_t **provider, svn_auth_username_prompt_func_t prompt_func, void *prompt_baton, int retry_limit, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_username_t that gets in...
const char * files_dir_abspath
abspath of the storage area
Definition: svn_client.h:7038
svn_error_t * svn_client_remove_from_changelists(const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Remove each path in paths (recursing to depth as necessary) from changelists to which they are curren...
void svn_client_get_ssl_server_trust_prompt_provider(svn_auth_provider_object_t **provider, svn_auth_ssl_server_trust_prompt_func_t prompt_func, void *prompt_baton, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_server_trust_t, allocated in pool.
A general subversion directory entry.
Definition: svn_types.h:563
const char * ood_changed_author
Set to the user name of the youngest commit, or NULL if not out of date or non-existent.
Definition: svn_client.h:2497
svn_error_t * svn_client_conflict_option_get_moved_to_repos_relpath_candidates2(apr_array_header_t **possible_moved_to_repos_relpaths, svn_client_conflict_option_t *option, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Get a list of possible repository paths which can be applied to option.
svn_error_t * svn_client_delete3(svn_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_boolean_t force, svn_boolean_t keep_local, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_delete4(), but returns the commit info in *commit_info_p rather than through a ...
svn_wc_notify_func_t notify_func
notification callback function.
Definition: svn_client.h:967
struct svn_ra_session_t svn_ra_session_t
A repository access session.
Definition: svn_ra.h:685
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:7766
void * progress_baton
Callback baton for progress_func.
Definition: svn_client.h:1024
svn_wc_operation_t svn_client_conflict_get_operation(svn_client_conflict_t *conflict)
Return the operation during which the conflict described by conflict was recorded.
void svn_client_get_username_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_username_t that gets/se...
A set of directory entry data elements as returned by svn_io_get_dirents.
Definition: svn_io.h:78
svn_error_t * svn_client_conflict_prop_resolve_by_id(svn_client_conflict_t *conflict, const char *propname, svn_client_conflict_option_id_t option_id, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
If the provided option_id is the ID of an option which resolves conflict, resolve the property confli...
svn_error_t *(* svn_client_list_func2_t)(void *baton, const char *path, const svn_dirent_t *dirent, const svn_lock_t *lock, const char *abs_path, const char *external_parent_url, const char *external_target, apr_pool_t *scratch_pool)
The type of function invoked by svn_client_list3() to report the details of each directory entry bein...
Definition: svn_client.h:6711
svn_error_t * svn_client_merge_peg3(const char *source, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge_peg4(), but with allow_mixed_rev set to TRUE.
svn_error_t * svn_client_move2(svn_client_commit_info_t **commit_info_p, const char *src_path, const char *dst_path, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move3(), but uses svn_client_commit_info_t for commit_info_p.
const char * repos_UUID
The repository&#39;s UUID.
Definition: svn_client.h:7638
svn_error_t * svn_client_conflict_tree_get_resolution_options(apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *options to an array of pointers to svn_client_conflict_option_t objects applicable to the tree c...
svn_error_t * svn_client_create_context2(svn_client_ctx_t **ctx, apr_hash_t *cfg_hash, apr_pool_t *pool)
Initialize a client context.
svn_error_t * svn_client_diff(const apr_array_header_t *diff_options, const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, apr_file_t *outfile, apr_file_t *errfile, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff2(), but with ignore_content_type always set to FALSE.
svn_error_t * svn_client_proplist2(apr_array_header_t **props, const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_proplist3(), except the properties are returned as an array of svn_client_propl...
svn_error_t * svn_client_blame4(const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, const svn_diff_file_options_t *diff_options, svn_boolean_t ignore_mime_type, svn_boolean_t include_merged_revisions, svn_client_blame_receiver2_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_blame5(), but with svn_client_blame_receiver2_t as the receiver.
const char * copyfrom_url
copyfrom-url or NULL if not a copied item
Definition: svn_client.h:558
void svn_client_get_simple_prompt_provider(svn_auth_provider_object_t **provider, svn_auth_simple_prompt_func_t prompt_func, void *prompt_baton, int retry_limit, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_simple_t that gets info...
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:549
svn_error_t * svn_client_move4(svn_commit_info_t **commit_info_p, const char *src_path, const char *dst_path, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move5(), with only one src_path, move_as_child set to FALSE, revprop_table passed as NULL, and make_parents set to FALSE.
svn_revnum_t rev
The revision of the object.
Definition: svn_client.h:7629
void(* svn_wc_notify_func_t)(void *baton, const char *path, svn_wc_notify_action_t action, svn_node_kind_t kind, const char *mime_type, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, svn_revnum_t revision)
Similar to svn_wc_notify_func2_t, but takes the information as arguments instead of struct fields...
Definition: svn_wc.h:1563
svn_error_t * svn_client_upgrade(const char *wcroot_dir, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Recursively upgrade a working copy from any older format to the current WC metadata storage format...
svn_error_t * svn_client_conflict_walk(const char *local_abspath, svn_depth_t depth, svn_client_conflict_walk_func_t conflict_walk_func, void *conflict_walk_func_baton, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Walk all conflicts within the specified depth of local_abspath.
svn_error_t * svn_client_move6(const apr_array_header_t *src_paths, const char *dst_path, svn_boolean_t move_as_child, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move7(), but with allow_mixed_revisions always set to TRUE and metadata_only al...
svn_client_info2_t * svn_client_info2_dup(const svn_client_info2_t *info, apr_pool_t *pool)
Return a duplicate of info, allocated in pool.
svn_error_t * svn_client_mkdir3(svn_commit_info_t **commit_info_p, const apr_array_header_t *paths, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_mkdir4(), but returns the commit info in *commit_info_p rather than through a c...
apr_time_t mtime
time-stamp of this version
Definition: svn_client.h:7035
svn_error_t * svn_client__shelf_paths_changed(apr_hash_t **affected_paths, svn_client__shelf_version_t *shelf_version, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *affected_paths to a hash with one entry for each path affected by the shelf_version.
svn_revnum_t revision
revision of textbase
Definition: svn_client.h:484
svn_error_t * svn_client__shelf_apply(svn_client__shelf_version_t *shelf_version, svn_boolean_t dry_run, apr_pool_t *scratch_pool)
Apply shelf_version to the WC.
svn_error_t * svn_client_propset2(const char *propname, const svn_string_t *propval, const char *target, svn_boolean_t recurse, svn_boolean_t skip_checks, svn_client_ctx_t *ctx, apr_pool_t *pool)
Like svn_client_propset3(), but with base_revision_for_url always SVN_INVALID_REVNUM; commit_info_p a...
svn_error_t * svn_client_uuid_from_url(const char **uuid, const char *url, svn_client_ctx_t *ctx, apr_pool_t *pool)
Get repository uuid for url.
svn_error_t * svn_client_resolve(const char *path, svn_depth_t depth, svn_wc_conflict_choice_t conflict_choice, svn_client_ctx_t *ctx, apr_pool_t *pool)
Perform automatic conflict resolution on a working copy path.
svn_error_t * svn_client_switch3(svn_revnum_t *result_rev, const char *path, const char *url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t depth_is_sticky, svn_boolean_t ignore_externals, svn_boolean_t allow_unver_obstructions, svn_boolean_t ignore_ancestry, svn_client_ctx_t *ctx, apr_pool_t *pool)
Switch an existing working copy directory to a different repository location.
The commit candidate structure.
Definition: svn_client.h:543
svn_error_t * svn_client_switch(svn_revnum_t *result_rev, const char *path, const char *url, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_switch2() but with allow_unver_obstructions, ignore_externals, and depth_is_sticky always set to FALSE, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.
struct svn_client_commit_info_t svn_client_commit_info_t
Information about commits passed back to client from this module.
apr_time_t mtime
mtime of the latest change
Definition: svn_client.h:7399
struct svn_client_commit_item2_t svn_client_commit_item2_t
The commit candidate structure.
svn_error_t * svn_client_move(svn_client_commit_info_t **commit_info_p, const char *src_path, const svn_opt_revision_t *src_revision, const char *dst_path, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move2(), but an extra argument src_revision must be passed. ...
svn_error_t * svn_client_move3(svn_commit_info_t **commit_info_p, const char *src_path, const char *dst_path, svn_boolean_t force, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_move4(), with the difference that if dst_path already exists and is a directory...
svn_error_t * svn_client_merge_peg2(const char *source, const svn_opt_revision_t *revision1, const svn_opt_revision_t *revision2, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge_peg3(), but with record_only set to FALSE, and depth set according to rec...
svn_error_t * svn_client_proplist3(const char *target, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, const apr_array_header_t *changelists, svn_proplist_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_proplist4(), except that the receiver type is a svn_proplist_receiver_t, get_target_inherited_props is always passed NULL, and there is no separate scratch pool.
svn_error_t * svn_client__shelf_open_or_create(svn_client__shelf_t **shelf_p, const char *name, const char *local_abspath, svn_client_ctx_t *ctx, apr_pool_t *result_pool)
Open an existing shelf or create a new shelf.
const char * path
absolute working-copy path of item
Definition: svn_client.h:579
svn_error_t *(* svn_client_get_commit_log2_t)(const char **log_msg, const char **tmp_file, const apr_array_header_t *commit_items, void *baton, apr_pool_t *pool)
Callback type used by commit-y operations to get a commit log message from the caller.
Definition: svn_client.h:695
One version of a shelved change-set.
Definition: svn_client.h:7031
void * notify_baton
notification callback baton for notify_func()
Definition: svn_client.h:972
An item with no text modifications.
Definition: svn_client.h:874
svn_error_t * svn_client_commit6(const apr_array_header_t *targets, svn_depth_t depth, svn_boolean_t keep_locks, svn_boolean_t keep_changelists, svn_boolean_t commit_as_operations, svn_boolean_t include_file_externals, svn_boolean_t include_dir_externals, const apr_array_header_t *changelists, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Commit files or directories into repository, authenticating with the authentication baton cached in c...
void * tunnel_baton
The baton used with check_tunnel_func and open_tunnel_func.
Definition: svn_client.h:1085
int svn_boolean_t
YABT: Yet Another Boolean Type.
Definition: svn_types.h:141
Option and argument parsing for Subversion command lines.
svn_client_commit_item2_t * svn_client_commit_item2_dup(const svn_client_commit_item2_t *item, apr_pool_t *pool)
Return a duplicate of item, allocated in pool.
svn_error_t * svn_client_revert2(const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_revert2, but with clear_changelists set to FALSE and metadata_only set to FALSE...
svn_error_t * svn_client_update(svn_revnum_t *result_rev, const char *path, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_update2() except that it accepts only a single target in path, returns a single revision if result_rev is not NULL, and ignore_externals is always set to FALSE.
const char * repos_root_URL
The root URL of the repository.
Definition: svn_client.h:7774
svn_error_t * svn_client_diff_peg4(const apr_array_header_t *diff_options, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start_revision, const svn_opt_revision_t *end_revision, const char *relative_to_dir, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t no_diff_deleted, svn_boolean_t ignore_content_type, const char *header_encoding, apr_file_t *outfile, apr_file_t *errfile, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_peg5(), but with show_copies_as_adds set to FALSE and use_git_diff_format ...
svn_error_t * svn_client_copy5(svn_commit_info_t **commit_info_p, const apr_array_header_t *sources, const char *dst_path, svn_boolean_t copy_as_child, svn_boolean_t make_parents, svn_boolean_t ignore_externals, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy6(), but returns the commit info in *commit_info_p rather than through a ca...
apr_byte_t state_flags
state flags
Definition: svn_client.h:594
svn_error_t * svn_client_copy3(svn_commit_info_t **commit_info_p, const char *src_path, const svn_opt_revision_t *src_revision, const char *dst_path, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy4(), with only one src_path, copy_as_child set to FALSE, revprop_table passed as NULL, and make_parents set to FALSE.
svn_error_t * svn_client_delete4(const apr_array_header_t *paths, svn_boolean_t force, svn_boolean_t keep_local, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Delete items from a repository or working copy.
svn_error_t * svn_client_import(svn_client_commit_info_t **commit_info_p, const char *path, const char *url, svn_boolean_t nonrecursive, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_import2(), but with no_ignore always set to FALSE and using the svn_client_comm...
svn_error_t * svn_client__shelf_get_log_message(char **log_message, svn_client__shelf_t *shelf, apr_pool_t *result_pool)
Get the log message in shelf into *log_message.
svn_wc_status_kind
The type of status for the working copy.
Definition: svn_wc.h:3665
const char * svn_client_conflict_text_get_mime_type(svn_client_conflict_t *conflict)
Return the MIME-type of the working version of the text-conflicted file described by conflict...
svn_error_t * svn_client_copy2(svn_commit_info_t **commit_info_p, const char *src_path, const svn_opt_revision_t *src_revision, const char *dst_path, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_copy3(), with the difference that if dst_path already exists and is a directory...
void * log_msg_baton
log message callback baton
Definition: svn_client.h:983
A client context structure, which holds client specific callbacks, batons, serves as a cache for conf...
Definition: svn_client.h:958
svn_error_t * svn_client_status(svn_revnum_t *result_rev, const char *path, svn_opt_revision_t *revision, svn_wc_status_func_t status_func, void *status_baton, svn_boolean_t recurse, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_status2(), but with ignore_externals always set to FALSE, taking the svn_wc_sta...
const char * moved_to_abspath
Set to the local absolute path that this node was moved to, if this file or directory has been moved ...
Definition: svn_client.h:2537
svn_error_t * svn_client_propset3(svn_commit_info_t **commit_info_p, const char *propname, const svn_string_t *propval, const char *target, svn_depth_t depth, svn_boolean_t skip_checks, svn_revnum_t base_revision_for_url, const apr_array_header_t *changelists, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
An amalgamation of svn_client_propset_local() and svn_client_propset_remote() that takes only a singl...
const char * path
absolute working-copy path of item
Definition: svn_client.h:546
svn_error_t * svn_client_export2(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, svn_opt_revision_t *revision, svn_boolean_t force, const char *native_eol, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_export3(), but with peg_revision always set to svn_opt_revision_unspecified, overwrite set to the value of force, ignore_externals always FALSE, and recurse always TRUE.
void svn_client_get_windows_simple_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_simple_t that gets/sets...
svn_error_t * svn_client_import2(svn_commit_info_t **commit_info_p, const char *path, const char *url, svn_boolean_t nonrecursive, svn_boolean_t no_ignore, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_import3(), but with ignore_unknown_node_types always set to FALSE...
svn_wc_conflict_reason_t
The pre-existing condition which is causing a state of conflict.
Definition: svn_wc.h:1637
svn_error_t *(* svn_client_import_filter_func_t)(void *baton, svn_boolean_t *filtered, const char *local_abspath, const svn_io_dirent2_t *dirent, apr_pool_t *scratch_pool)
The callback invoked by svn_client_import5() before adding a node to the list of nodes to be imported...
Definition: svn_client.h:1982
const char * repos_UUID
The repository&#39;s UUID.
Definition: svn_client.h:7777
void * log_msg_baton2
callback baton for log_msg_func2
Definition: svn_client.h:1015
svn_revnum_t copyfrom_rev
copyfrom-rev, valid when copyfrom_url != NULL
Definition: svn_client.h:490
svn_error_t * svn_client_merge_peg5(const char *source_path_or_url, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_mergeinfo, svn_boolean_t diff_ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Merge changes from the source branch identified by source_path_or_url in peg revision source_peg_revi...
svn_error_t * svn_client_conflict_option_set_moved_to_repos_relpath2(svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Set the preferred moved target repository path.
svn_error_t * svn_client_add5(const char *path, svn_depth_t depth, svn_boolean_t force, svn_boolean_t no_ignore, svn_boolean_t no_autoprops, svn_boolean_t add_parents, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Schedule a working copy path for addition to the repository.
svn_error_t * svn_client_diff_summarize(const char *path1, const svn_opt_revision_t *revision1, const char *path2, const svn_opt_revision_t *revision2, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_client_diff_summarize_func_t summarize_func, void *summarize_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_diff_summarize2(), but with changelists passed as NULL, and depth set according...
svn_error_t * svn_client__shelf_delete_newer_versions(svn_client__shelf_t *shelf, svn_client__shelf_version_t *shelf_version, apr_pool_t *scratch_pool)
Delete all newer versions of shelf newer than shelf_version.
svn_error_t * svn_client_conflict_prop_resolve(svn_client_conflict_t *conflict, const char *propname, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Resolve a property conflict in property propname using resolution option option.
svn_error_t * svn_client_cat2(svn_stream_t *out, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_cat3() except without the option of directly reading the properties, and with expand_keywords always TRUE.
svn_error_t * svn_client_status2(svn_revnum_t *result_rev, const char *path, const svn_opt_revision_t *revision, svn_wc_status_func2_t status_func, void *status_baton, svn_boolean_t recurse, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_boolean_t ignore_externals, svn_client_ctx_t *ctx, apr_pool_t *pool)
Like svn_client_status3(), except with changelists passed as NULL, and with recurse instead of depth...
svn_error_t * svn_client_log3(const apr_array_header_t *targets, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *start, const svn_opt_revision_t *end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_log4(), but using svn_log_message_receiver_t instead of svn_log_entry_receiver_...
svn_error_t * svn_client_add(const char *path, svn_boolean_t recursive, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_add2(), but with force always set to FALSE.
svn_error_t * svn_client_open_ra_session(svn_ra_session_t **session, const char *url, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_open_ra_session2(), but with @ wri_abspath always passed as NULL...
svn_error_t * svn_client_checkout2(svn_revnum_t *result_rev, const char *URL, const char *path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_boolean_t ignore_externals, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_checkout3() but with allow_unver_obstructions always set to FALSE...
svn_error_t * svn_client_conflict_text_resolve(svn_client_conflict_t *conflict, svn_client_conflict_option_t *option, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Resolve a text conflict using resolution option option.
svn_error_t * svn_client_switch2(svn_revnum_t *result_rev, const char *path, const char *url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_depth_t depth, svn_boolean_t depth_is_sticky, svn_boolean_t ignore_externals, svn_boolean_t allow_unver_obstructions, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_switch3() but with ignore_ancestry always set to TRUE.
svn_error_t * svn_client_commit(svn_client_commit_info_t **commit_info_p, const apr_array_header_t *targets, svn_boolean_t nonrecursive, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_commit2(), but with keep_locks set to TRUE and nonrecursive instead of recurse...
svn_error_t * svn_client_mergeinfo_log_eligible(const char *path_or_url, const svn_opt_revision_t *peg_revision, const char *merge_source_path_or_url, const svn_opt_revision_t *src_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_mergeinfo_log(), but finds only eligible revisions and always operates at depth...
A buffered string, capable of appending without an allocation and copy for each append.
Definition: svn_string.h:104
svn_error_t * svn_client_merge_peg(const char *source, const svn_opt_revision_t *revision1, const svn_opt_revision_t *revision2, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_merge_peg2(), but with merge_options set to NULL.
svn_error_t * svn_client_export3(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t overwrite, svn_boolean_t ignore_externals, svn_boolean_t recurse, const char *native_eol, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_export4(), but with depth set according to recurse: if recurse is TRUE...
svn_error_t *(* svn_client_patch_func_t)(void *baton, svn_boolean_t *filtered, const char *canon_path_from_patchfile, const char *patch_abspath, const char *reject_abspath, apr_pool_t *scratch_pool)
The callback invoked by svn_client_patch() before attempting to patch the target file at canon_path_f...
Definition: svn_client.h:8016
svn_node_kind_t ood_kind
Set to the node kind of the youngest commit, or svn_node_none if not out of date. ...
Definition: svn_client.h:2470
svn_error_t * svn_client_cat3(apr_hash_t **props, svn_stream_t *out, const char *path_or_url, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t expand_keywords, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Output the content of a file.
svn_error_t * svn_client__shelf_test_apply_file(svn_boolean_t *conflict_p, svn_client__shelf_version_t *shelf_version, const char *file_relpath, apr_pool_t *scratch_pool)
Test whether we can successfully apply the changes for file_relpath in shelf_version to the WC...
svn_stringbuf_t * node_name
The name of the node on which these properties are set.
Definition: svn_client.h:349
apr_array_header_t * incoming_prop_changes
An array of svn_prop_t *&#39;s, which are incoming changes from the repository to WC properties.
Definition: svn_client.h:508
void svn_client_get_ssl_client_cert_pw_file_provider(svn_auth_provider_object_t **provider, apr_pool_t *pool)
Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_pw_t, allocated in pool.
svn_error_t *(* svn_client_blame_receiver_t)(void *baton, apr_int64_t line_no, svn_revnum_t revision, const char *author, const char *date, const char *line, apr_pool_t *pool)
Similar to svn_client_blame_receiver2_t, but without merged_revision, merged_author, merged_date, or merged_path members.
Definition: svn_client.h:848
svn_error_t * svn_client_conflict_option_set_moved_to_abspath2(svn_client_conflict_option_t *option, int preferred_move_target_idx, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Set the preferred moved target working copy path.
svn_error_t * svn_client_import3(svn_commit_info_t **commit_info_p, const char *path, const char *url, svn_depth_t depth, svn_boolean_t no_ignore, svn_boolean_t ignore_unknown_node_types, const apr_hash_t *revprop_table, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_import4(), but returns the commit info in *commit_info_p rather than through a ...
svn_error_t *(* svn_changelist_receiver_t)(void *baton, const char *path, const char *changelist, apr_pool_t *pool)
The callback type used by svn_wc_get_changelists() and svn_client_get_changelists().
Definition: svn_wc.h:8292
svn_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:7650
struct svn_client__shelf_t svn_client__shelf_t
A shelf.
svn_error_t * svn_client_relocate2(const char *wcroot_dir, const char *from_prefix, const char *to_prefix, svn_boolean_t ignore_externals, svn_client_ctx_t *ctx, apr_pool_t *pool)
Recursively modify a working copy rooted at wcroot_dir, changing any repository URLs that begin with ...
svn_client_diff_summarize_kind_t summarize_kind
Change kind.
Definition: svn_client.h:903