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 *
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="https://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  */
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 */
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] wc_format_version is the version number of the oldest Subversion
1244  * client with which the created working copy should be compatible;
1245  * @c NULL means the default version.
1246  * See svn_client_default_wc_version(),
1247  * svn_client_get_wc_formats_supported().
1248  * @param[in] store_pristine If #svn_tristate_true, the pristine contents of
1249  * all files in the working copy will be stored on disk. <br>
1250  * If #svn_tristate_false, the pristine contents will be fetched
1251  * on-demand when required by the operation. <br>
1252  * If #svn_tristate_unknown, the default setting will be used.
1253  * @param[in] ctx The standard client context, used for authentication and
1254  * notification.
1255  * @param[in] pool Used for any temporary allocation.
1256  *
1257  * @return A pointer to an #svn_error_t of the type (this list is not
1258  * exhaustive): <br>
1259  * #SVN_ERR_UNSUPPORTED_FEATURE if @a URL refers to a file rather
1260  * than a directory; <br>
1261  * #SVN_ERR_RA_ILLEGAL_URL if @a URL does not exist; <br>
1262  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1263  * #svn_opt_revision_number, #svn_opt_revision_head, or
1264  * #svn_opt_revision_date. <br>
1265  * If no error occurred, return #SVN_NO_ERROR.
1266  *
1267  * @since New in 1.15.
1268  *
1269  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1270  * a discussion of operative and peg revisions.
1271  */
1272 svn_error_t *
1274  const char *URL,
1275  const char *path,
1276  const svn_opt_revision_t *peg_revision,
1277  const svn_opt_revision_t *revision,
1278  svn_depth_t depth,
1279  svn_boolean_t ignore_externals,
1280  svn_boolean_t allow_unver_obstructions,
1281  const svn_version_t *wc_format_version,
1282  svn_tristate_t store_pristine,
1283  svn_client_ctx_t *ctx,
1284  apr_pool_t *pool);
1285 
1286 /**
1287  * Similar to svn_client_checkout4() but with @a wc_format_version set
1288  * to @c NULL and @a store_pristine set to #svn_tristate_unknown.
1289  *
1290  * @since New in 1.5.
1291  * @deprecated Provided for backward compatibility with the 1.10 API.
1292  */
1294 svn_error_t *
1296  const char *URL,
1297  const char *path,
1298  const svn_opt_revision_t *peg_revision,
1299  const svn_opt_revision_t *revision,
1300  svn_depth_t depth,
1301  svn_boolean_t ignore_externals,
1302  svn_boolean_t allow_unver_obstructions,
1303  svn_client_ctx_t *ctx,
1304  apr_pool_t *pool);
1305 
1306 /**
1307  * Similar to svn_client_checkout3() but with @a allow_unver_obstructions
1308  * always set to FALSE, and @a depth set according to @a recurse: if
1309  * @a recurse is TRUE, @a depth is #svn_depth_infinity, if @a recurse
1310  * is FALSE, @a depth is #svn_depth_files.
1311  *
1312  * @deprecated Provided for backward compatibility with the 1.4 API.
1313  */
1315 svn_error_t *
1317  const char *URL,
1318  const char *path,
1319  const svn_opt_revision_t *peg_revision,
1320  const svn_opt_revision_t *revision,
1321  svn_boolean_t recurse,
1322  svn_boolean_t ignore_externals,
1323  svn_client_ctx_t *ctx,
1324  apr_pool_t *pool);
1325 
1326 
1327 /**
1328  * Similar to svn_client_checkout2(), but with @a peg_revision
1329  * always set to #svn_opt_revision_unspecified and
1330  * @a ignore_externals always set to FALSE.
1331  *
1332  * @deprecated Provided for backward compatibility with the 1.1 API.
1333  */
1335 svn_error_t *
1337  const char *URL,
1338  const char *path,
1339  const svn_opt_revision_t *revision,
1340  svn_boolean_t recurse,
1341  svn_client_ctx_t *ctx,
1342  apr_pool_t *pool);
1343 /** @} */
1344 
1345 /**
1346  * @defgroup Update Bring a working copy up-to-date with a repository
1347  *
1348  * @{
1349  *
1350  */
1351 
1352 /**
1353  * Update working trees @a paths to @a revision, authenticating with the
1354  * authentication baton cached in @a ctx. @a paths is an array of const
1355  * char * paths to be updated. Unversioned paths that are direct children
1356  * of a versioned path will cause an update that attempts to add that path;
1357  * other unversioned paths are skipped. If @a result_revs is not NULL,
1358  * @a *result_revs will be set to an array of svn_revnum_t with each
1359  * element set to the revision to which @a revision was resolved for the
1360  * corresponding element of @a paths.
1361  *
1362  * @a revision must be of kind #svn_opt_revision_number,
1363  * #svn_opt_revision_head, or #svn_opt_revision_date. If @a
1364  * revision does not meet these requirements, return the error
1365  * #SVN_ERR_CLIENT_BAD_REVISION.
1366  *
1367  * The paths in @a paths can be from multiple working copies from multiple
1368  * repositories, but even if they all come from the same repository there
1369  * is no guarantee that revision represented by #svn_opt_revision_head
1370  * will remain the same as each path is updated.
1371  *
1372  * If @a ignore_externals is set, don't process externals definitions
1373  * as part of this operation.
1374  *
1375  * If @a depth is #svn_depth_infinity, update fully recursively.
1376  * Else if it is #svn_depth_immediates or #svn_depth_files, update
1377  * each target and its file entries, but not its subdirectories. Else
1378  * if #svn_depth_empty, update exactly each target, nonrecursively
1379  * (essentially, update the target's properties).
1380  *
1381  * If @a depth is #svn_depth_unknown, take the working depth from
1382  * @a paths and then behave as described above.
1383  *
1384  * If @a depth_is_sticky is set and @a depth is not
1385  * #svn_depth_unknown, then in addition to updating PATHS, also set
1386  * their sticky ambient depth value to @a depth.
1387  *
1388  * If @a allow_unver_obstructions is TRUE then the update tolerates
1389  * existing unversioned items that obstruct added paths. Only
1390  * obstructions of the same type (file or dir) as the added item are
1391  * tolerated. The text of obstructing files is left as-is, effectively
1392  * treating it as a user modification after the update. Working
1393  * properties of obstructing items are set equal to the base properties.
1394  * If @a allow_unver_obstructions is FALSE then the update will abort
1395  * if there are any unversioned obstructing items.
1396  *
1397  * If @a adds_as_modification is TRUE, a local addition at the same path
1398  * as an incoming addition of the same node kind results in a normal node
1399  * with a possible local modification, instead of a tree conflict.
1400  *
1401  * If @a make_parents is TRUE, create any non-existent parent
1402  * directories also by checking them out at depth=empty.
1403  *
1404  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
1405  * @a ctx->notify_baton2 for each item handled by the update, and also for
1406  * files restored from text-base. If @a ctx->cancel_func is non-NULL, invoke
1407  * it passing @a ctx->cancel_baton at various places during the update.
1408  *
1409  * Use @a pool for any temporary allocation.
1410  *
1411  * @todo Multiple Targets
1412  * - Up for debate: an update on multiple targets is *not* atomic.
1413  * Right now, svn_client_update only takes one path. What's
1414  * debatable is whether this should ever change. On the one hand,
1415  * it's kind of losing to have the client application loop over
1416  * targets and call svn_client_update() on each one; each call to
1417  * update initializes a whole new repository session (network
1418  * overhead, etc.) On the other hand, it's a very simple
1419  * implementation, and allows for the possibility that different
1420  * targets may come from different repositories.
1421  *
1422  * @since New in 1.7.
1423  */
1424 svn_error_t *
1425 svn_client_update4(apr_array_header_t **result_revs,
1426  const apr_array_header_t *paths,
1427  const svn_opt_revision_t *revision,
1428  svn_depth_t depth,
1429  svn_boolean_t depth_is_sticky,
1430  svn_boolean_t ignore_externals,
1431  svn_boolean_t allow_unver_obstructions,
1432  svn_boolean_t adds_as_modification,
1433  svn_boolean_t make_parents,
1434  svn_client_ctx_t *ctx,
1435  apr_pool_t *pool);
1436 
1437 /**
1438  * Similar to svn_client_update4() but with @a make_parents always set
1439  * to FALSE and @a adds_as_modification set to TRUE.
1440  *
1441  * @deprecated Provided for backward compatibility with the 1.6 API.
1442  * @since New in 1.5.
1443  */
1445 svn_error_t *
1446 svn_client_update3(apr_array_header_t **result_revs,
1447  const apr_array_header_t *paths,
1448  const svn_opt_revision_t *revision,
1449  svn_depth_t depth,
1450  svn_boolean_t depth_is_sticky,
1451  svn_boolean_t ignore_externals,
1452  svn_boolean_t allow_unver_obstructions,
1453  svn_client_ctx_t *ctx,
1454  apr_pool_t *pool);
1455 
1456 /**
1457  * Similar to svn_client_update3() but with @a allow_unver_obstructions
1458  * always set to FALSE, @a depth_is_sticky to FALSE, and @a depth set
1459  * according to @a recurse: if @a recurse is TRUE, set @a depth to
1460  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
1461  * #svn_depth_files.
1462  *
1463  * @deprecated Provided for backward compatibility with the 1.4 API.
1464  */
1466 svn_error_t *
1467 svn_client_update2(apr_array_header_t **result_revs,
1468  const apr_array_header_t *paths,
1469  const svn_opt_revision_t *revision,
1470  svn_boolean_t recurse,
1471  svn_boolean_t ignore_externals,
1472  svn_client_ctx_t *ctx,
1473  apr_pool_t *pool);
1474 
1475 /**
1476  * Similar to svn_client_update2() except that it accepts only a single
1477  * target in @a path, returns a single revision if @a result_rev is
1478  * not NULL, and @a ignore_externals is always set to FALSE.
1479  *
1480  * @deprecated Provided for backward compatibility with the 1.1 API.
1481  */
1483 svn_error_t *
1485  const char *path,
1486  const svn_opt_revision_t *revision,
1487  svn_boolean_t recurse,
1488  svn_client_ctx_t *ctx,
1489  apr_pool_t *pool);
1490 /** @} */
1491 
1492 /**
1493  * @defgroup Switch Switch a working copy to another location.
1494  *
1495  * @{
1496  */
1497 
1498 /**
1499  * Switch an existing working copy directory to a different repository
1500  * location.
1501  *
1502  * This is normally used to switch a working copy directory over to another
1503  * line of development, such as a branch or a tag. Switching an existing
1504  * working copy directory is more efficient than checking out @a url from
1505  * scratch.
1506  *
1507  * @param[out] result_rev If non-NULL, the value of the revision to which
1508  * the working copy was actually switched.
1509  * @param[in] path The directory to be switched. This need not be the
1510  * root of a working copy.
1511  * @param[in] url The repository URL to switch to.
1512  * @param[in] peg_revision The peg revision.
1513  * @param[in] revision The operative revision.
1514  * @param[in] depth The depth of the operation. If #svn_depth_infinity,
1515  * switch fully recursively. Else if #svn_depth_immediates,
1516  * switch @a path and its file children (if any), and
1517  * switch subdirectories but do not update them. Else if
1518  * #svn_depth_files, switch just file children, ignoring
1519  * subdirectories completely. Else if #svn_depth_empty,
1520  * switch just @a path and touch nothing underneath it.
1521  * @param[in] depth_is_sticky If @c TRUE, and @a depth is not
1522  * #svn_depth_unknown, then in addition to switching @a path, also
1523  * set its sticky ambient depth value to @a depth.
1524  * @param[in] ignore_externals If @c TRUE, don't process externals
1525  * definitions as part of this operation.
1526  * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
1527  * unversioned items that obstruct incoming paths. Only
1528  * obstructions of the same type (file or dir) as the added
1529  * item are tolerated. The text of obstructing files is left
1530  * as-is, effectively treating it as a user modification after
1531  * the checkout. Working properties of obstructing items are
1532  * set equal to the base properties. <br>
1533  * If @c FALSE, then abort if there are any unversioned
1534  * obstructing items.
1535  * @param[in] ignore_ancestry If @c FALSE, then verify that the file
1536  * or directory at @a path shares some common version control
1537  * ancestry with the switch URL location (represented by the
1538  * combination of @a url, @a peg_revision, and @a revision),
1539  * and returning #SVN_ERR_CLIENT_UNRELATED_RESOURCES if they
1540  * do not. If @c TRUE, no such sanity checks are performed.
1541  *
1542  * @param[in] ctx The standard client context, used for authentication and
1543  * notification. The notifier is invoked for paths affected by
1544  * the switch, and also for files which may be restored from the
1545  * pristine store after being previously removed from the working
1546  * copy.
1547  * @param[in] pool Used for any temporary allocation.
1548  *
1549  * @return A pointer to an #svn_error_t of the type (this list is not
1550  * exhaustive): <br>
1551  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1552  * #svn_opt_revision_number, #svn_opt_revision_head, or
1553  * #svn_opt_revision_date. <br>
1554  * If no error occurred, return #SVN_NO_ERROR.
1555  *
1556  * @since New in 1.7.
1557  *
1558  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1559  * a discussion of operative and peg revisions.
1560  */
1561 svn_error_t *
1563  const char *path,
1564  const char *url,
1565  const svn_opt_revision_t *peg_revision,
1566  const svn_opt_revision_t *revision,
1567  svn_depth_t depth,
1568  svn_boolean_t depth_is_sticky,
1569  svn_boolean_t ignore_externals,
1570  svn_boolean_t allow_unver_obstructions,
1571  svn_boolean_t ignore_ancestry,
1572  svn_client_ctx_t *ctx,
1573  apr_pool_t *pool);
1574 
1575 
1576 /**
1577  * Similar to svn_client_switch3() but with @a ignore_ancestry always
1578  * set to TRUE.
1579  *
1580  * @since New in 1.5.
1581  * @deprecated Provided for backward compatibility with the 1.4 API.
1582  */
1584 svn_error_t *
1586  const char *path,
1587  const char *url,
1588  const svn_opt_revision_t *peg_revision,
1589  const svn_opt_revision_t *revision,
1590  svn_depth_t depth,
1591  svn_boolean_t depth_is_sticky,
1592  svn_boolean_t ignore_externals,
1593  svn_boolean_t allow_unver_obstructions,
1594  svn_client_ctx_t *ctx,
1595  apr_pool_t *pool);
1596 
1597 
1598 /**
1599  * Similar to svn_client_switch2() but with @a allow_unver_obstructions,
1600  * @a ignore_externals, and @a depth_is_sticky always set to FALSE,
1601  * and @a depth set according to @a recurse: if @a recurse is TRUE,
1602  * set @a depth to #svn_depth_infinity, if @a recurse is FALSE, set
1603  * @a depth to #svn_depth_files.
1604  *
1605  * @deprecated Provided for backward compatibility with the 1.4 API.
1606  */
1608 svn_error_t *
1610  const char *path,
1611  const char *url,
1612  const svn_opt_revision_t *revision,
1613  svn_boolean_t recurse,
1614  svn_client_ctx_t *ctx,
1615  apr_pool_t *pool);
1616 
1617 /** @} */
1618 
1619 /** Callback for svn_client__layout_list()
1620  *
1621  * @warning EXPERIMENTAL.
1622  */
1623 typedef svn_error_t * (*svn_client__layout_func_t)(
1624  void *layout_baton,
1625  const char *local_abspath,
1626  const char *repos_root_url,
1627  svn_boolean_t not_present,
1628  svn_boolean_t url_changed,
1629  const char *url,
1630  svn_boolean_t revision_changed,
1631  svn_revnum_t revision,
1632  svn_boolean_t depth_changed,
1633  svn_depth_t depth,
1634  apr_pool_t *scratch_pool);
1635 
1636 /**
1637  * Describe the layout of the working copy below @a local_abspath to
1638  * the callback @a layout.
1639  *
1640  * @warning EXPERIMENTAL.
1641  */
1643 svn_error_t *
1644 svn_client__layout_list(const char *local_abspath,
1646  void *layout_baton,
1647  svn_client_ctx_t *ctx,
1648  apr_pool_t *scratch_pool);
1649 
1650 
1651 /**
1652  * @defgroup Add Begin versioning files/directories in a working copy.
1653  *
1654  * @{
1655  */
1656 
1657 /**
1658  * Schedule a working copy @a path for addition to the repository.
1659  *
1660  * If @a depth is #svn_depth_empty, add just @a path and nothing
1661  * below it. If #svn_depth_files, add @a path and any file
1662  * children of @a path. If #svn_depth_immediates, add @a path, any
1663  * file children, and any immediate subdirectories (but nothing
1664  * underneath those subdirectories). If #svn_depth_infinity, add
1665  * @a path and everything under it fully recursively.
1666  *
1667  * @a path's parent must be under revision control already (unless
1668  * @a add_parents is TRUE), but @a path is not.
1669  *
1670  * If @a force is not set and @a path is already under version
1671  * control, return the error #SVN_ERR_ENTRY_EXISTS. If @a force is
1672  * set, do not error on already-versioned items. When used on a
1673  * directory in conjunction with a @a depth value greater than
1674  * #svn_depth_empty, this has the effect of scheduling for addition
1675  * any unversioned files and directories scattered within even a
1676  * versioned tree (up to @a depth).
1677  *
1678  * If @a ctx->notify_func2 is non-NULL, then for each added item, call
1679  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the
1680  * added item.
1681  *
1682  * If @a no_ignore is FALSE, don't add any file or directory (or recurse
1683  * into any directory) that is unversioned and found by recursion (as
1684  * opposed to being the explicit target @a path) and whose name matches the
1685  * svn:ignore property on its parent directory or the global-ignores list in
1686  * @a ctx->config. If @a no_ignore is TRUE, do include such files and
1687  * directories. (Note that an svn:ignore property can influence this
1688  * behaviour only when recursing into an already versioned directory with @a
1689  * force.)
1690  *
1691  * If @a no_autoprops is TRUE, don't set any autoprops on added files. If
1692  * @a no_autoprops is FALSE then all added files have autprops set as per
1693  * the auto-props list in @a ctx->config and the value of any
1694  * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by the nearest
1695  * parents of @a path which are already under version control.
1696  *
1697  * If @a add_parents is TRUE, recurse up @a path's directory and look for
1698  * a versioned directory. If found, add all intermediate paths between it
1699  * and @a path. If not found, return #SVN_ERR_CLIENT_NO_VERSIONED_PARENT.
1700  *
1701  * @a scratch_pool is used for temporary allocations only.
1702  *
1703  * @par Important:
1704  * This is a *scheduling* operation. No changes will
1705  * happen to the repository until a commit occurs. This scheduling
1706  * can be removed with svn_client_revert2().
1707  *
1708  * @since New in 1.8.
1709  */
1710 svn_error_t *
1711 svn_client_add5(const char *path,
1712  svn_depth_t depth,
1713  svn_boolean_t force,
1714  svn_boolean_t no_ignore,
1715  svn_boolean_t no_autoprops,
1716  svn_boolean_t add_parents,
1717  svn_client_ctx_t *ctx,
1718  apr_pool_t *scratch_pool);
1719 
1720 /**
1721  * Similar to svn_client_add5(), but with @a no_autoprops always set to
1722  * FALSE.
1723  *
1724  * @deprecated Provided for backward compatibility with the 1.7 API.
1725  */
1727 svn_error_t *
1728 svn_client_add4(const char *path,
1729  svn_depth_t depth,
1730  svn_boolean_t force,
1731  svn_boolean_t no_ignore,
1732  svn_boolean_t add_parents,
1733  svn_client_ctx_t *ctx,
1734  apr_pool_t *pool);
1735 
1736 /**
1737  * Similar to svn_client_add4(), but with @a add_parents always set to
1738  * FALSE and @a depth set according to @a recursive: if TRUE, then
1739  * @a depth is #svn_depth_infinity, if FALSE, then #svn_depth_empty.
1740  *
1741  * @deprecated Provided for backward compatibility with the 1.4 API.
1742  */
1744 svn_error_t *
1745 svn_client_add3(const char *path,
1746  svn_boolean_t recursive,
1747  svn_boolean_t force,
1748  svn_boolean_t no_ignore,
1749  svn_client_ctx_t *ctx,
1750  apr_pool_t *pool);
1751 
1752 /**
1753  * Similar to svn_client_add3(), but with @a no_ignore always set to
1754  * FALSE.
1755  *
1756  * @deprecated Provided for backward compatibility with the 1.2 API.
1757  */
1759 svn_error_t *
1760 svn_client_add2(const char *path,
1761  svn_boolean_t recursive,
1762  svn_boolean_t force,
1763  svn_client_ctx_t *ctx,
1764  apr_pool_t *pool);
1765 
1766 /**
1767  * Similar to svn_client_add2(), but with @a force always set to FALSE.
1768  *
1769  * @deprecated Provided for backward compatibility with the 1.0 API.
1770  */
1772 svn_error_t *
1773 svn_client_add(const char *path,
1774  svn_boolean_t recursive,
1775  svn_client_ctx_t *ctx,
1776  apr_pool_t *pool);
1777 
1778 /** @} */
1779 
1780 /**
1781  * @defgroup Mkdir Create directories in a working copy or repository.
1782  *
1783  * @{
1784  */
1785 
1786 /** Create a directory, either in a repository or a working copy.
1787  *
1788  * @a paths is an array of (const char *) paths, either all local WC paths
1789  * or all URLs.
1790  *
1791  * If @a paths contains URLs, use the authentication baton in @a ctx
1792  * and @a message to immediately attempt to commit the creation of the
1793  * directories in @a paths in the repository.
1794  *
1795  * Else, create the directories on disk, and attempt to schedule them
1796  * for addition (using svn_client_add(), whose docstring you should
1797  * read).
1798  *
1799  * If @a make_parents is TRUE, create any non-existent parent directories
1800  * also.
1801  *
1802  * If non-NULL, @a revprop_table is a hash table holding additional,
1803  * custom revision properties (<tt>const char *</tt> names mapped to
1804  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1805  * the event that this is a committing operation. This table cannot
1806  * contain any standard Subversion properties.
1807  *
1808  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1809  * combo that this function can use to query for a commit log message
1810  * when one is needed.
1811  *
1812  * If @a ctx->notify_func2 is non-NULL, when the directory has been created
1813  * (successfully) in the working copy, call @a ctx->notify_func2 with
1814  * @a ctx->notify_baton2 and the path of the new directory. Note that this is
1815  * only called for items added to the working copy.
1816  *
1817  * If @a commit_callback is non-NULL, then for each successful commit, call
1818  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1819  * the commit.
1820  *
1821  * @since New in 1.7.
1822  */
1823 svn_error_t *
1824 svn_client_mkdir4(const apr_array_header_t *paths,
1825  svn_boolean_t make_parents,
1826  const apr_hash_t *revprop_table,
1827  svn_commit_callback2_t commit_callback,
1828  void *commit_baton,
1829  svn_client_ctx_t *ctx,
1830  apr_pool_t *pool);
1831 
1832 /**
1833  * Similar to svn_client_mkdir4(), but returns the commit info in
1834  * @a *commit_info_p rather than through a callback function.
1835  *
1836  * @since New in 1.5.
1837  * @deprecated Provided for backward compatibility with the 1.6 API.
1838  */
1840 svn_error_t *
1842  const apr_array_header_t *paths,
1843  svn_boolean_t make_parents,
1844  const apr_hash_t *revprop_table,
1845  svn_client_ctx_t *ctx,
1846  apr_pool_t *pool);
1847 
1848 
1849 /**
1850  * Same as svn_client_mkdir3(), but with @a make_parents always FALSE,
1851  * and @a revprop_table always NULL.
1852  *
1853  * @since New in 1.3.
1854  * @deprecated Provided for backward compatibility with the 1.4 API.
1855  */
1857 svn_error_t *
1859  const apr_array_header_t *paths,
1860  svn_client_ctx_t *ctx,
1861  apr_pool_t *pool);
1862 
1863 /**
1864  * Same as svn_client_mkdir2(), but takes the #svn_client_commit_info_t
1865  * type for @a commit_info_p.
1866  *
1867  * @deprecated Provided for backward compatibility with the 1.2 API.
1868  */
1870 svn_error_t *
1872  const apr_array_header_t *paths,
1873  svn_client_ctx_t *ctx,
1874  apr_pool_t *pool);
1875 
1876 /** @} */
1877 
1878 /**
1879  * @defgroup Delete Remove files/directories from a working copy or repository.
1880  *
1881  * @{
1882  */
1883 
1884 /** Delete items from a repository or working copy.
1885  *
1886  * @a paths is an array of (const char *) paths, either all local WC paths
1887  * or all URLs.
1888  *
1889  * If the paths in @a paths are URLs, use the authentication baton in
1890  * @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to
1891  * immediately attempt to commit a deletion of the URLs from the
1892  * repository. Every path must belong to the same repository.
1893  *
1894  * Else, schedule the working copy paths in @a paths for removal from
1895  * the repository. Each path's parent must be under revision control.
1896  * This is just a *scheduling* operation. No changes will happen to
1897  * the repository until a commit occurs. This scheduling can be
1898  * removed with svn_client_revert2(). If a path is a file it is
1899  * immediately removed from the working copy. If the path is a
1900  * directory it will remain in the working copy but all the files, and
1901  * all unversioned items, it contains will be removed. If @a force is
1902  * not set then this operation will fail if any path contains locally
1903  * modified and/or unversioned items. If @a force is set such items
1904  * will be deleted.
1905  *
1906  * If the paths are working copy paths and @a keep_local is TRUE then
1907  * the paths will not be removed from the working copy, only scheduled
1908  * for removal from the repository. Once the scheduled deletion is
1909  * committed, they will appear as unversioned paths in the working copy.
1910  *
1911  * If non-NULL, @a revprop_table is a hash table holding additional,
1912  * custom revision properties (<tt>const char *</tt> names mapped to
1913  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1914  * the event that this is a committing operation. This table cannot
1915  * contain any standard Subversion properties.
1916  *
1917  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1918  * combo that this function can use to query for a commit log message
1919  * when one is needed.
1920  *
1921  * If @a ctx->notify_func2 is non-NULL, then for each item deleted, call
1922  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the deleted
1923  * item.
1924  *
1925  * If @a commit_callback is non-NULL, then for each successful commit, call
1926  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1927  * the commit.
1928  *
1929  * @since New in 1.7.
1930  */
1931 svn_error_t *
1932 svn_client_delete4(const apr_array_header_t *paths,
1933  svn_boolean_t force,
1934  svn_boolean_t keep_local,
1935  const apr_hash_t *revprop_table,
1936  svn_commit_callback2_t commit_callback,
1937  void *commit_baton,
1938  svn_client_ctx_t *ctx,
1939  apr_pool_t *pool);
1940 
1941 /**
1942  * Similar to svn_client_delete4(), but returns the commit info in
1943  * @a *commit_info_p rather than through a callback function.
1944  *
1945  * @since New in 1.5.
1946  * @deprecated Provided for backward compatibility with the 1.6 API.
1947  */
1949 svn_error_t *
1951  const apr_array_header_t *paths,
1952  svn_boolean_t force,
1953  svn_boolean_t keep_local,
1954  const apr_hash_t *revprop_table,
1955  svn_client_ctx_t *ctx,
1956  apr_pool_t *pool);
1957 
1958 /**
1959  * Similar to svn_client_delete3(), but with @a keep_local always set
1960  * to FALSE, and @a revprop_table passed as NULL.
1961  *
1962  * @deprecated Provided for backward compatibility with the 1.4 API.
1963  */
1965 svn_error_t *
1967  const apr_array_header_t *paths,
1968  svn_boolean_t force,
1969  svn_client_ctx_t *ctx,
1970  apr_pool_t *pool);
1971 
1972 /**
1973  * Similar to svn_client_delete2(), but takes the #svn_client_commit_info_t
1974  * type for @a commit_info_p.
1975  *
1976  * @deprecated Provided for backward compatibility with the 1.2 API.
1977  */
1979 svn_error_t *
1981  const apr_array_header_t *paths,
1982  svn_boolean_t force,
1983  svn_client_ctx_t *ctx,
1984  apr_pool_t *pool);
1985 
1986 
1987 /** @} */
1988 
1989 /**
1990  * @defgroup Import Import files into the repository.
1991  *
1992  * @{
1993  */
1994 
1995 /**
1996  * The callback invoked by svn_client_import5() before adding a node to the
1997  * list of nodes to be imported.
1998  *
1999  * @a baton is the value passed to @a svn_client_import5 as filter_baton.
2000  *
2001  * The callback receives the @a local_abspath for each node and the @a dirent
2002  * for it when walking the directory tree. Only the kind of node, including
2003  * special status is available in @a dirent.
2004  *
2005  * Implementations can set @a *filtered to TRUE, to make the import
2006  * process omit the node and (if the node is a directory) all its
2007  * descendants.
2008  *
2009  * @a scratch_pool can be used for temporary allocations.
2010  *
2011  * @since New in 1.8.
2012  */
2013 typedef svn_error_t *(*svn_client_import_filter_func_t)(
2014  void *baton,
2015  svn_boolean_t *filtered,
2016  const char *local_abspath,
2017  const svn_io_dirent2_t *dirent,
2018  apr_pool_t *scratch_pool);
2019 
2020 /** Import file or directory @a path into repository directory @a url at
2021  * head, authenticating with the authentication baton cached in @a ctx,
2022  * and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
2023  * for the (implied) commit. If some components of @a url do not exist
2024  * then create parent directories as necessary.
2025  *
2026  * This function reads an unversioned tree from disk and skips any ".svn"
2027  * directories. Even if a file or directory being imported is part of an
2028  * existing WC, this function sees it as unversioned and does not notice any
2029  * existing Subversion properties in it.
2030  *
2031  * If @a path is a directory, the contents of that directory are
2032  * imported directly into the directory identified by @a url. Note that the
2033  * directory @a path itself is not imported -- that is, the basename of
2034  * @a path is not part of the import.
2035  *
2036  * If @a path is a file, then the dirname of @a url is the directory
2037  * receiving the import. The basename of @a url is the filename in the
2038  * repository. In this case if @a url already exists, return error.
2039  *
2040  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
2041  * @a ctx->notify_baton2 as the import progresses, with any of the following
2042  * actions: #svn_wc_notify_commit_added,
2043  * #svn_wc_notify_commit_postfix_txdelta.
2044  *
2045  * Use @a scratch_pool for any temporary allocation.
2046  *
2047  * If non-NULL, @a revprop_table is a hash table holding additional,
2048  * custom revision properties (<tt>const char *</tt> names mapped to
2049  * <tt>svn_string_t *</tt> values) to be set on the new revision.
2050  * This table cannot contain any standard Subversion properties.
2051  *
2052  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
2053  * combo that this function can use to query for a commit log message
2054  * when one is needed.
2055  *
2056  * If @a depth is #svn_depth_empty, import just @a path and nothing
2057  * below it. If #svn_depth_files, import @a path and any file
2058  * children of @a path. If #svn_depth_immediates, import @a path, any
2059  * file children, and any immediate subdirectories (but nothing
2060  * underneath those subdirectories). If #svn_depth_infinity, import
2061  * @a path and everything under it fully recursively.
2062  *
2063  * If @a no_ignore is @c FALSE, don't import any file or directory (or
2064  * recurse into any directory) that is found by recursion (as opposed to
2065  * being the explicit target @a path) and whose name matches the
2066  * global-ignores list in @a ctx->config. If @a no_ignore is @c TRUE, do
2067  * include such files and directories. (Note that svn:ignore properties are
2068  * not involved, as auto-props cannot set properties on directories and even
2069  * if the target is part of a WC the import ignores any existing
2070  * properties.)
2071  *
2072  * If @a no_autoprops is TRUE, don't set any autoprops on imported files. If
2073  * @a no_autoprops is FALSE then all imported files have autprops set as per
2074  * the auto-props list in @a ctx->config and the value of any
2075  * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by and explicitly set
2076  * on @a url if @a url is already under versioned control, or the nearest parents
2077  * of @a path which are already under version control if not.
2078  *
2079  * If @a ignore_unknown_node_types is @c TRUE, ignore files of which the
2080  * node type is unknown, such as device files and pipes.
2081  *
2082  * If @a filter_callback is non-NULL, call it for each node that isn't ignored
2083  * for other reasons with @a filter_baton, to allow third party to ignore
2084  * specific nodes during importing.
2085  *
2086  * If @a commit_callback is non-NULL, then for each successful commit, call
2087  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
2088  * the commit.
2089  *
2090  * @since New in 1.8.
2091  */
2092 svn_error_t *
2093 svn_client_import5(const char *path,
2094  const char *url,
2095  svn_depth_t depth,
2096  svn_boolean_t no_ignore,
2097  svn_boolean_t no_autoprops,
2098  svn_boolean_t ignore_unknown_node_types,
2099  const apr_hash_t *revprop_table,
2100  svn_client_import_filter_func_t filter_callback,
2101  void *filter_baton,
2102  svn_commit_callback2_t commit_callback,
2103  void *commit_baton,
2104  svn_client_ctx_t *ctx,
2105  apr_pool_t *scratch_pool);
2106 
2107 /**
2108  * Similar to svn_client_import5(), but without support for an optional
2109  * @a filter_callback and @a no_autoprops always set to FALSE.
2110  *
2111  * @since New in 1.7.
2112  * @deprecated Provided for backward compatibility with the 1.7 API.
2113  */
2115 svn_error_t *
2116 svn_client_import4(const char *path,
2117  const char *url,
2118  svn_depth_t depth,
2119  svn_boolean_t no_ignore,
2120  svn_boolean_t ignore_unknown_node_types,
2121  const apr_hash_t *revprop_table,
2122  svn_commit_callback2_t commit_callback,
2123  void *commit_baton,
2124  svn_client_ctx_t *ctx,
2125  apr_pool_t *pool);
2126 
2127 /**
2128  * Similar to svn_client_import4(), but returns the commit info in
2129  * @a *commit_info_p rather than through a callback function.
2130  *
2131  * @since New in 1.5.
2132  * @deprecated Provided for backward compatibility with the 1.6 API.
2133  */
2135 svn_error_t *
2137  const char *path,
2138  const char *url,
2139  svn_depth_t depth,
2140  svn_boolean_t no_ignore,
2141  svn_boolean_t ignore_unknown_node_types,
2142  const apr_hash_t *revprop_table,
2143  svn_client_ctx_t *ctx,
2144  apr_pool_t *pool);
2145 
2146 /**
2147  * Similar to svn_client_import3(), but with @a ignore_unknown_node_types
2148  * always set to @c FALSE, @a revprop_table passed as NULL, and @a
2149  * depth set according to @a nonrecursive: if TRUE, then @a depth is
2150  * #svn_depth_files, else #svn_depth_infinity.
2151  *
2152  * @since New in 1.3.
2153  *
2154  * @deprecated Provided for backward compatibility with the 1.4 API
2155  */
2157 svn_error_t *
2159  const char *path,
2160  const char *url,
2161  svn_boolean_t nonrecursive,
2162  svn_boolean_t no_ignore,
2163  svn_client_ctx_t *ctx,
2164  apr_pool_t *pool);
2165 
2166 /**
2167  * Similar to svn_client_import2(), but with @a no_ignore always set
2168  * to FALSE and using the #svn_client_commit_info_t type for
2169  * @a commit_info_p.
2170  *
2171  * @deprecated Provided for backward compatibility with the 1.2 API.
2172  */
2174 svn_error_t *
2176  const char *path,
2177  const char *url,
2178  svn_boolean_t nonrecursive,
2179  svn_client_ctx_t *ctx,
2180  apr_pool_t *pool);
2181 
2182 /** @} */
2183 
2184 /**
2185  * @defgroup Commit Commit local modifications to the repository.
2186  *
2187  * @{
2188  */
2189 
2190 /**
2191  * Commit files or directories into repository, authenticating with
2192  * the authentication baton cached in @a ctx, and using
2193  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to obtain the log message.
2194  * Set @a *commit_info_p to the results of the commit, allocated in @a pool.
2195  *
2196  * @a targets is an array of <tt>const char *</tt> paths to commit. They
2197  * need not be canonicalized nor condensed; this function will take care of
2198  * that. If @a targets has zero elements, then do nothing and return
2199  * immediately without error.
2200  *
2201  * If non-NULL, @a revprop_table is a hash table holding additional,
2202  * custom revision properties (<tt>const char *</tt> names mapped to
2203  * <tt>svn_string_t *</tt> values) to be set on the new revision.
2204  * This table cannot contain any standard Subversion properties.
2205  *
2206  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
2207  * @a ctx->notify_baton2 as the commit progresses, with any of the following
2208  * actions: #svn_wc_notify_commit_modified, #svn_wc_notify_commit_added,
2209  * #svn_wc_notify_commit_deleted, #svn_wc_notify_commit_replaced,
2210  * #svn_wc_notify_commit_copied, #svn_wc_notify_commit_copied_replaced,
2211  * #svn_wc_notify_commit_postfix_txdelta.
2212  *
2213  * If @a depth is #svn_depth_infinity, commit all changes to and
2214  * below named targets. If @a depth is #svn_depth_empty, commit
2215  * only named targets (that is, only property changes on named
2216  * directory targets, and property and content changes for named file
2217  * targets). If @a depth is #svn_depth_files, behave as above for
2218  * named file targets, and for named directory targets, commit
2219  * property changes on a named directory and all changes to files
2220  * directly inside that directory. If #svn_depth_immediates, behave
2221  * as for #svn_depth_files, and for subdirectories of any named
2222  * directory target commit as though for #svn_depth_empty.
2223  *
2224  * Unlock paths in the repository, unless @a keep_locks is TRUE.
2225  *
2226  * @a changelists is an array of <tt>const char *</tt> changelist
2227  * names, used as a restrictive filter on items that are committed;
2228  * that is, don't commit anything unless it's a member of one of those
2229  * changelists. After the commit completes successfully, remove
2230  * changelist associations from the targets, unless @a
2231  * keep_changelists is set. If @a changelists is
2232  * empty (or altogether @c NULL), no changelist filtering occurs.
2233  *
2234  * If @a commit_as_operations is set to FALSE, when a copy is committed
2235  * all changes below the copy are always committed at the same time
2236  * (independent of the value of @a depth). If @a commit_as_operations is
2237  * #TRUE, changes to descendants are only committed if they are itself
2238  * included via @a depth and targets.
2239  *
2240  * If @a include_file_externals and/or @a include_dir_externals are #TRUE,
2241  * also commit all file and/or dir externals (respectively) that are reached
2242  * by recursion, except for those externals which:
2243  * - have a fixed revision, or
2244  * - come from a different repository root URL (dir externals).
2245  * These flags affect only recursion; externals that directly appear in @a
2246  * targets are always included in the commit.
2247  *
2248  * ### TODO: currently, file externals hidden inside an unversioned dir are
2249  * skipped deliberately, because we can't commit those yet.
2250  * See STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW.
2251  *
2252  * ### TODO: With @c depth_immediates, this function acts as if
2253  * @a include_dir_externals was passed #FALSE, but caller expects
2254  * immediate child dir externals to be included @c depth_empty.
2255  *
2256  * When @a commit_as_operations is #TRUE it is possible to delete a node and
2257  * all its descendants by selecting just the root of the deletion. If it is
2258  * set to #FALSE this will raise an error.
2259  *
2260  * If @a commit_callback is non-NULL, then for each successful commit, call
2261  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
2262  * the commit.
2263  *
2264  * @note #svn_depth_unknown and #svn_depth_exclude must not be passed
2265  * for @a depth.
2266  *
2267  * Use @a pool for any temporary allocations.
2268  *
2269  * @since New in 1.8.
2270  */
2271 svn_error_t *
2272 svn_client_commit6(const apr_array_header_t *targets,
2273  svn_depth_t depth,
2274  svn_boolean_t keep_locks,
2275  svn_boolean_t keep_changelists,
2276  svn_boolean_t commit_as_operations,
2277  svn_boolean_t include_file_externals,
2278  svn_boolean_t include_dir_externals,
2279  const apr_array_header_t *changelists,
2280  const apr_hash_t *revprop_table,
2281  svn_commit_callback2_t commit_callback,
2282  void *commit_baton,
2283  svn_client_ctx_t *ctx,
2284  apr_pool_t *pool);
2285 
2286 /**
2287  * Similar to svn_client_commit6(), but passes @a include_file_externals as
2288  * FALSE and @a include_dir_externals as FALSE.
2289  *
2290  * @since New in 1.7.
2291  * @deprecated Provided for backward compatibility with the 1.7 API.
2292  */
2294 svn_error_t *
2295 svn_client_commit5(const apr_array_header_t *targets,
2296  svn_depth_t depth,
2297  svn_boolean_t keep_locks,
2298  svn_boolean_t keep_changelists,
2299  svn_boolean_t commit_as_operations,
2300  const apr_array_header_t *changelists,
2301  const apr_hash_t *revprop_table,
2302  svn_commit_callback2_t commit_callback,
2303  void *commit_baton,
2304  svn_client_ctx_t *ctx,
2305  apr_pool_t *pool);
2306 
2307 /**
2308  * Similar to svn_client_commit5(), but returns the commit info in
2309  * @a *commit_info_p rather than through a callback function. Does not use
2310  * #svn_wc_notify_commit_copied or #svn_wc_notify_commit_copied_replaced
2311  * (preferring #svn_wc_notify_commit_added and
2312  * #svn_wc_notify_commit_replaced, respectively, instead).
2313  *
2314  * Also, if no error is returned and @a (*commit_info_p)->revision is set to
2315  * #SVN_INVALID_REVNUM, then the commit was a no-op; nothing needed to
2316  * be committed.
2317  *
2318  * Sets @a commit_as_operations to FALSE to match Subversion 1.6's behavior.
2319  *
2320  * @since New in 1.5.
2321  * @deprecated Provided for backward compatibility with the 1.6 API.
2322  */
2324 svn_error_t *
2326  const apr_array_header_t *targets,
2327  svn_depth_t depth,
2328  svn_boolean_t keep_locks,
2329  svn_boolean_t keep_changelists,
2330  const apr_array_header_t *changelists,
2331  const apr_hash_t *revprop_table,
2332  svn_client_ctx_t *ctx,
2333  apr_pool_t *pool);
2334 
2335 /**
2336  * Similar to svn_client_commit4(), but always with NULL for
2337  * @a changelist_name, FALSE for @a keep_changelist, NULL for @a
2338  * revprop_table, and @a depth set according to @a recurse: if @a
2339  * recurse is TRUE, use #svn_depth_infinity, else #svn_depth_empty.
2340  *
2341  * @deprecated Provided for backward compatibility with the 1.4 API.
2342  *
2343  * @since New in 1.3.
2344  */
2346 svn_error_t *
2348  const apr_array_header_t *targets,
2349  svn_boolean_t recurse,
2350  svn_boolean_t keep_locks,
2351  svn_client_ctx_t *ctx,
2352  apr_pool_t *pool);
2353 
2354 /**
2355  * Similar to svn_client_commit3(), but uses #svn_client_commit_info_t
2356  * for @a commit_info_p.
2357  *
2358  * @deprecated Provided for backward compatibility with the 1.2 API.
2359  *
2360  * @since New in 1.2.
2361  */
2363 svn_error_t *
2365  const apr_array_header_t *targets,
2366  svn_boolean_t recurse,
2367  svn_boolean_t keep_locks,
2368  svn_client_ctx_t *ctx,
2369  apr_pool_t *pool);
2370 
2371 /**
2372  * Similar to svn_client_commit2(), but with @a keep_locks set to
2373  * TRUE and @a nonrecursive instead of @a recurse.
2374  *
2375  * @deprecated Provided for backward compatibility with the 1.1 API.
2376  */
2378 svn_error_t *
2380  const apr_array_header_t *targets,
2381  svn_boolean_t nonrecursive,
2382  svn_client_ctx_t *ctx,
2383  apr_pool_t *pool);
2384 
2385 /** @} */
2386 
2387 /**
2388  * @defgroup Status Report interesting information about paths in the \
2389  * working copy.
2390  *
2391  * @{
2392  */
2393 
2394 /**
2395  * Structure for holding the "status" of a working copy item.
2396  *
2397  * @note Fields may be added to the end of this structure in future
2398  * versions. Therefore, to preserve binary compatibility, users
2399  * should not directly allocate structures of this type.
2400  *
2401  * @since New in 1.7.
2402  */
2403 typedef struct svn_client_status_t
2404 {
2405  /** The kind of node as recorded in the working copy */
2407 
2408  /** The absolute path to the node */
2409  const char *local_abspath;
2410 
2411  /** The actual size of the working file on disk, or SVN_INVALID_FILESIZE
2412  * if unknown (or if the item isn't a file at all). */
2414 
2415  /** If the path is under version control, versioned is TRUE, otherwise
2416  * FALSE. */
2418 
2419  /** Set to TRUE if the node is the victim of some kind of conflict. */
2421 
2422  /** The status of the node, based on the restructuring changes and if the
2423  * node has no restructuring changes the text and prop status. */
2425 
2426  /** The status of the text of the node, not including restructuring changes.
2427  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2428  * svn_wc_status_modified and svn_wc_status_conflicted. */
2430 
2431  /** The status of the node's properties.
2432  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2433  * svn_wc_status_modified and svn_wc_status_conflicted. */
2435 
2436  /** A node can be 'locked' if a working copy update is in progress or
2437  * was interrupted. */
2439 
2440  /** A file or directory can be 'copied' if it's scheduled for
2441  * addition-with-history (or part of a subtree that is scheduled as such.).
2442  */
2444 
2445  /** The URL of the repository root. */
2446  const char *repos_root_url;
2447 
2448  /** The UUID of the repository */
2449  const char *repos_uuid;
2450 
2451  /** The in-repository path relative to the repository root. */
2452  const char *repos_relpath;
2453 
2454  /** Base revision. */
2456 
2457  /** Last revision this was changed */
2459 
2460  /** Date of last commit. */
2461  apr_time_t changed_date;
2462 
2463  /** Last commit author of this item */
2464  const char *changed_author;
2465 
2466  /** A file or directory can be 'switched' if the switch command has been
2467  * used. If this is TRUE, then file_external will be FALSE.
2468  */
2470 
2471  /** If the item is a file that was added to the working copy with an
2472  * svn:externals; if file_external is TRUE, then switched is always
2473  * FALSE.
2474  */
2476 
2477  /** The locally present lock. (Values of path, token, owner, comment and
2478  * are available if a lock is present) */
2480 
2481  /** Which changelist this item is part of, or NULL if not part of any. */
2482  const char *changelist;
2483 
2484  /** The depth of the node as recorded in the working copy
2485  * (#svn_depth_unknown for files or when no depth is recorded) */
2487 
2488  /**
2489  * @defgroup svn_wc_status_ood WC out-of-date info from the repository
2490  * @{
2491  *
2492  * When the working copy item is out-of-date compared to the
2493  * repository, the following fields represent the state of the
2494  * youngest revision of the item in the repository. If the working
2495  * copy is not out of date, the fields are initialized as described
2496  * below.
2497  */
2498 
2499  /** Set to the node kind of the youngest commit, or #svn_node_none
2500  * if not out of date. */
2502 
2503  /** The status of the node, based on the text status if the node has no
2504  * restructuring changes */
2506 
2507  /** The node's text status in the repository. */
2509 
2510  /** The node's property status in the repository. */
2512 
2513  /** The node's lock in the repository, if any. */
2515 
2516  /** Set to the youngest committed revision, or #SVN_INVALID_REVNUM
2517  * if not out of date. */
2519 
2520  /** Set to the most recent commit date, or @c 0 if not out of date. */
2521  apr_time_t ood_changed_date;
2522 
2523  /** Set to the user name of the youngest commit, or @c NULL if not
2524  * out of date or non-existent. Because a non-existent @c
2525  * svn:author property has the same behavior as an out-of-date
2526  * working copy, examine @c ood_changed_rev to determine whether
2527  * the working copy is out of date. */
2528  const char *ood_changed_author;
2529 
2530  /** @} */
2531 
2532  /** Reserved for libsvn_client's internal use; this value is only to be used
2533  * for libsvn_client backwards compatibility wrappers. This value may be NULL
2534  * or to other data in future versions. */
2536 
2537  /** Set to the local absolute path that this node was moved from, if this
2538  * file or directory has been moved here locally and is the root of that
2539  * move. Otherwise set to NULL.
2540  *
2541  * This will be NULL for moved-here nodes that are just part of a subtree
2542  * that was moved along (and are not themselves a root of a different move
2543  * operation).
2544  *
2545  * @since New in 1.8. */
2546  const char *moved_from_abspath;
2547 
2548  /** Set to the local absolute path that this node was moved to, if this file
2549  * or directory has been moved away locally and corresponds to the root
2550  * of the destination side of the move. Otherwise set to NULL.
2551  *
2552  * Note: Saying just "root" here could be misleading. For example:
2553  * svn mv A AA;
2554  * svn mv AA/B BB;
2555  * creates a situation where A/B is moved-to BB, but one could argue that
2556  * the move source's root actually was AA/B. Note that, as far as the
2557  * working copy is concerned, above case is exactly identical to:
2558  * svn mv A/B BB;
2559  * svn mv A AA;
2560  * In both situations, @a moved_to_abspath would be set for nodes A (moved
2561  * to AA) and A/B (moved to BB), only.
2562  *
2563  * This will be NULL for moved-away nodes that were just part of a subtree
2564  * that was moved along (and are not themselves a root of a different move
2565  * operation).
2566  *
2567  * @since New in 1.8. */
2568  const char *moved_to_abspath;
2569 
2570  /* NOTE! Please update svn_client_status_dup() when adding new fields here. */
2572 
2573 /**
2574  * Return a duplicate of @a status, allocated in @a result_pool. No part of the new
2575  * structure will be shared with @a status.
2576  *
2577  * @since New in 1.7.
2578  */
2581  apr_pool_t *result_pool);
2582 
2583 /**
2584  * A callback for reporting a @a status about @a path (which may be an
2585  * absolute or relative path).
2586  *
2587  * @a baton is a closure object; it should be provided by the
2588  * implementation, and passed by the caller.
2589  *
2590  * @a scratch_pool will be cleared between invocations to the callback.
2591  *
2592  * @since New in 1.7.
2593  */
2594 typedef svn_error_t *(*svn_client_status_func_t)(
2595  void *baton,
2596  const char *path,
2597  const svn_client_status_t *status,
2598  apr_pool_t *scratch_pool);
2599 
2600 /**
2601  * Given @a path to a working copy directory (or single file), call
2602  * @a status_func/status_baton with a set of #svn_wc_status_t *
2603  * structures which describe the status of @a path, and its children
2604  * (recursing according to @a depth).
2605  *
2606  * - If @a get_all is set, retrieve all entries; otherwise,
2607  * retrieve only "interesting" entries (local mods and/or
2608  * out of date).
2609  *
2610  * - If @a check_out_of_date is set, contact the repository and
2611  * augment the status structures with information about
2612  * out-of-dateness (with respect to @a revision). Also, if @a
2613  * result_rev is not @c NULL, set @a *result_rev to the actual
2614  * revision against which the working copy was compared (@a
2615  * *result_rev is not meaningful unless @a check_out_of_date is
2616  * set).
2617  *
2618  * - If @a check_working_copy is not set, do not scan the working
2619  * copy for local modifications. This parameter will be ignored
2620  * unless @a check_out_of_date is set. When set, the status
2621  * report will not contain any information about local changes in
2622  * the working copy; this includes local deletions and
2623  * replacements.
2624  *
2625  * If @a no_ignore is @c FALSE, don't report any file or directory (or
2626  * recurse into any directory) that is found by recursion (as opposed to
2627  * being the explicit target @a path) and whose name matches the
2628  * svn:ignore property on its parent directory or the global-ignores
2629  * list in @a ctx->config. If @a no_ignore is @c TRUE, report each such
2630  * file or directory with the status code #svn_wc_status_ignored.
2631  *
2632  * If @a ignore_externals is not set, then recurse into externals
2633  * definitions (if any exist) after handling the main target. This
2634  * calls the client notification function (in @a ctx) with the
2635  * #svn_wc_notify_status_external action before handling each externals
2636  * definition, and with #svn_wc_notify_status_completed
2637  * after each.
2638  *
2639  * If @a depth_as_sticky is set and @a depth is not
2640  * #svn_depth_unknown, then the status is calculated as if depth_is_sticky
2641  * was passed to an equivalent update command.
2642  *
2643  * @a changelists is an array of <tt>const char *</tt> changelist
2644  * names, used as a restrictive filter on items whose statuses are
2645  * reported; that is, don't report status about any item unless
2646  * it's a member of one of those changelists. If @a changelists is
2647  * empty (or altogether @c NULL), no changelist filtering occurs.
2648  *
2649  * If @a path is an absolute path then the @c path parameter passed in each
2650  * call to @a status_func will be an absolute path.
2651  *
2652  * All temporary allocations are performed in @a scratch_pool.
2653  *
2654  * @since New in 1.9.
2655  */
2656 svn_error_t *
2658  svn_client_ctx_t *ctx,
2659  const char *path,
2660  const svn_opt_revision_t *revision,
2661  svn_depth_t depth,
2662  svn_boolean_t get_all,
2663  svn_boolean_t check_out_of_date,
2664  svn_boolean_t check_working_copy,
2665  svn_boolean_t no_ignore,
2666  svn_boolean_t ignore_externals,
2667  svn_boolean_t depth_as_sticky,
2668  const apr_array_header_t *changelists,
2669  svn_client_status_func_t status_func,
2670  void *status_baton,
2671  apr_pool_t *scratch_pool);
2672 
2673 
2674 /**
2675  * Same as svn_client_status6(), but with @a check_out_of_date set to
2676  * @a update and @a check_working_copy set to @c TRUE.
2677  *
2678  * @since New in 1.7.
2679  * @deprecated Provided for backward compatibility with the 1.8 API.
2680  */
2682 svn_error_t *
2684  svn_client_ctx_t *ctx,
2685  const char *path,
2686  const svn_opt_revision_t *revision,
2687  svn_depth_t depth,
2688  svn_boolean_t get_all,
2689  svn_boolean_t update,
2690  svn_boolean_t no_ignore,
2691  svn_boolean_t ignore_externals,
2692  svn_boolean_t depth_as_sticky,
2693  const apr_array_header_t *changelists,
2694  svn_client_status_func_t status_func,
2695  void *status_baton,
2696  apr_pool_t *scratch_pool);
2697 
2698 /**
2699  * Same as svn_client_status5(), but using #svn_wc_status_func3_t
2700  * instead of #svn_client_status_func_t and depth_as_sticky set to TRUE.
2701  *
2702  * @since New in 1.6.
2703  * @deprecated Provided for backward compatibility with the 1.6 API.
2704  */
2706 svn_error_t *
2708  const char *path,
2709  const svn_opt_revision_t *revision,
2710  svn_wc_status_func3_t status_func,
2711  void *status_baton,
2712  svn_depth_t depth,
2713  svn_boolean_t get_all,
2714  svn_boolean_t update,
2715  svn_boolean_t no_ignore,
2716  svn_boolean_t ignore_externals,
2717  const apr_array_header_t *changelists,
2718  svn_client_ctx_t *ctx,
2719  apr_pool_t *pool);
2720 
2721 /**
2722  * Same as svn_client_status4(), but using an #svn_wc_status_func2_t
2723  * instead of an #svn_wc_status_func3_t.
2724  *
2725  * @since New in 1.5.
2726  * @deprecated Provided for backward compatibility with the 1.5 API.
2727  */
2729 svn_error_t *
2731  const char *path,
2732  const svn_opt_revision_t *revision,
2733  svn_wc_status_func2_t status_func,
2734  void *status_baton,
2735  svn_depth_t depth,
2736  svn_boolean_t get_all,
2737  svn_boolean_t update,
2738  svn_boolean_t no_ignore,
2739  svn_boolean_t ignore_externals,
2740  const apr_array_header_t *changelists,
2741  svn_client_ctx_t *ctx,
2742  apr_pool_t *pool);
2743 
2744 /**
2745  * Like svn_client_status3(), except with @a changelists passed as @c
2746  * NULL, and with @a recurse instead of @a depth. If @a recurse is
2747  * TRUE, behave as if for #svn_depth_infinity; else if @a recurse is
2748  * FALSE, behave as if for #svn_depth_immediates.
2749  *
2750  * @since New in 1.2.
2751  * @deprecated Provided for backward compatibility with the 1.4 API.
2752  */
2754 svn_error_t *
2756  const char *path,
2757  const svn_opt_revision_t *revision,
2758  svn_wc_status_func2_t status_func,
2759  void *status_baton,
2760  svn_boolean_t recurse,
2761  svn_boolean_t get_all,
2762  svn_boolean_t update,
2763  svn_boolean_t no_ignore,
2764  svn_boolean_t ignore_externals,
2765  svn_client_ctx_t *ctx,
2766  apr_pool_t *pool);
2767 
2768 
2769 /**
2770  * Similar to svn_client_status2(), but with @a ignore_externals
2771  * always set to FALSE, taking the #svn_wc_status_func_t type
2772  * instead of the #svn_wc_status_func2_t type for @a status_func,
2773  * and requiring @a *revision to be non-const even though it is
2774  * treated as constant.
2775  *
2776  * @deprecated Provided for backward compatibility with the 1.1 API.
2777  */
2779 svn_error_t *
2781  const char *path,
2782  svn_opt_revision_t *revision,
2783  svn_wc_status_func_t status_func,
2784  void *status_baton,
2785  svn_boolean_t recurse,
2786  svn_boolean_t get_all,
2787  svn_boolean_t update,
2788  svn_boolean_t no_ignore,
2789  svn_client_ctx_t *ctx,
2790  apr_pool_t *pool);
2791 
2792 /** @} */
2793 
2794 /**
2795  * @defgroup Log View information about previous revisions of an object.
2796  *
2797  * @{
2798  */
2799 
2800 /**
2801  * Invoke @a receiver with @a receiver_baton on each log message from
2802  * each (#svn_opt_revision_range_t *) range in @a revision_ranges in turn,
2803  * inclusive (but never invoke @a receiver on a given log message more
2804  * than once).
2805  *
2806  * @a targets contains either a URL followed by zero or more relative
2807  * paths, or 1 working copy path, as <tt>const char *</tt>, for which log
2808  * messages are desired. @a receiver is invoked only on messages whose
2809  * revisions involved a change to some path in @a targets. @a peg_revision
2810  * indicates in which revision @a targets are valid. If @a peg_revision is
2811  * #svn_opt_revision_unspecified, it defaults to #svn_opt_revision_head
2812  * for URLs or #svn_opt_revision_working for WC paths.
2813  *
2814  * If @a limit is greater than zero only invoke @a receiver on the first
2815  * @a limit logs.
2816  *
2817  * If @a discover_changed_paths is set, then the @c changed_paths and @c
2818  * changed_paths2 fields in the @c log_entry argument to @a receiver will be
2819  * populated on each invocation. @note The @c text_modified and @c
2820  * props_modified fields of the changed paths structure may have the value
2821  * #svn_tristate_unknown if the repository does not report that information.
2822  *
2823  * If @a strict_node_history is set, copy history (if any exists) will
2824  * not be traversed while harvesting revision logs for each target.
2825  *
2826  * If @a include_merged_revisions is set, log information for revisions
2827  * which have been merged to @a targets will also be returned.
2828  *
2829  * If @a revprops is NULL, retrieve all revision properties; else, retrieve
2830  * only the revision properties named by the (const char *) array elements
2831  * (i.e. retrieve none if the array is empty).
2832  *
2833  * Use @a pool for any temporary allocation.
2834  *
2835  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2/baton2
2836  * with a 'skip' signal on any unversioned targets.
2837  *
2838  * @since New in 1.6.
2839  */
2840 svn_error_t *
2841 svn_client_log5(const apr_array_header_t *targets,
2842  const svn_opt_revision_t *peg_revision,
2843  const apr_array_header_t *revision_ranges,
2844  int limit,
2845  svn_boolean_t discover_changed_paths,
2846  svn_boolean_t strict_node_history,
2847  svn_boolean_t include_merged_revisions,
2848  const apr_array_header_t *revprops,
2849  svn_log_entry_receiver_t receiver,
2850  void *receiver_baton,
2851  svn_client_ctx_t *ctx,
2852  apr_pool_t *pool);
2853 
2854 /**
2855  * Similar to svn_client_log5(), but takes explicit start and end parameters
2856  * instead of an array of revision ranges.
2857  *
2858  * @deprecated Provided for compatibility with the 1.5 API.
2859  * @since New in 1.5.
2860  */
2862 svn_error_t *
2863 svn_client_log4(const apr_array_header_t *targets,
2864  const svn_opt_revision_t *peg_revision,
2865  const svn_opt_revision_t *start,
2866  const svn_opt_revision_t *end,
2867  int limit,
2868  svn_boolean_t discover_changed_paths,
2869  svn_boolean_t strict_node_history,
2870  svn_boolean_t include_merged_revisions,
2871  const apr_array_header_t *revprops,
2872  svn_log_entry_receiver_t receiver,
2873  void *receiver_baton,
2874  svn_client_ctx_t *ctx,
2875  apr_pool_t *pool);
2876 
2877 /**
2878  * Similar to svn_client_log4(), but using #svn_log_message_receiver_t
2879  * instead of #svn_log_entry_receiver_t. Also, @a
2880  * include_merged_revisions is set to @c FALSE and @a revprops is
2881  * svn:author, svn:date, and svn:log.
2882  *
2883  * @deprecated Provided for compatibility with the 1.4 API.
2884  * @since New in 1.4.
2885  */
2887 svn_error_t *
2888 svn_client_log3(const apr_array_header_t *targets,
2889  const svn_opt_revision_t *peg_revision,
2890  const svn_opt_revision_t *start,
2891  const svn_opt_revision_t *end,
2892  int limit,
2893  svn_boolean_t discover_changed_paths,
2894  svn_boolean_t strict_node_history,
2895  svn_log_message_receiver_t receiver,
2896  void *receiver_baton,
2897  svn_client_ctx_t *ctx,
2898  apr_pool_t *pool);
2899 
2900 
2901 /**
2902  * Similar to svn_client_log3(), but with the @c kind field of
2903  * @a peg_revision set to #svn_opt_revision_unspecified.
2904  *
2905  * @par Important:
2906  * A special case for the revision range HEAD:1, which was present
2907  * in svn_client_log(), has been removed from svn_client_log2(). Instead, it
2908  * is expected that callers will specify the range HEAD:0, to avoid a
2909  * #SVN_ERR_FS_NO_SUCH_REVISION error when invoked against an empty repository
2910  * (i.e. one not containing a revision 1).
2911  *
2912  * @deprecated Provided for compatibility with the 1.3 API.
2913  * @since New in 1.2.
2914  */
2916 svn_error_t *
2917 svn_client_log2(const apr_array_header_t *targets,
2918  const svn_opt_revision_t *start,
2919  const svn_opt_revision_t *end,
2920  int limit,
2921  svn_boolean_t discover_changed_paths,
2922  svn_boolean_t strict_node_history,
2923  svn_log_message_receiver_t receiver,
2924  void *receiver_baton,
2925  svn_client_ctx_t *ctx,
2926  apr_pool_t *pool);
2927 
2928 
2929 /**
2930  * Similar to svn_client_log2(), but with @a limit set to 0, and the
2931  * following special case:
2932  *
2933  * Special case for repositories at revision 0:
2934  *
2935  * If @a start->kind is #svn_opt_revision_head, and @a end->kind is
2936  * #svn_opt_revision_number && @a end->number is @c 1, then handle an
2937  * empty (no revisions) repository specially: instead of erroring
2938  * because requested revision 1 when the highest revision is 0, just
2939  * invoke @a receiver on revision 0, passing @c NULL for changed paths and
2940  * empty strings for the author and date. This is because that
2941  * particular combination of @a start and @a end usually indicates the
2942  * common case of log invocation -- the user wants to see all log
2943  * messages from youngest to oldest, where the oldest commit is
2944  * revision 1. That works fine, except when there are no commits in
2945  * the repository, hence this special case.
2946  *
2947  * @deprecated Provided for backward compatibility with the 1.1 API.
2948  */
2950 svn_error_t *
2951 svn_client_log(const apr_array_header_t *targets,
2952  const svn_opt_revision_t *start,
2953  const svn_opt_revision_t *end,
2954  svn_boolean_t discover_changed_paths,
2955  svn_boolean_t strict_node_history,
2956  svn_log_message_receiver_t receiver,
2957  void *receiver_baton,
2958  svn_client_ctx_t *ctx,
2959  apr_pool_t *pool);
2960 
2961 /** @} */
2962 
2963 /**
2964  * @defgroup Blame Show modification information about lines in a file.
2965  *
2966  * @{
2967  */
2968 
2969 /**
2970  * Invoke @a receiver with @a receiver_baton on each line-blame item
2971  * associated with revision @a end of @a path_or_url, using @a start
2972  * as the default source of all blame. @a peg_revision indicates in
2973  * which revision @a path_or_url is valid. If @a peg_revision->kind
2974  * is #svn_opt_revision_unspecified, then it defaults to
2975  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
2976  * WC targets.
2977  *
2978  * If @a start->kind or @a end->kind is #svn_opt_revision_unspecified,
2979  * return the error #SVN_ERR_CLIENT_BAD_REVISION. If either are
2980  * #svn_opt_revision_working, return the error
2981  * #SVN_ERR_UNSUPPORTED_FEATURE. If any of the revisions of @a
2982  * path_or_url have a binary mime-type, return the error
2983  * #SVN_ERR_CLIENT_IS_BINARY_FILE, unless @a ignore_mime_type is TRUE,
2984  * in which case blame information will be generated regardless of the
2985  * MIME types of the revisions.
2986  *
2987  * @a start may resolve to a revision number greater (younger) than @a end
2988  * only if the server is 1.8.0 or greater (supports
2989  * #SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE) and the client is 1.9.0 or
2990  * newer.
2991  *
2992  * Before the first call to @a receiver, set @a *start_revnum_p and
2993  * @a *end_revnum_p to the start and end revision number of the entire
2994  * blame operation, as resolved from the repository. This can be useful
2995  * for the blame receiver to format the blame output. Any or both of these
2996  * arguments may be @c NULL.
2997  *
2998  * Use @a diff_options to determine how to compare different revisions of the
2999  * target.
3000  *
3001  * If @a include_merged_revisions is TRUE, also return data based upon
3002  * revisions which have been merged to @a path_or_url.
3003  *
3004  * Use @a pool for any temporary allocation.
3005  *
3006  * @since New in 1.12.
3007  */
3008 svn_error_t *
3010  svn_revnum_t *end_revnum_p,
3011  const char *path_or_url,
3012  const svn_opt_revision_t *peg_revision,
3013  const svn_opt_revision_t *start,
3014  const svn_opt_revision_t *end,
3015  const svn_diff_file_options_t *diff_options,
3016  svn_boolean_t ignore_mime_type,
3017  svn_boolean_t include_merged_revisions,
3019  void *receiver_baton,
3020  svn_client_ctx_t *ctx,
3021  apr_pool_t *pool);
3022 
3023 
3024 /**
3025  * Similar to svn_client_blame6(), but with #svn_client_blame_receiver3_t
3026  * as the receiver.
3027  *
3028  * @deprecated Provided for backwards compatibility with the 1.11 API.
3029  *
3030  * @since New in 1.7.
3031  */
3033 svn_error_t *
3034 svn_client_blame5(const char *path_or_url,
3035  const svn_opt_revision_t *peg_revision,
3036  const svn_opt_revision_t *start,
3037  const svn_opt_revision_t *end,
3038  const svn_diff_file_options_t *diff_options,
3039  svn_boolean_t ignore_mime_type,
3040  svn_boolean_t include_merged_revisions,
3042  void *receiver_baton,
3043  svn_client_ctx_t *ctx,
3044  apr_pool_t *pool);
3045 
3046 /**
3047  * Similar to svn_client_blame5(), but with #svn_client_blame_receiver2_t
3048  * as the receiver.
3049  *
3050  * @deprecated Provided for backwards compatibility with the 1.6 API.
3051  *
3052  * @since New in 1.5.
3053  */
3055 svn_error_t *
3056 svn_client_blame4(const char *path_or_url,
3057  const svn_opt_revision_t *peg_revision,
3058  const svn_opt_revision_t *start,
3059  const svn_opt_revision_t *end,
3060  const svn_diff_file_options_t *diff_options,
3061  svn_boolean_t ignore_mime_type,
3062  svn_boolean_t include_merged_revisions,
3064  void *receiver_baton,
3065  svn_client_ctx_t *ctx,
3066  apr_pool_t *pool);
3067 
3068 /**
3069  * Similar to svn_client_blame4(), but with @a include_merged_revisions set
3070  * to FALSE, and using a #svn_client_blame_receiver2_t as the receiver.
3071  *
3072  * @deprecated Provided for backwards compatibility with the 1.4 API.
3073  *
3074  * @since New in 1.4.
3075  */
3077 svn_error_t *
3078 svn_client_blame3(const char *path_or_url,
3079  const svn_opt_revision_t *peg_revision,
3080  const svn_opt_revision_t *start,
3081  const svn_opt_revision_t *end,
3082  const svn_diff_file_options_t *diff_options,
3083  svn_boolean_t ignore_mime_type,
3084  svn_client_blame_receiver_t receiver,
3085  void *receiver_baton,
3086  svn_client_ctx_t *ctx,
3087  apr_pool_t *pool);
3088 
3089 /**
3090  * Similar to svn_client_blame3(), but with @a diff_options set to
3091  * default options as returned by svn_diff_file_options_parse() and
3092  * @a ignore_mime_type set to FALSE.
3093  *
3094  * @deprecated Provided for backwards compatibility with the 1.3 API.
3095  *
3096  * @since New in 1.2.
3097  */
3099 svn_error_t *
3100 svn_client_blame2(const char *path_or_url,
3101  const svn_opt_revision_t *peg_revision,
3102  const svn_opt_revision_t *start,
3103  const svn_opt_revision_t *end,
3104  svn_client_blame_receiver_t receiver,
3105  void *receiver_baton,
3106  svn_client_ctx_t *ctx,
3107  apr_pool_t *pool);
3108 
3109 /**
3110  * Similar to svn_client_blame2() except that @a peg_revision is always
3111  * the same as @a end.
3112  *
3113  * @deprecated Provided for backward compatibility with the 1.1 API.
3114  */
3116 svn_error_t *
3117 svn_client_blame(const char *path_or_url,
3118  const svn_opt_revision_t *start,
3119  const svn_opt_revision_t *end,
3120  svn_client_blame_receiver_t receiver,
3121  void *receiver_baton,
3122  svn_client_ctx_t *ctx,
3123  apr_pool_t *pool);
3124 
3125 /** @} */
3126 
3127 /**
3128  * @defgroup Diff Generate differences between paths.
3129  *
3130  * @{
3131  */
3132 
3133 /**
3134  * Produce diff output which describes the delta between
3135  * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2. Print
3136  * the output of the diff to @a outstream, and any errors to @a
3137  * errstream. @a path_or_url1 and @a path_or_url2 can be either
3138  * working-copy paths or URLs.
3139  *
3140  * If @a relative_to_dir is not @c NULL, the original path and
3141  * modified path will have the @a relative_to_dir stripped from the
3142  * front of the respective paths. If @a relative_to_dir is @c NULL,
3143  * paths will not be modified. If @a relative_to_dir is not
3144  * @c NULL but @a relative_to_dir is not a parent path of the target,
3145  * an error is returned. Finally, if @a relative_to_dir is a URL, an
3146  * error will be returned.
3147  *
3148  * If either @a revision1 or @a revision2 has an `unspecified' or
3149  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3150  *
3151  * @a path_or_url1 and @a path_or_url2 must both represent the same node
3152  * kind -- that is, if @a path_or_url1 is a directory, @a path_or_url2
3153  * must also be, and if @a path_or_url1 is a file, @a path_or_url2 must
3154  * also be.
3155  *
3156  * If @a depth is #svn_depth_infinity, diff fully recursively.
3157  * Else if it is #svn_depth_immediates, diff the named paths and
3158  * their file children (if any), and diff properties of
3159  * subdirectories, but do not descend further into the subdirectories.
3160  * Else if #svn_depth_files, behave as if for #svn_depth_immediates
3161  * except don't diff properties of subdirectories. If
3162  * #svn_depth_empty, diff exactly the named paths but nothing
3163  * underneath them.
3164  *
3165  * Use @a ignore_ancestry to control whether or not items being
3166  * diffed will be checked for relatedness first. Unrelated items
3167  * are typically transmitted to the editor as a deletion of one thing
3168  * and the addition of another, but if this flag is TRUE, unrelated
3169  * items will be diffed as if they were related.
3170  *
3171  * If @a no_diff_added is TRUE, then no diff output will be generated
3172  * on added files.
3173  *
3174  * If @a no_diff_deleted is TRUE, then no diff output will be
3175  * generated on deleted files.
3176  *
3177  * If @a show_copies_as_adds is TRUE, then copied files will not be diffed
3178  * against their copyfrom source, and will appear in the diff output
3179  * in their entirety, as if they were newly added.
3180  * ### BUGS: For a repos-repos diff, this is ignored. Instead, a file is
3181  * diffed against its copyfrom source iff the file is the diff target
3182  * and not if some parent directory is the diff target. For a repos-WC
3183  * diff, this is ignored if the file is the diff target.
3184  *
3185  * If @a use_git_diff_format is TRUE, then the git's extended diff format
3186  * will be used.
3187  * ### Do we need to say more about the format? A reference perhaps?
3188  *
3189  * If @a ignore_properties is TRUE, do not show property differences.
3190  * If @a properties_only is TRUE, show only property changes.
3191  * The above two options are mutually exclusive. It is an error to set
3192  * both to TRUE.
3193  *
3194  * If @a pretty_print_mergeinfo is true, then describe 'svn:mergeinfo'
3195  * property changes in a human-readable form that says what changes were
3196  * merged or reverse merged; otherwise (or if the mergeinfo property values
3197  * don't parse correctly) display them just like any other property.
3198  *
3199  * Generated headers are encoded using @a header_encoding.
3200  *
3201  * If either side has an svn:mime-type property that indicates 'binary'
3202  * content, then if @a ignore_content_type is set, attempt to produce the
3203  * diff in the usual way, otherwise produce a 'GIT binary diff' in git mode
3204  * or print a warning message in non-git mode.
3205  *
3206  * @a diff_options (an array of <tt>const char *</tt>) is used to pass
3207  * additional command line options to the diff processes invoked to compare
3208  * files. @a diff_options is allowed to be @c NULL, in which case a value
3209  * for this option might still be obtained from the Subversion configuration
3210  * file via client context @a ctx.
3211  *
3212  * The authentication baton cached in @a ctx is used to communicate with
3213  * the repository.
3214  *
3215  * @a changelists is an array of <tt>const char *</tt> changelist
3216  * names, used as a restrictive filter on items whose differences are
3217  * reported; that is, don't generate diffs about any item unless
3218  * it's a member of one of those changelists. If @a changelists is
3219  * empty (or altogether @c NULL), no changelist filtering occurs.
3220  *
3221  * @note Changelist filtering only applies to diffs in which at least
3222  * one side of the diff represents working copy data.
3223  *
3224  * @note @a header_encoding doesn't affect headers generated by external
3225  * diff programs.
3226  *
3227  * @note @a relative_to_dir doesn't affect the path index generated by
3228  * external diff programs.
3229  *
3230  * @since New in 1.11.
3231  */
3232 svn_error_t *
3233 svn_client_diff7(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  svn_boolean_t pretty_print_mergeinfo,
3249  const char *header_encoding,
3250  svn_stream_t *outstream,
3251  svn_stream_t *errstream,
3252  const apr_array_header_t *changelists,
3253  svn_client_ctx_t *ctx,
3254  apr_pool_t *pool);
3255 
3256 /** Similar to svn_client_diff7(), but with @a pretty_print_mergeinfo
3257  * always passed as @c TRUE.
3258  *
3259  * @deprecated Provided for backward compatibility with the 1.10 API.
3260  * @since New in 1.8.
3261  */
3263 svn_error_t *
3264 svn_client_diff6(const apr_array_header_t *diff_options,
3265  const char *path_or_url1,
3266  const svn_opt_revision_t *revision1,
3267  const char *path_or_url2,
3268  const svn_opt_revision_t *revision2,
3269  const char *relative_to_dir,
3270  svn_depth_t depth,
3271  svn_boolean_t ignore_ancestry,
3272  svn_boolean_t no_diff_added,
3273  svn_boolean_t no_diff_deleted,
3274  svn_boolean_t show_copies_as_adds,
3275  svn_boolean_t ignore_content_type,
3276  svn_boolean_t ignore_properties,
3277  svn_boolean_t properties_only,
3278  svn_boolean_t use_git_diff_format,
3279  const char *header_encoding,
3280  svn_stream_t *outstream,
3281  svn_stream_t *errstream,
3282  const apr_array_header_t *changelists,
3283  svn_client_ctx_t *ctx,
3284  apr_pool_t *pool);
3285 
3286 /** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
3287  * instead of @a outstream and @a errstream, and with @a
3288  * no_diff_added, @a ignore_properties, and @a properties_only always
3289  * passed as @c FALSE (which means that additions and property changes
3290  * are always transmitted).
3291  *
3292  * @deprecated Provided for backward compatibility with the 1.7 API.
3293  * @since New in 1.7.
3294  */
3296 svn_error_t *
3297 svn_client_diff5(const apr_array_header_t *diff_options,
3298  const char *path1,
3299  const svn_opt_revision_t *revision1,
3300  const char *path2,
3301  const svn_opt_revision_t *revision2,
3302  const char *relative_to_dir,
3303  svn_depth_t depth,
3304  svn_boolean_t ignore_ancestry,
3305  svn_boolean_t no_diff_deleted,
3306  svn_boolean_t show_copies_as_adds,
3307  svn_boolean_t ignore_content_type,
3308  svn_boolean_t use_git_diff_format,
3309  const char *header_encoding,
3310  apr_file_t *outfile,
3311  apr_file_t *errfile,
3312  const apr_array_header_t *changelists,
3313  svn_client_ctx_t *ctx,
3314  apr_pool_t *pool);
3315 
3316 /**
3317  * Similar to svn_client_diff5(), but with @a show_copies_as_adds set to
3318  * @c FALSE and @a use_git_diff_format set to @c FALSE.
3319  *
3320  * @deprecated Provided for backward compatibility with the 1.6 API.
3321  * @since New in 1.5.
3322  */
3324 svn_error_t *
3325 svn_client_diff4(const apr_array_header_t *diff_options,
3326  const char *path1,
3327  const svn_opt_revision_t *revision1,
3328  const char *path2,
3329  const svn_opt_revision_t *revision2,
3330  const char *relative_to_dir,
3331  svn_depth_t depth,
3332  svn_boolean_t ignore_ancestry,
3333  svn_boolean_t no_diff_deleted,
3334  svn_boolean_t ignore_content_type,
3335  const char *header_encoding,
3336  apr_file_t *outfile,
3337  apr_file_t *errfile,
3338  const apr_array_header_t *changelists,
3339  svn_client_ctx_t *ctx,
3340  apr_pool_t *pool);
3341 
3342 /**
3343  * Similar to svn_client_diff4(), but with @a changelists passed as @c
3344  * NULL, and @a depth set according to @a recurse: if @a recurse is
3345  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3346  * FALSE, set @a depth to #svn_depth_empty.
3347  *
3348  * @deprecated Provided for backward compatibility with the 1.4 API.
3349  * @since New in 1.3.
3350  */
3352 svn_error_t *
3353 svn_client_diff3(const apr_array_header_t *diff_options,
3354  const char *path1,
3355  const svn_opt_revision_t *revision1,
3356  const char *path2,
3357  const svn_opt_revision_t *revision2,
3358  svn_boolean_t recurse,
3359  svn_boolean_t ignore_ancestry,
3360  svn_boolean_t no_diff_deleted,
3361  svn_boolean_t ignore_content_type,
3362  const char *header_encoding,
3363  apr_file_t *outfile,
3364  apr_file_t *errfile,
3365  svn_client_ctx_t *ctx,
3366  apr_pool_t *pool);
3367 
3368 
3369 /**
3370  * Similar to svn_client_diff3(), but with @a header_encoding set to
3371  * @c APR_LOCALE_CHARSET.
3372  *
3373  * @deprecated Provided for backward compatibility with the 1.2 API.
3374  * @since New in 1.2.
3375  */
3377 svn_error_t *
3378 svn_client_diff2(const apr_array_header_t *diff_options,
3379  const char *path1,
3380  const svn_opt_revision_t *revision1,
3381  const char *path2,
3382  const svn_opt_revision_t *revision2,
3383  svn_boolean_t recurse,
3384  svn_boolean_t ignore_ancestry,
3385  svn_boolean_t no_diff_deleted,
3386  svn_boolean_t ignore_content_type,
3387  apr_file_t *outfile,
3388  apr_file_t *errfile,
3389  svn_client_ctx_t *ctx,
3390  apr_pool_t *pool);
3391 
3392 /**
3393  * Similar to svn_client_diff2(), but with @a ignore_content_type
3394  * always set to FALSE.
3395  *
3396  * @deprecated Provided for backward compatibility with the 1.1 API.
3397  */
3399 svn_error_t *
3400 svn_client_diff(const apr_array_header_t *diff_options,
3401  const char *path1,
3402  const svn_opt_revision_t *revision1,
3403  const char *path2,
3404  const svn_opt_revision_t *revision2,
3405  svn_boolean_t recurse,
3406  svn_boolean_t ignore_ancestry,
3407  svn_boolean_t no_diff_deleted,
3408  apr_file_t *outfile,
3409  apr_file_t *errfile,
3410  svn_client_ctx_t *ctx,
3411  apr_pool_t *pool);
3412 
3413 /**
3414  * Produce diff output which describes the delta between the filesystem
3415  * object @a path_or_url in peg revision @a peg_revision, as it changed
3416  * between @a start_revision and @a end_revision. @a path_or_url can
3417  * be either a working-copy path or URL.
3418  *
3419  * If @a peg_revision is #svn_opt_revision_unspecified, behave
3420  * identically to svn_client_diff7(), using @a path_or_url for both of that
3421  * function's @a path_or_url1 and @a path_or_url2 arguments.
3422  *
3423  * All other options are handled identically to svn_client_diff7().
3424  *
3425  * @since New in 1.8.
3426  */
3427 svn_error_t *
3428 svn_client_diff_peg7(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  svn_boolean_t pretty_print_mergeinfo,
3444  const char *header_encoding,
3445  svn_stream_t *outstream,
3446  svn_stream_t *errstream,
3447  const apr_array_header_t *changelists,
3448  svn_client_ctx_t *ctx,
3449  apr_pool_t *pool);
3450 
3451 /** Similar to svn_client_diff_peg7(), but with @a pretty_print_mergeinfo
3452  * always passed as @c TRUE.
3453  *
3454  * @deprecated Provided for backward compatibility with the 1.7 API.
3455  * @since New in 1.7.
3456  */
3458 svn_error_t *
3459 svn_client_diff_peg6(const apr_array_header_t *diff_options,
3460  const char *path_or_url,
3461  const svn_opt_revision_t *peg_revision,
3462  const svn_opt_revision_t *start_revision,
3463  const svn_opt_revision_t *end_revision,
3464  const char *relative_to_dir,
3465  svn_depth_t depth,
3466  svn_boolean_t ignore_ancestry,
3467  svn_boolean_t no_diff_added,
3468  svn_boolean_t no_diff_deleted,
3469  svn_boolean_t show_copies_as_adds,
3470  svn_boolean_t ignore_content_type,
3471  svn_boolean_t ignore_properties,
3472  svn_boolean_t properties_only,
3473  svn_boolean_t use_git_diff_format,
3474  const char *header_encoding,
3475  svn_stream_t *outstream,
3476  svn_stream_t *errstream,
3477  const apr_array_header_t *changelists,
3478  svn_client_ctx_t *ctx,
3479  apr_pool_t *pool);
3480 
3481 /** Similar to svn_client_diff6_peg6(), but with @a outfile and @a errfile,
3482  * instead of @a outstream and @a errstream, and with @a
3483  * no_diff_added, @a ignore_properties, and @a properties_only always
3484  * passed as @c FALSE (which means that additions and property changes
3485  * are always transmitted).
3486  *
3487  * @deprecated Provided for backward compatibility with the 1.7 API.
3488  * @since New in 1.7.
3489  */
3491 svn_error_t *
3492 svn_client_diff_peg5(const apr_array_header_t *diff_options,
3493  const char *path,
3494  const svn_opt_revision_t *peg_revision,
3495  const svn_opt_revision_t *start_revision,
3496  const svn_opt_revision_t *end_revision,
3497  const char *relative_to_dir,
3498  svn_depth_t depth,
3499  svn_boolean_t ignore_ancestry,
3500  svn_boolean_t no_diff_deleted,
3501  svn_boolean_t show_copies_as_adds,
3502  svn_boolean_t ignore_content_type,
3503  svn_boolean_t use_git_diff_format,
3504  const char *header_encoding,
3505  apr_file_t *outfile,
3506  apr_file_t *errfile,
3507  const apr_array_header_t *changelists,
3508  svn_client_ctx_t *ctx,
3509  apr_pool_t *pool);
3510 
3511 /**
3512  * Similar to svn_client_diff_peg5(), but with @a show_copies_as_adds set to
3513  * @c FALSE and @a use_git_diff_format set to @c FALSE.
3514  *
3515  * @since New in 1.5.
3516  * @deprecated Provided for backward compatibility with the 1.6 API.
3517  */
3519 svn_error_t *
3520 svn_client_diff_peg4(const apr_array_header_t *diff_options,
3521  const char *path,
3522  const svn_opt_revision_t *peg_revision,
3523  const svn_opt_revision_t *start_revision,
3524  const svn_opt_revision_t *end_revision,
3525  const char *relative_to_dir,
3526  svn_depth_t depth,
3527  svn_boolean_t ignore_ancestry,
3528  svn_boolean_t no_diff_deleted,
3529  svn_boolean_t ignore_content_type,
3530  const char *header_encoding,
3531  apr_file_t *outfile,
3532  apr_file_t *errfile,
3533  const apr_array_header_t *changelists,
3534  svn_client_ctx_t *ctx,
3535  apr_pool_t *pool);
3536 
3537 /**
3538  * Similar to svn_client_diff_peg4(), but with @a changelists passed
3539  * as @c NULL, and @a depth set according to @a recurse: if @a recurse
3540  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3541  * FALSE, set @a depth to #svn_depth_files.
3542  *
3543  * @deprecated Provided for backward compatibility with the 1.4 API.
3544  * @since New in 1.3.
3545  */
3547 svn_error_t *
3548 svn_client_diff_peg3(const apr_array_header_t *diff_options,
3549  const char *path,
3550  const svn_opt_revision_t *peg_revision,
3551  const svn_opt_revision_t *start_revision,
3552  const svn_opt_revision_t *end_revision,
3553  svn_boolean_t recurse,
3554  svn_boolean_t ignore_ancestry,
3555  svn_boolean_t no_diff_deleted,
3556  svn_boolean_t ignore_content_type,
3557  const char *header_encoding,
3558  apr_file_t *outfile,
3559  apr_file_t *errfile,
3560  svn_client_ctx_t *ctx,
3561  apr_pool_t *pool);
3562 
3563 /**
3564  * Similar to svn_client_diff_peg3(), but with @a header_encoding set to
3565  * @c APR_LOCALE_CHARSET.
3566  *
3567  * @deprecated Provided for backward compatibility with the 1.2 API.
3568  * @since New in 1.2.
3569  */
3571 svn_error_t *
3572 svn_client_diff_peg2(const apr_array_header_t *diff_options,
3573  const char *path,
3574  const svn_opt_revision_t *peg_revision,
3575  const svn_opt_revision_t *start_revision,
3576  const svn_opt_revision_t *end_revision,
3577  svn_boolean_t recurse,
3578  svn_boolean_t ignore_ancestry,
3579  svn_boolean_t no_diff_deleted,
3580  svn_boolean_t ignore_content_type,
3581  apr_file_t *outfile,
3582  apr_file_t *errfile,
3583  svn_client_ctx_t *ctx,
3584  apr_pool_t *pool);
3585 
3586 /**
3587  * Similar to svn_client_diff_peg2(), but with @a ignore_content_type
3588  * always set to FALSE.
3589  *
3590  * @since New in 1.1.
3591  * @deprecated Provided for backward compatibility with the 1.1 API.
3592  */
3594 svn_error_t *
3595 svn_client_diff_peg(const apr_array_header_t *diff_options,
3596  const char *path,
3597  const svn_opt_revision_t *peg_revision,
3598  const svn_opt_revision_t *start_revision,
3599  const svn_opt_revision_t *end_revision,
3600  svn_boolean_t recurse,
3601  svn_boolean_t ignore_ancestry,
3602  svn_boolean_t no_diff_deleted,
3603  apr_file_t *outfile,
3604  apr_file_t *errfile,
3605  svn_client_ctx_t *ctx,
3606  apr_pool_t *pool);
3607 
3608 /**
3609  * Produce a diff summary which lists the changed items between
3610  * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2 without
3611  * creating text deltas. @a path_or_url1 and @a path_or_url2 can be
3612  * either working-copy paths or URLs.
3613  *
3614  * The function may report false positives if @a ignore_ancestry is false,
3615  * since a file might have been modified between two revisions, but still
3616  * have the same contents.
3617  *
3618  * Calls @a summarize_func with @a summarize_baton for each difference
3619  * with a #svn_client_diff_summarize_t structure describing the difference.
3620  *
3621  * See svn_client_diff7() for a description of the other parameters.
3622  *
3623  * @since New in 1.5.
3624  */
3625 svn_error_t *
3626 svn_client_diff_summarize2(const char *path_or_url1,
3627  const svn_opt_revision_t *revision1,
3628  const char *path_or_url2,
3629  const svn_opt_revision_t *revision2,
3630  svn_depth_t depth,
3631  svn_boolean_t ignore_ancestry,
3632  const apr_array_header_t *changelists,
3633  svn_client_diff_summarize_func_t summarize_func,
3634  void *summarize_baton,
3635  svn_client_ctx_t *ctx,
3636  apr_pool_t *pool);
3637 
3638 /**
3639  * Similar to svn_client_diff_summarize2(), but with @a changelists
3640  * passed as @c NULL, and @a depth set according to @a recurse: if @a
3641  * recurse is TRUE, set @a depth to #svn_depth_infinity, if @a
3642  * recurse is FALSE, set @a depth to #svn_depth_files.
3643  *
3644  * @deprecated Provided for backward compatibility with the 1.4 API.
3645  *
3646  * @since New in 1.4.
3647  */
3649 svn_error_t *
3650 svn_client_diff_summarize(const char *path1,
3651  const svn_opt_revision_t *revision1,
3652  const char *path2,
3653  const svn_opt_revision_t *revision2,
3654  svn_boolean_t recurse,
3655  svn_boolean_t ignore_ancestry,
3656  svn_client_diff_summarize_func_t summarize_func,
3657  void *summarize_baton,
3658  svn_client_ctx_t *ctx,
3659  apr_pool_t *pool);
3660 
3661 /**
3662  * Produce a diff summary which lists the changed items between the
3663  * filesystem object @a path_or_url in peg revision @a peg_revision, as it
3664  * changed between @a start_revision and @a end_revision. @a path_or_url can
3665  * be either a working-copy path or URL.
3666  *
3667  * If @a peg_revision is #svn_opt_revision_unspecified, behave
3668  * identically to svn_client_diff_summarize2(), using @a path_or_url for
3669  * both of that function's @a path_or_url1 and @a path_or_url2 arguments.
3670  *
3671  * The function may report false positives if @a ignore_ancestry is false,
3672  * as described in the documentation for svn_client_diff_summarize2().
3673  *
3674  * Call @a summarize_func with @a summarize_baton for each difference
3675  * with a #svn_client_diff_summarize_t structure describing the difference.
3676  *
3677  * See svn_client_diff_peg5() for a description of the other parameters.
3678  *
3679  * @since New in 1.5.
3680  */
3681 svn_error_t *
3682 svn_client_diff_summarize_peg2(const char *path_or_url,
3683  const svn_opt_revision_t *peg_revision,
3684  const svn_opt_revision_t *start_revision,
3685  const svn_opt_revision_t *end_revision,
3686  svn_depth_t depth,
3687  svn_boolean_t ignore_ancestry,
3688  const apr_array_header_t *changelists,
3689  svn_client_diff_summarize_func_t summarize_func,
3690  void *summarize_baton,
3691  svn_client_ctx_t *ctx,
3692  apr_pool_t *pool);
3693 
3694 /**
3695  * Similar to svn_client_diff_summarize_peg2(), but with @a
3696  * changelists passed as @c NULL, and @a depth set according to @a
3697  * recurse: if @a recurse is TRUE, set @a depth to
3698  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
3699  * #svn_depth_files.
3700  *
3701  * @deprecated Provided for backward compatibility with the 1.4 API.
3702  *
3703  * @since New in 1.4.
3704  */
3706 svn_error_t *
3708  const svn_opt_revision_t *peg_revision,
3709  const svn_opt_revision_t *start_revision,
3710  const svn_opt_revision_t *end_revision,
3711  svn_boolean_t recurse,
3712  svn_boolean_t ignore_ancestry,
3713  svn_client_diff_summarize_func_t summarize_func,
3714  void *summarize_baton,
3715  svn_client_ctx_t *ctx,
3716  apr_pool_t *pool);
3717 
3718 /** @} */
3719 
3720 /**
3721  * @defgroup Merge Merge changes between branches.
3722  *
3723  * @{
3724  */
3725 
3726 /** Get information about the state of merging between two branches.
3727  *
3728  * The source is specified by @a source_path_or_url at @a source_revision.
3729  * The target is specified by @a target_path_or_url at @a target_revision,
3730  * which refers to either a WC or a repository location.
3731  *
3732  * Set @a *needs_reintegration to true if an automatic merge from source
3733  * to target would be a reintegration merge: that is, if the last automatic
3734  * merge was in the opposite direction; or to false otherwise.
3735  *
3736  * Set @a *yca_url, @a *yca_rev, @a *base_url, @a *base_rev, @a *right_url,
3737  * @a *right_rev, @a *target_url, @a *target_rev to the repository locations
3738  * of, respectively: the youngest common ancestor of the branches, the base
3739  * chosen for 3-way merge, the right-hand side of the source diff, and the
3740  * target.
3741  *
3742  * Set @a repos_root_url to the URL of the repository root. This is a
3743  * common prefix of all four URL outputs.
3744  *
3745  * Allocate the results in @a result_pool. Any of the output pointers may
3746  * be NULL if not wanted.
3747  *
3748  * @since New in 1.8.
3749  */
3750 svn_error_t *
3752  const char **yca_url, svn_revnum_t *yca_rev,
3753  const char **base_url, svn_revnum_t *base_rev,
3754  const char **right_url, svn_revnum_t *right_rev,
3755  const char **target_url, svn_revnum_t *target_rev,
3756  const char **repos_root_url,
3757  const char *source_path_or_url,
3758  const svn_opt_revision_t *source_revision,
3759  const char *target_path_or_url,
3760  const svn_opt_revision_t *target_revision,
3761  svn_client_ctx_t *ctx,
3762  apr_pool_t *result_pool,
3763  apr_pool_t *scratch_pool);
3764 
3765 
3766 /** Merge changes from @a source1/@a revision1 to @a source2/@a revision2 into
3767  * the working-copy path @a target_wcpath.
3768  *
3769  * @a source1 and @a source2 are either URLs that refer to entries in the
3770  * repository, or paths to entries in the working copy.
3771  *
3772  * By "merging", we mean: apply file differences using
3773  * svn_wc_merge(), and schedule additions & deletions when appropriate.
3774  *
3775  * @a source1 and @a source2 must both represent the same node kind -- that
3776  * is, if @a source1 is a directory, @a source2 must also be, and if @a source1
3777  * is a file, @a source2 must also be.
3778  *
3779  * If either @a revision1 or @a revision2 has an `unspecified' or
3780  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3781  *
3782  * If @a depth is #svn_depth_infinity, merge fully recursively.
3783  * Else if #svn_depth_immediates, merge changes at most to files
3784  * that are immediate children of @a target_wcpath and to directory
3785  * properties of @a target_wcpath and its immediate subdirectory children.
3786  * Else if #svn_depth_files, merge at most to immediate file
3787  * children of @a target_wcpath and to @a target_wcpath itself.
3788  * Else if #svn_depth_empty, apply changes only to @a target_wcpath
3789  * (i.e., directory property changes only)
3790  *
3791  * If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
3792  *
3793  * If @a ignore_mergeinfo is true, disable merge tracking, by treating the
3794  * two sources as unrelated even if they actually have a common ancestor.
3795  *
3796  * If @a diff_ignore_ancestry is true, diff unrelated nodes as if related:
3797  * that is, diff the 'left' and 'right' versions of a node as if they were
3798  * related (if they are the same kind) even if they are not related.
3799  * Otherwise, diff unrelated items as a deletion of one thing and the
3800  * addition of another.
3801  *
3802  * If @a force_delete is false and the merge involves deleting a file whose
3803  * content differs from the source-left version, or a locally modified
3804  * directory, or an unversioned item, then the operation will fail. If
3805  * @a force_delete is true then all such items will be deleted.
3806  *
3807  * @a merge_options (an array of <tt>const char *</tt>), if non-NULL,
3808  * is used to pass additional command line arguments to the merge
3809  * processes (internal or external). @see
3810  * svn_diff_file_options_parse().
3811  *
3812  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with @a
3813  * ctx->notify_baton2 once for each merged target, passing the target's local
3814  * path.
3815  *
3816  * If @a record_only is TRUE, the merge is performed, but is limited only to
3817  * mergeinfo property changes on existing paths in @a target_wcpath.
3818  *
3819  * If @a dry_run is TRUE, the merge is carried out, and full notification
3820  * feedback is provided, but the working copy is not modified.
3821  *
3822  * If allow_mixed_rev is @c FALSE, and @a merge_target is a mixed-revision
3823  * working copy, raise @c SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED.
3824  * Because users rarely intend to merge into mixed-revision working copies,
3825  * it is recommended to set this parameter to FALSE by default unless the
3826  * user has explicitly requested a merge into a mixed-revision working copy.
3827  *
3828  * The authentication baton cached in @a ctx is used to communicate with the
3829  * repository.
3830  *
3831  * @since New in 1.8.
3832  */
3833 svn_error_t *
3834 svn_client_merge5(const char *source1,
3835  const svn_opt_revision_t *revision1,
3836  const char *source2,
3837  const svn_opt_revision_t *revision2,
3838  const char *target_wcpath,
3839  svn_depth_t depth,
3840  svn_boolean_t ignore_mergeinfo,
3841  svn_boolean_t diff_ignore_ancestry,
3842  svn_boolean_t force_delete,
3843  svn_boolean_t record_only,
3844  svn_boolean_t dry_run,
3845  svn_boolean_t allow_mixed_rev,
3846  const apr_array_header_t *merge_options,
3847  svn_client_ctx_t *ctx,
3848  apr_pool_t *pool);
3849 
3850 /**
3851  * Similar to svn_client_merge5(), but the single @a ignore_ancestry
3852  * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
3853  *
3854  * @deprecated Provided for backward compatibility with the 1.7 API.
3855  * @since New in 1.7.
3856  */
3858 svn_error_t *
3859 svn_client_merge4(const char *source1,
3860  const svn_opt_revision_t *revision1,
3861  const char *source2,
3862  const svn_opt_revision_t *revision2,
3863  const char *target_wcpath,
3864  svn_depth_t depth,
3865  svn_boolean_t ignore_ancestry,
3866  svn_boolean_t force_delete,
3867  svn_boolean_t record_only,
3868  svn_boolean_t dry_run,
3869  svn_boolean_t allow_mixed_rev,
3870  const apr_array_header_t *merge_options,
3871  svn_client_ctx_t *ctx,
3872  apr_pool_t *pool);
3873 
3874 /**
3875  * Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
3876  * @c TRUE. The @a force parameter maps to the @c force_delete parameter
3877  * of svn_client_merge4().
3878  *
3879  * @deprecated Provided for backward compatibility with the 1.6 API.
3880  *
3881  * @since New in 1.5.
3882  */
3884 svn_error_t *
3885 svn_client_merge3(const char *source1,
3886  const svn_opt_revision_t *revision1,
3887  const char *source2,
3888  const svn_opt_revision_t *revision2,
3889  const char *target_wcpath,
3890  svn_depth_t depth,
3891  svn_boolean_t ignore_ancestry,
3892  svn_boolean_t force,
3893  svn_boolean_t record_only,
3894  svn_boolean_t dry_run,
3895  const apr_array_header_t *merge_options,
3896  svn_client_ctx_t *ctx,
3897  apr_pool_t *pool);
3898 
3899 /**
3900  * Similar to svn_client_merge3(), but with @a record_only set to @c
3901  * FALSE, and @a depth set according to @a recurse: if @a recurse is
3902  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3903  * FALSE, set @a depth to #svn_depth_files.
3904  *
3905  * @deprecated Provided for backward compatibility with the 1.4 API.
3906  *
3907  * @since New in 1.4.
3908  */
3910 svn_error_t *
3911 svn_client_merge2(const char *source1,
3912  const svn_opt_revision_t *revision1,
3913  const char *source2,
3914  const svn_opt_revision_t *revision2,
3915  const char *target_wcpath,
3916  svn_boolean_t recurse,
3917  svn_boolean_t ignore_ancestry,
3918  svn_boolean_t force,
3919  svn_boolean_t dry_run,
3920  const apr_array_header_t *merge_options,
3921  svn_client_ctx_t *ctx,
3922  apr_pool_t *pool);
3923 
3924 
3925 /**
3926  * Similar to svn_client_merge2(), but with @a merge_options set to NULL.
3927  *
3928  * @deprecated Provided for backwards compatibility with the 1.3 API.
3929  */
3931 svn_error_t *
3932 svn_client_merge(const char *source1,
3933  const svn_opt_revision_t *revision1,
3934  const char *source2,
3935  const svn_opt_revision_t *revision2,
3936  const char *target_wcpath,
3937  svn_boolean_t recurse,
3938  svn_boolean_t ignore_ancestry,
3939  svn_boolean_t force,
3940  svn_boolean_t dry_run,
3941  svn_client_ctx_t *ctx,
3942  apr_pool_t *pool);
3943 
3944 
3945 /**
3946  * Perform a reintegration merge of @a source_path_or_url at @a source_peg_revision
3947  * into @a target_wcpath.
3948  * @a target_wcpath must be a single-revision, #svn_depth_infinity,
3949  * pristine, unswitched working copy -- in other words, it must
3950  * reflect a single revision tree, the "target". The mergeinfo on @a
3951  * source_path_or_url must reflect that all of the target has been merged into it.
3952  * Then this behaves like a merge with svn_client_merge5() from the
3953  * target's URL to the source.
3954  *
3955  * All other options are handled identically to svn_client_merge5().
3956  * The depth of the merge is always #svn_depth_infinity.
3957  *
3958  * @since New in 1.5.
3959  * @deprecated Provided for backwards compatibility with the 1.7 API.
3960  */
3962 svn_error_t *
3963 svn_client_merge_reintegrate(const char *source_path_or_url,
3964  const svn_opt_revision_t *source_peg_revision,
3965  const char *target_wcpath,
3966  svn_boolean_t dry_run,
3967  const apr_array_header_t *merge_options,
3968  svn_client_ctx_t *ctx,
3969  apr_pool_t *pool);
3970 
3971 /**
3972  * Merge changes from the source branch identified by
3973  * @a source_path_or_url in peg revision @a source_peg_revision,
3974  * into the target branch working copy at @a target_wcpath.
3975  *
3976  * If @a ranges_to_merge is NULL then perform an automatic merge of
3977  * all the eligible changes up to @a source_peg_revision. If the merge
3978  * required is a reintegrate merge, then return an error if the WC has
3979  * mixed revisions, local modifications and/or switched subtrees; if
3980  * the merge is determined to be of the non-reintegrate kind, then
3981  * return an error if @a allow_mixed_rev is false and the WC contains
3982  * mixed revisions.
3983  *
3984  * If @a ranges_to_merge is not NULL then merge the changes specified
3985  * by the revision ranges in @a ranges_to_merge, or, when honouring
3986  * mergeinfo, only the eligible parts of those revision ranges.
3987  * @a ranges_to_merge is an array of <tt>svn_opt_revision_range_t
3988  * *</tt> ranges. These ranges may describe additive and/or
3989  * subtractive merge ranges, they may overlap fully or partially,
3990  * and/or they may partially or fully negate each other. This
3991  * rangelist is not required to be sorted. If any revision in the
3992  * list of provided ranges has an `unspecified' or unrecognized
3993  * `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3994  *
3995  * If @a ranges_to_merge is an empty array, then do nothing.
3996  *
3997  * All other options are handled identically to svn_client_merge5().
3998  *
3999  * @since New in 1.8.
4000  */
4001 svn_error_t *
4002 svn_client_merge_peg5(const char *source_path_or_url,
4003  const apr_array_header_t *ranges_to_merge,
4004  const svn_opt_revision_t *source_peg_revision,
4005  const char *target_wcpath,
4006  svn_depth_t depth,
4007  svn_boolean_t ignore_mergeinfo,
4008  svn_boolean_t diff_ignore_ancestry,
4009  svn_boolean_t force_delete,
4010  svn_boolean_t record_only,
4011  svn_boolean_t dry_run,
4012  svn_boolean_t allow_mixed_rev,
4013  const apr_array_header_t *merge_options,
4014  svn_client_ctx_t *ctx,
4015  apr_pool_t *pool);
4016 
4017 /**
4018  * Similar to svn_client_merge_peg5(), but automatic merge is not available
4019  * (@a ranges_to_merge must not be NULL), and the single @a ignore_ancestry
4020  * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
4021  *
4022  * @deprecated Provided for backward compatibility with the 1.7 API.
4023  * @since New in 1.7.
4024  */
4026 svn_error_t *
4027 svn_client_merge_peg4(const char *source_path_or_url,
4028  const apr_array_header_t *ranges_to_merge,
4029  const svn_opt_revision_t *source_peg_revision,
4030  const char *target_wcpath,
4031  svn_depth_t depth,
4032  svn_boolean_t ignore_ancestry,
4033  svn_boolean_t force_delete,
4034  svn_boolean_t record_only,
4035  svn_boolean_t dry_run,
4036  svn_boolean_t allow_mixed_rev,
4037  const apr_array_header_t *merge_options,
4038  svn_client_ctx_t *ctx,
4039  apr_pool_t *pool);
4040 
4041 /**
4042  * Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
4043  * @c TRUE. The @a force parameter maps to the @c force_delete parameter
4044  * of svn_client_merge_peg4().
4045  *
4046  * @deprecated Provided for backward compatibility with the 1.6 API.
4047  *
4048  * @since New in 1.5.
4049  */
4051 svn_error_t *
4052 svn_client_merge_peg3(const char *source,
4053  const apr_array_header_t *ranges_to_merge,
4054  const svn_opt_revision_t *peg_revision,
4055  const char *target_wcpath,
4056  svn_depth_t depth,
4057  svn_boolean_t ignore_ancestry,
4058  svn_boolean_t force,
4059  svn_boolean_t record_only,
4060  svn_boolean_t dry_run,
4061  const apr_array_header_t *merge_options,
4062  svn_client_ctx_t *ctx,
4063  apr_pool_t *pool);
4064 
4065 /**
4066  * Similar to svn_client_merge_peg3(), but with @a record_only set to
4067  * @c FALSE, and @a depth set according to @a recurse: if @a recurse
4068  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
4069  * FALSE, set @a depth to #svn_depth_files.
4070  *
4071  * @deprecated Provided for backwards compatibility with the 1.4 API.
4072  *
4073  * @since New in 1.4.
4074  */
4076 svn_error_t *
4077 svn_client_merge_peg2(const char *source,
4078  const svn_opt_revision_t *revision1,
4079  const svn_opt_revision_t *revision2,
4080  const svn_opt_revision_t *peg_revision,
4081  const char *target_wcpath,
4082  svn_boolean_t recurse,
4083  svn_boolean_t ignore_ancestry,
4084  svn_boolean_t force,
4085  svn_boolean_t dry_run,
4086  const apr_array_header_t *merge_options,
4087  svn_client_ctx_t *ctx,
4088  apr_pool_t *pool);
4089 
4090 /**
4091  * Similar to svn_client_merge_peg2(), but with @a merge_options set to
4092  * NULL.
4093  *
4094  * @deprecated Provided for backwards compatibility with the 1.3 API.
4095  *
4096  * @since New in 1.1.
4097  */
4099 svn_error_t *
4100 svn_client_merge_peg(const char *source,
4101  const svn_opt_revision_t *revision1,
4102  const svn_opt_revision_t *revision2,
4103  const svn_opt_revision_t *peg_revision,
4104  const char *target_wcpath,
4105  svn_boolean_t recurse,
4106  svn_boolean_t ignore_ancestry,
4107  svn_boolean_t force,
4108  svn_boolean_t dry_run,
4109  svn_client_ctx_t *ctx,
4110  apr_pool_t *pool);
4111 
4112 
4113 /** Set @a suggestions to an ordered array of @c const char *
4114  * potential merge sources (expressed as full repository URLs) for @a
4115  * path_or_url at @a peg_revision. @a path_or_url is a working copy
4116  * path or repository URL. @a ctx is a context used for
4117  * authentication in the repository case. Use @a pool for all
4118  * allocations.
4119  *
4120  * @since New in 1.5.
4121  */
4122 svn_error_t *
4123 svn_client_suggest_merge_sources(apr_array_header_t **suggestions,
4124  const char *path_or_url,
4125  const svn_opt_revision_t *peg_revision,
4126  svn_client_ctx_t *ctx,
4127  apr_pool_t *pool);
4128 
4129 
4130 /**
4131  * Get the mergeinfo for a single target node (ignoring any subtrees).
4132  *
4133  * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge source
4134  * URLs to <tt>svn_rangelist_t *</tt> rangelists describing the ranges which
4135  * have been merged into @a path_or_url as of @a peg_revision, per
4136  * @a path_or_url's explicit mergeinfo or inherited mergeinfo if no
4137  * explicit mergeinfo if found. If no explicit or inherited mergeinfo
4138  * is found, then set @a *mergeinfo to NULL.
4139  *
4140  * Use @a pool for all necessary allocations.
4141  *
4142  * If the server doesn't support retrieval of mergeinfo (which will
4143  * never happen for file:// URLs), return an
4144  * #SVN_ERR_UNSUPPORTED_FEATURE error.
4145  *
4146  * @note Unlike most APIs which deal with mergeinfo, this one returns
4147  * data where the keys of the hash are absolute repository URLs rather
4148  * than repository filesystem paths.
4149  *
4150  * @since New in 1.5.
4151  */
4152 svn_error_t *
4153 svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo,
4154  const char *path_or_url,
4155  const svn_opt_revision_t *peg_revision,
4156  svn_client_ctx_t *ctx,
4157  apr_pool_t *pool);
4158 
4159 
4160 /**
4161  * Describe the revisions that either have or have not been merged from
4162  * one source branch (or subtree) into another.
4163  *
4164  * If @a finding_merged is TRUE, then drive log entry callbacks
4165  * @a receiver / @a receiver_baton with the revisions merged from
4166  * @a source_path_or_url (as of @a source_peg_revision) into
4167  * @a target_path_or_url (as of @a target_peg_revision). If @a
4168  * finding_merged is FALSE then find the revisions eligible for merging.
4169  *
4170  * If both @a source_start_revision and @a source_end_revision are
4171  * unspecified (that is, of kind @c svn_opt_revision_unspecified),
4172  * @a receiver will be called the requested revisions from 0 to
4173  * @a source_peg_revision and in that order (that is, oldest to
4174  * youngest). Otherwise, both @a source_start_revision and
4175  * @a source_end_revision must be specified, which has two effects:
4176  *
4177  * - @a receiver will be called only with revisions which fall
4178  * within range of @a source_start_revision to
4179  * @a source_end_revision, inclusive, and
4180  *
4181  * - those revisions will be ordered in the same "direction" as the
4182  * walk from @a source_start_revision to @a source_end_revision.
4183  * (If @a source_start_revision is the younger of the two, @a
4184  * receiver will be called with revisions in youngest-to-oldest
4185  * order; otherwise, the reverse occurs.)
4186  *
4187  * If @a depth is #svn_depth_empty consider only the explicit or
4188  * inherited mergeinfo on @a target_path_or_url when calculating merged
4189  * revisions from @a source_path_or_url. If @a depth is #svn_depth_infinity
4190  * then also consider the explicit subtree mergeinfo under @a
4191  * target_path_or_url.
4192  * If a depth other than #svn_depth_empty or #svn_depth_infinity is
4193  * requested then return a #SVN_ERR_UNSUPPORTED_FEATURE error.
4194  *
4195  * In addition to the behavior of @a discover_changed_paths described in
4196  * svn_client_log5(), if set to TRUE it enables detection of sub-tree
4197  * merges that are complete but can't be detected as complete without
4198  * access to the changed paths. Sub-tree merges detected as complete will
4199  * be included if @a finding_merged is TRUE or filtered if @a finding_merged
4200  * is FALSE.
4201  *
4202  * @a revprops is the same as for svn_client_log5(). Use @a scratch_pool for
4203  * all temporary allocations.
4204  *
4205  * @a ctx is a context used for authentication.
4206  *
4207  * If the server doesn't support retrieval of mergeinfo, return an
4208  * #SVN_ERR_UNSUPPORTED_FEATURE error.
4209  *
4210  * @since New in 1.8.
4211  */
4212 svn_error_t *
4214  const char *target_path_or_url,
4215  const svn_opt_revision_t *target_peg_revision,
4216  const char *source_path_or_url,
4217  const svn_opt_revision_t *source_peg_revision,
4218  const svn_opt_revision_t *source_start_revision,
4219  const svn_opt_revision_t *source_end_revision,
4220  svn_log_entry_receiver_t receiver,
4221  void *receiver_baton,
4222  svn_boolean_t discover_changed_paths,
4223  svn_depth_t depth,
4224  const apr_array_header_t *revprops,
4225  svn_client_ctx_t *ctx,
4226  apr_pool_t *scratch_pool);
4227 
4228 /**
4229  * Similar to svn_client_mergeinfo_log2(), but with @a source_start_revision
4230  * and @a source_end_revision always of kind @c svn_opt_revision_unspecified;
4231  *
4232  * @deprecated Provided for backwards compatibility with the 1.7 API.
4233  * @since New in 1.7.
4234  */
4236 svn_error_t *
4238  const char *target_path_or_url,
4239  const svn_opt_revision_t *target_peg_revision,
4240  const char *source_path_or_url,
4241  const svn_opt_revision_t *source_peg_revision,
4242  svn_log_entry_receiver_t receiver,
4243  void *receiver_baton,
4244  svn_boolean_t discover_changed_paths,
4245  svn_depth_t depth,
4246  const apr_array_header_t *revprops,
4247  svn_client_ctx_t *ctx,
4248  apr_pool_t *scratch_pool);
4249 
4250 /**
4251  * Similar to svn_client_mergeinfo_log(), but finds only merged revisions
4252  * and always operates at @a depth #svn_depth_empty.
4253  *
4254  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
4255  * svn_client_mergeinfo_log() instead.
4256  * @since New in 1.5.
4257  */
4259 svn_error_t *
4260 svn_client_mergeinfo_log_merged(const char *path_or_url,
4261  const svn_opt_revision_t *peg_revision,
4262  const char *merge_source_path_or_url,
4263  const svn_opt_revision_t *src_peg_revision,
4264  svn_log_entry_receiver_t receiver,
4265  void *receiver_baton,
4266  svn_boolean_t discover_changed_paths,
4267  const apr_array_header_t *revprops,
4268  svn_client_ctx_t *ctx,
4269  apr_pool_t *pool);
4270 
4271 /**
4272  * Similar to svn_client_mergeinfo_log(), but finds only eligible revisions
4273  * and always operates at @a depth #svn_depth_empty.
4274  *
4275  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
4276  * svn_client_mergeinfo_log() instead.
4277  * @since New in 1.5.
4278  */
4280 svn_error_t *
4281 svn_client_mergeinfo_log_eligible(const char *path_or_url,
4282  const svn_opt_revision_t *peg_revision,
4283  const char *merge_source_path_or_url,
4284  const svn_opt_revision_t *src_peg_revision,
4285  svn_log_entry_receiver_t receiver,
4286  void *receiver_baton,
4287  svn_boolean_t discover_changed_paths,
4288  const apr_array_header_t *revprops,
4289  svn_client_ctx_t *ctx,
4290  apr_pool_t *pool);
4291 
4292 /** @} */
4293 
4294 /**
4295  * @defgroup Cleanup Cleanup an abnormally terminated working copy.
4296  *
4297  * @{
4298  */
4299 
4300 /** Recursively vacuum a working copy directory @a dir_abspath,
4301  * removing unnecessary data.
4302  *
4303  * If @a include_externals is @c TRUE, recurse into externals and vacuum them
4304  * as well.
4305  *
4306  * If @a remove_unversioned_items is @c TRUE, remove unversioned items
4307  * in @a dir_abspath after successful working copy cleanup.
4308  * If @a remove_ignored_items is @c TRUE, remove ignored unversioned items
4309  * in @a dir_abspath after successful working copy cleanup.
4310  *
4311  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
4312  * timestamps for unmodified files in the working copy, reducing comparison
4313  * time on future checks.
4314  *
4315  * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
4316  * copy root unreferenced files in the pristine store are removed.
4317  *
4318  * When asked to remove unversioned or ignored items, and the working copy
4319  * is already locked, return #SVN_ERR_WC_LOCKED. This prevents accidental
4320  * working copy corruption in case users run the cleanup operation to
4321  * remove unversioned items while another client is performing some other
4322  * operation on the working copy.
4323  *
4324  * If @a ctx->cancel_func is non-NULL, invoke it with @a
4325  * ctx->cancel_baton at various points during the operation. If it
4326  * returns an error (typically #SVN_ERR_CANCELLED), return that error
4327  * immediately.
4328  *
4329  * Use @a scratch_pool for any temporary allocations.
4330  *
4331  * @since New in 1.9.
4332  */
4333 svn_error_t *
4334 svn_client_vacuum(const char *dir_abspath,
4335  svn_boolean_t remove_unversioned_items,
4336  svn_boolean_t remove_ignored_items,
4337  svn_boolean_t fix_recorded_timestamps,
4338  svn_boolean_t vacuum_pristines,
4339  svn_boolean_t include_externals,
4340  svn_client_ctx_t *ctx,
4341  apr_pool_t *scratch_pool);
4342 
4343 
4344 /** Recursively cleanup a working copy directory @a dir_abspath, finishing any
4345  * incomplete operations, removing lockfiles, etc.
4346  *
4347  * If @a break_locks is @c TRUE, existing working copy locks at or below @a
4348  * dir_abspath are broken, otherwise a normal write lock is obtained.
4349  *
4350  * If @a fix_recorded_timestamps is @c TRUE, this function fixes recorded
4351  * timestamps for unmodified files in the working copy, reducing comparison
4352  * time on future checks.
4353  *
4354  * If @a clear_dav_cache is @c TRUE, the caching of DAV information for older
4355  * mod_dav served repositories is cleared. This clearing invalidates some
4356  * cached information used for pre-HTTPv2 repositories.
4357  *
4358  * If @a vacuum_pristines is @c TRUE, and @a dir_abspath points to the working
4359  * copy root unreferenced files in the pristine store are removed.
4360  *
4361  * If @a include_externals is @c TRUE, recurse into externals and clean
4362  * them up as well.
4363  *
4364  * If @a ctx->cancel_func is non-NULL, invoke it with @a
4365  * ctx->cancel_baton at various points during the operation. If it
4366  * returns an error (typically #SVN_ERR_CANCELLED), return that error
4367  * immediately.
4368  *
4369  * Use @a scratch_pool for any temporary allocations.
4370  *
4371  * @since New in 1.9.
4372  */
4373 svn_error_t *
4374 svn_client_cleanup2(const char *dir_abspath,
4375  svn_boolean_t break_locks,
4376  svn_boolean_t fix_recorded_timestamps,
4377  svn_boolean_t clear_dav_cache,
4378  svn_boolean_t vacuum_pristines,
4379  svn_boolean_t include_externals,
4380  svn_client_ctx_t *ctx,
4381  apr_pool_t *scratch_pool);
4382 
4383 /** Like svn_client_cleanup2(), but no support for not breaking locks and
4384  * cleaning up externals and using a potentially non absolute path.
4385  *
4386  * @deprecated Provided for limited backwards compatibility with the 1.8 API.
4387  */
4389 svn_error_t *
4390 svn_client_cleanup(const char *dir,
4391  svn_client_ctx_t *ctx,
4392  apr_pool_t *scratch_pool);
4393 
4394 
4395 /** @} */
4396 
4397 /**
4398  * @defgroup Upgrade Upgrade a working copy.
4399  *
4400  * @{
4401  */
4402 
4403 /**
4404  * Recursively upgrade a working copy and nested externals working
4405  * copies from any older format to a WC metadata storage
4406  * format supported by Subversion @a target_format_version.
4407  *
4408  * If @a target_format_version is @c NULL, the default version is used.
4409  *
4410  * If the working copy already has a supported format newer than
4411  * @a target_format_version, the behavior is as follows:
4412  *
4413  * - If @a target_format_version is @c NULL, meaning the default version
4414  * should be used, the upgrade is no-op and the working copy is left
4415  * at its current format.
4416  *
4417  * - If @a target_format_version is not @c NULL, meaning that a specific
4418  * format version should be used, the upgrade results in an error.
4419  *
4420  * @a wcroot_dir is the path to the WC root.
4421  *
4422  * If @a result_format_version_p is not @c NULL, it will be set to the
4423  * resulting format version of the upgraded working copy, allocated from
4424  * @a result_pool. If this information is not required, @a result_pool
4425  * may be passed as @c NULL.
4426  *
4427  * @see svn_client_default_wc_version(),
4428  * svn_client_get_wc_formats_supported().
4429  *
4430  * Use @a scratch_pool for any temporary allocations.
4431  *
4432  * @since New in 1.15.
4433  */
4434 svn_error_t *
4435 svn_client_upgrade2(const svn_version_t **result_format_version_p,
4436  const char *wcroot_dir,
4437  const svn_version_t *target_format_version,
4438  svn_client_ctx_t *ctx,
4439  apr_pool_t *result_pool,
4440  apr_pool_t *scratch_pool);
4441 
4442 /**
4443  * Like svn_client_upgrade2(), but with @a result_format_version_p,
4444  * @a target_format_version and @a result_pool set to @c NULL.
4445  *
4446  * @since New in 1.7.
4447  * @deprecated Provided for backward compatibility with the 1.14 API.
4448  */
4450 svn_error_t *
4451 svn_client_upgrade(const char *wcroot_dir,
4452  svn_client_ctx_t *ctx,
4453  apr_pool_t *scratch_pool);
4454 
4455 /**
4456  * Returns the first version that supported the library's oldest
4457  * working copy metadata format.
4458  *
4459  * @since New in 1.15.
4460  */
4461 const svn_version_t *
4462 svn_client_oldest_wc_version(apr_pool_t *result_pool);
4463 
4464 /**
4465  * Set @a *version_p to the version of a working copy format that should
4466  * be used by default for @a ctx, according to its configuration.
4467  * Allocate the result in @a result_pool.
4468  *
4469  * @since New in 1.15.
4470  */
4471 svn_error_t *
4473  svn_client_ctx_t *ctx,
4474  apr_pool_t *result_pool,
4475  apr_pool_t *scratch_pool);
4476 
4477 /**
4478  * Returns the first version that supported the library's latest
4479  * working copy metadata format.
4480  *
4481  * @since New in 1.15.
4482  */
4483 const svn_version_t *
4484 svn_client_latest_wc_version(apr_pool_t *result_pool);
4485 
4486 /**
4487  * Returns a list of the WC formats supported by the client library.
4488  *
4489  * The list is sorted from oldest to newest, and terminated by a zero entry.
4490  *
4491  * The result is allocated in @a result_pool and/or statically.
4492  *
4493  * @since New in 1.15.
4494  */
4495 const int *
4496 svn_client_get_wc_formats_supported(apr_pool_t *result_pool);
4497 
4498 /** Return the version of the Subversion library that first supported
4499  * the given WC format, @a wc_format.
4500  *
4501  * @since New in 1.15.
4502  */
4503 const svn_version_t *
4505  apr_pool_t *result_pool);
4506 
4507 /** @} */
4508 
4509 /**
4510  * @defgroup Relocate Switch a working copy to a different repository.
4511  *
4512  * @{
4513  */
4514 
4515 /**
4516  * Recursively modify a working copy rooted at @a wcroot_dir, changing
4517  * any repository URLs that begin with @a from_prefix to begin with @a
4518  * to_prefix instead.
4519  *
4520  * @param wcroot_dir Working copy root directory
4521  * @param from_prefix Original URL
4522  * @param to_prefix New URL
4523  * @param ignore_externals If not set, recurse into external working
4524  * copies after relocating the primary working copy
4525  * @param ctx svn_client_ctx_t
4526  * @param pool The pool from which to perform memory allocations
4527  *
4528  * @since New in 1.7
4529  */
4530 svn_error_t *
4531 svn_client_relocate2(const char *wcroot_dir,
4532  const char *from_prefix,
4533  const char *to_prefix,
4534  svn_boolean_t ignore_externals,
4535  svn_client_ctx_t *ctx,
4536  apr_pool_t *pool);
4537 
4538 /**
4539  * Similar to svn_client_relocate2(), but with @a ignore_externals
4540  * always TRUE.
4541  *
4542  * @note As of the 1.7 API, @a dir is required to be a working copy
4543  * root directory, and @a recurse is required to be TRUE.
4544  *
4545  * @deprecated Provided for limited backwards compatibility with the
4546  * 1.6 API.
4547  */
4549 svn_error_t *
4550 svn_client_relocate(const char *dir,
4551  const char *from_prefix,
4552  const char *to_prefix,
4553  svn_boolean_t recurse,
4554  svn_client_ctx_t *ctx,
4555  apr_pool_t *pool);
4556 
4557 /** @} */
4558 
4559 /**
4560  * @defgroup Revert Remove local changes in a repository.
4561  *
4562  * @{
4563  */
4564 
4565 /**
4566  * Restore the pristine version of working copy @a paths,
4567  * effectively undoing any local mods. This means returning each
4568  * path's versioned status to 'unmodified' and changing its on-disk
4569  * state to match that.
4570  *
4571  * If an item was in a state of conflict, reverting also marks the
4572  * conflict as resolved. If there are conflict marker files attached
4573  * to the item, these are removed.
4574  *
4575  * @a paths is an array of (const char *) local WC paths.
4576  *
4577  * For each path in @a paths, revert it if it is a file. Else if it is
4578  * a directory, revert according to @a depth:
4579  * If @a depth is #svn_depth_empty, revert just
4580  * the directory; else if #svn_depth_files, revert the directory
4581  * and any files immediately under the directory; else if
4582  * #svn_depth_immediates, revert all of the preceding plus
4583  * immediate subdirectories; else if #svn_depth_infinity,
4584  * revert path and everything under it fully recursively.
4585  *
4586  * @a changelists is an array of <tt>const char *</tt> changelist
4587  * names, used as a restrictive filter on items reverted; that is,
4588  * don't revert any item unless it's a member of one of those
4589  * changelists. If @a changelists is empty (or altogether @c NULL),
4590  * no changelist filtering occurs.
4591  *
4592  * If @a clear_changelists is TRUE, then changelist information for the
4593  * paths is cleared while reverting.
4594  *
4595  * The @a metadata_only and @a added_keep_local options control the
4596  * extent of reverting. If @a metadata_only is TRUE, the working copy
4597  * files are untouched, but if there are conflict marker files attached
4598  * to these files these markers are removed. Otherwise, if
4599  * @a added_keep_local is TRUE, then all items are reverted except an
4600  * item that was scheduled as plain 'add' (not a copy) will not be
4601  * removed from the working copy. Otherwise, all items are reverted and
4602  * their on-disk state changed to match.
4603  *
4604  * Consult the @c SVN_CONFIG_OPTION_USE_COMMIT_TIMES option in @a ctx to
4605  * determine whether or not to revert timestamp to the time of last
4606  * commit ('use-commit-times = yes').
4607  *
4608  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
4609  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
4610  * the reverted item.
4611  *
4612  * If an item specified for reversion is not under version control,
4613  * then do not error, just invoke @a ctx->notify_func2 with @a
4614  * ctx->notify_baton2, using notification code #svn_wc_notify_skip.
4615  *
4616  * @warning The 'revert' command intentionally and permanently loses
4617  * local modifications.
4618  *
4619  * @since New in 1.11.
4620  */
4621 svn_error_t *
4622 svn_client_revert4(const apr_array_header_t *paths,
4623  svn_depth_t depth,
4624  const apr_array_header_t *changelists,
4625  svn_boolean_t clear_changelists,
4626  svn_boolean_t metadata_only,
4627  svn_boolean_t added_keep_local,
4628  svn_client_ctx_t *ctx,
4629  apr_pool_t *scratch_pool);
4630 
4631 /** Similar to svn_client_revert4(), but with @a added_keep_local set to
4632  * TRUE.
4633  *
4634  * @since New in 1.9.
4635  * @deprecated Provided for backwards compatibility with the 1.10 API.
4636  */
4638 svn_error_t *
4639 svn_client_revert3(const apr_array_header_t *paths,
4640  svn_depth_t depth,
4641  const apr_array_header_t *changelists,
4642  svn_boolean_t clear_changelists,
4643  svn_boolean_t metadata_only,
4644  svn_client_ctx_t *ctx,
4645  apr_pool_t *pool);
4646 
4647 /** Similar to svn_client_revert2, but with @a clear_changelists set to
4648  * FALSE and @a metadata_only set to FALSE.
4649  *
4650  * @since New in 1.5.
4651  * @deprecated Provided for backwards compatibility with the 1.8 API.
4652  */
4654 svn_error_t *
4655 svn_client_revert2(const apr_array_header_t *paths,
4656  svn_depth_t depth,
4657  const apr_array_header_t *changelists,
4658  svn_client_ctx_t *ctx,
4659  apr_pool_t *pool);
4660 
4661 
4662 /**
4663  * Similar to svn_client_revert2(), but with @a changelists passed as
4664  * @c NULL, and @a depth set according to @a recurse: if @a recurse is
4665  * TRUE, @a depth is #svn_depth_infinity, else if @a recurse is
4666  * FALSE, @a depth is #svn_depth_empty.
4667  *
4668  * @note Most APIs map @a recurse==FALSE to @a depth==svn_depth_files;
4669  * revert is deliberately different.
4670  *
4671  * @deprecated Provided for backwards compatibility with the 1.4 API.
4672  */
4674 svn_error_t *
4675 svn_client_revert(const apr_array_header_t *paths,
4676  svn_boolean_t recursive,
4677  svn_client_ctx_t *ctx,
4678  apr_pool_t *pool);
4679 
4680 
4681 /** @} */
4682 
4683 /**
4684  * @defgroup Conflicts Dealing with conflicted paths.
4685  *
4686  * @{
4687  */
4688 
4689 /**
4690  * An opaque type which represents a conflicted node in the working copy.
4691  *
4692  * @since New in 1.10.
4693  */
4695 
4696 /**
4697  * An opaque type which represents a resolution option for a conflict.
4698  *
4699  * @since New in 1.10.
4700  */
4702 
4703 /**
4704  * A public enumeration of conflict option IDs.
4705  *
4706  * @since New in 1.10, unless noted otherwise.
4707  */
4709 
4710  /* Options for text and property conflicts.
4711  * These values intentionally mirror svn_wc_conflict_choice_t. */
4712  svn_client_conflict_option_undefined = -1, /* for private use only */
4713  svn_client_conflict_option_postpone = 0,
4714  svn_client_conflict_option_base_text,
4715  svn_client_conflict_option_incoming_text, /* "theirs-full" */
4716  svn_client_conflict_option_working_text, /* "mine-full" */
4717  svn_client_conflict_option_incoming_text_where_conflicted,
4718  svn_client_conflict_option_working_text_where_conflicted,
4719  svn_client_conflict_option_merged_text,
4720  svn_client_conflict_option_unspecified,
4721  /* Values derived from svn_wc_conflict_choice_t end here. */
4722 
4723  /* Tree conflict resolution options start here. */
4724 
4725  /* Accept current working copy state. */
4726  svn_client_conflict_option_accept_current_wc_state,
4727 
4728  /* Options for local move vs incoming edit on update. */
4729  svn_client_conflict_option_update_move_destination,
4730 
4731  /* Options for local delete/replace vs incoming edit on update. */
4732  svn_client_conflict_option_update_any_moved_away_children,
4733 
4734  /* Options for incoming add vs local add or obstruction. */
4735  svn_client_conflict_option_incoming_add_ignore,
4736 
4737  /* Options for incoming file add vs local file add or obstruction. */
4738  svn_client_conflict_option_incoming_added_file_text_merge,
4739  svn_client_conflict_option_incoming_added_file_replace_and_merge,
4740 
4741  /* Options for incoming dir add vs local dir add or obstruction. */
4742  svn_client_conflict_option_incoming_added_dir_merge,
4743  svn_client_conflict_option_incoming_added_dir_replace,
4744  svn_client_conflict_option_incoming_added_dir_replace_and_merge,
4745 
4746  /* Options for incoming delete vs any */
4747  svn_client_conflict_option_incoming_delete_ignore,
4748  svn_client_conflict_option_incoming_delete_accept,
4749 
4750  /* Options for incoming move vs local edit */
4751  svn_client_conflict_option_incoming_move_file_text_merge,
4752  svn_client_conflict_option_incoming_move_dir_merge,
4753 
4754  /* Options for local move vs incoming edit on merge. */
4755  svn_client_conflict_option_local_move_file_text_merge,
4757 
4758  /* Options for local missing vs incoming edit on merge. */
4761 
4762  /* Options for local move vs incoming move on merge. */
4763  svn_client_conflict_option_both_moved_file_merge, /*< @since New in 1.12 */
4764  svn_client_conflict_option_both_moved_file_move_merge, /*< @since New in 1.12 */
4765  svn_client_conflict_option_both_moved_dir_merge, /*< @since New in 1.12 */
4766  svn_client_conflict_option_both_moved_dir_move_merge, /*< @since New in 1.12 */
4768 
4769 /**
4770  * Set a merged property value on @a option to @a merged_propval.
4771  *
4772  * Setting the merged value is required before resolving the property
4773  * conflict using an option with ID svn_client_conflict_option_merged_text.
4774  *
4775  * The contents of @a merged_propval are not copied, so the storage it
4776  * points to needs to remain valid until svn_client_conflict_prop_resolve()
4777  * has been called with @a option.
4778  *
4779  * @since New in 1.10.
4780  */
4781 void
4784  const svn_string_t *merged_propval);
4785 
4786 /**
4787  * Get a list of possible repository paths which can be applied to @a option.
4788  *
4789  * In some situations, there can be multiple possible destinations for a move.
4790  * One such situation is where a file was copied and moved in the same revision:
4791  * svn cp a b; svn mv a c; svn commit
4792  * When this move is merged elsewhere, both b and c will appear as valid move
4793  * destinations to the conflict resolver. To resolve such ambiguity, the client
4794  * may call this function to obtain a list of possible destinations the user
4795  * may choose from.
4796  *
4797  * @a *possible_moved_to_repos_relpaths is set to NULL if the @a option does
4798  * not support multiple move targets. API users may assume that only one option
4799  * among those which can be applied to a conflict supports move targets.
4800  *
4801  * The array is allocated in @a result_pool and will have "const char *"
4802  * elements pointing to strings also allocated in @a result_pool.
4803  * All paths are relpaths, and relative to the repository root.
4804  *
4805  * @see svn_client_conflict_option_set_moved_to_repos_relpath2()
4806  * @since New in 1.11.
4807  */
4808 svn_error_t *
4810  apr_array_header_t **possible_moved_to_repos_relpaths,
4812  apr_pool_t *result_pool,
4813  apr_pool_t *scratch_pool);
4814 
4815 /**
4816  * Get a list of possible repository paths which can be applied to the
4817  * svn_client_conflict_option_incoming_move_file_text_merge, or the
4818  * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
4819  *
4820  * In SVN 1.10, if a different option is passed in, this function will
4821  * raise an assertion failure. Otherwise this function behaves just like
4822  * svn_client_conflict_option_get_moved_to_repos_relpath_candidates2().
4823  *
4824  * @since New in 1.10.
4825  * @deprecated use svn_client_conflict_option_get_moved_to_repos_relpath_candidates2()
4826  */
4827 svn_error_t *
4829  apr_array_header_t **possible_moved_to_repos_relpaths,
4831  apr_pool_t *result_pool,
4832  apr_pool_t *scratch_pool);
4833 
4834 /**
4835  * Set the preferred moved target repository path. If @a option is not
4836  * applicable to a moved target repository path, do nothing.
4837  *
4838  * @a preferred_move_target_idx must be a valid index into the list returned
4839  * by svn_client_conflict_option_get_moved_to_repos_relpath_candidates().
4840  *
4841  * This function can be called multiple times.
4842  * It affects the output of svn_client_conflict_tree_get_description() and
4843  * svn_client_conflict_option_get_description(). Call these functions again
4844  * to get updated descriptions containing the newly selected move target.
4845  *
4846  * @since New in 1.11.
4847  */
4848 svn_error_t *
4851  int preferred_move_target_idx,
4852  svn_client_ctx_t *ctx,
4853  apr_pool_t *scratch_pool);
4854 
4855 /**
4856  * Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except
4857  * that in SVN 1.10 it raises an assertion failure if an option other
4858  * than svn_client_conflict_option_incoming_move_file_text_merge or
4859  * svn_client_conflict_option_incoming_move_dir_merge is passed.
4860  *
4861  * @since New in 1.10.
4862  * @deprecated use svn_client_conflict_option_set_moved_to_repos_relpath2()
4863  */
4864 svn_error_t *
4867  int preferred_move_target_idx,
4868  svn_client_ctx_t *ctx,
4869  apr_pool_t *scratch_pool);
4870 
4871 /**
4872  * Get a list of possible moved-to abspaths in the working copy which can be
4873  * applied to @a option.
4874  *
4875  * All working copy paths in the returned list correspond to one repository
4876  * path which is be one of the possible destinations of a move operation.
4877  * More than one repository-side move target candidate may exist; call
4878  * svn_client_conflict_option_get_moved_to_repos_relpath_candidates() before
4879  * calling this function to let the user select a repository path first.
4880  * Otherwise, one of the repository-side paths will be selected internally.
4881  *
4882  * @a *possible_moved_to_abspaths is set to NULL if the @a option does not
4883  * support multiple move targets. API users may assume that only one option
4884  * among those which can be applied to a conflict supports move targets.
4885  *
4886  * If no possible moved-to paths can be found, return an empty array.
4887  * This doesn't mean that no move happened in the repository. It is possible
4888  * that the move destination is outside the scope of the current working copy,
4889  * for example, in which case the conflict must be resolved in some other way.
4890  *
4891  * @see svn_client_conflict_option_set_moved_to_abspath2()
4892  * @since New in 1.11.
4893  */
4894 svn_error_t *
4896  apr_array_header_t **possible_moved_to_abspaths,
4898  apr_pool_t *result_pool,
4899  apr_pool_t *scratch_pool);
4900 
4901 /**
4902  * Get a list of possible moved-to abspaths in the working copy which can be
4903  * svn_client_conflict_option_incoming_move_file_text_merge, or the
4904  * svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
4905  *
4906  * In SVN 1.10, if a different option is passed in, this function will
4907  * raise an assertion failure. Otherwise this function behaves just like
4908  * svn_client_conflict_option_get_moved_to_abspath_candidates2().
4909  *
4910  * @since New in 1.10.
4911  * @deprecated use svn_client_conflict_option_get_moved_to_abspath_candidates2()
4912  */
4913 svn_error_t *
4915  apr_array_header_t **possible_moved_to_abspaths,
4917  apr_pool_t *result_pool,
4918  apr_pool_t *scratch_pool);
4919 
4920 /**
4921  * Set the preferred moved target working copy path. If @a option is not
4922  * applicable to a moved target working copy path, do nothing.
4923  *
4924  * @a preferred_move_target_idx must be a valid index into the list
4925  * returned by svn_client_conflict_option_get_moved_to_abspath_candidates2().
4926  *
4927  * This function can be called multiple times.
4928  * It affects the output of svn_client_conflict_tree_get_description() and
4929  * svn_client_conflict_option_get_description(). Call these functions again
4930  * to get updated descriptions containing the newly selected move target.
4931  *
4932  * @since New in 1.11.
4933  */
4934 svn_error_t *
4937  int preferred_move_target_idx,
4938  svn_client_ctx_t *ctx,
4939  apr_pool_t *scratch_pool);
4940 
4941 /**
4942  * Like svn_client_conflict_option_set_moved_to_abspath2(), except that
4943  * in SVN 1.10 this function raises an assertion failure if an option
4944  * other than svn_client_conflict_option_incoming_move_file_text_merge or
4945  * svn_client_conflict_option_incoming_move_dir_merge is passed.
4946  *
4947  * @since New in 1.10.
4948  * @deprecated use svn_client_conflict_option_set_moved_to_abspath2()
4949  */
4950 svn_error_t *
4953  int preferred_move_target_idx,
4954  svn_client_ctx_t *ctx,
4955  apr_pool_t *scratch_pool);
4956 
4957 /**
4958  * Given an @a option_id, try to find the corresponding option in @a options,
4959  * which is an array of svn_client_conflict_option_t * elements.
4960  *
4961  * Return NULL if no corresponding option can be be found.
4962  *
4963  * @since New in 1.10.
4964  */
4967  apr_array_header_t *options,
4969 
4970 /**
4971  * Return a conflict for the conflicted path @a local_abspath.
4972  *
4973  * @since New in 1.10.
4974  */
4975 svn_error_t *
4977  const char *local_abspath,
4978  svn_client_ctx_t *ctx,
4979  apr_pool_t *result_pool,
4980  apr_pool_t *scratch_pool);
4981 
4982 /**
4983  * Callback for svn_client_conflict_conflict_walk();
4984  *
4985  * The lifetime of @a conflict is limited. Its allocation in
4986  * memory will not persist beyond this callback's execution.
4987  *
4988  * @since New in 1.10.
4989  */
4990 typedef svn_error_t *(*svn_client_conflict_walk_func_t)(
4991  void *baton,
4992  svn_client_conflict_t *conflict,
4993  apr_pool_t *scratch_pool);
4994 
4995 /**
4996  * Walk all conflicts within the specified @a depth of @a local_abspath.
4997  * Pass each conflict found during the walk to the @a conflict_walk_func
4998  * callback, along with @a conflict_walk_func_baton.
4999  * Use cancellation and notification support provided by client context @a ctx.
5000  *
5001  * This callback may choose to resolve the conflict. If the act of resolving
5002  * a conflict creates new conflicts within the walked working copy (as might
5003  * be the case for some tree conflicts), the callback will be invoked for each
5004  * such new conflict as well.
5005  *
5006  * @since New in 1.10.
5007  */
5008 svn_error_t *
5009 svn_client_conflict_walk(const char *local_abspath,
5010  svn_depth_t depth,
5011  svn_client_conflict_walk_func_t conflict_walk_func,
5012  void *conflict_walk_func_baton,
5013  svn_client_ctx_t *ctx,
5014  apr_pool_t *scratch_pool);
5015 
5016 /**
5017 * Indicate the types of conflicts present on the working copy node
5018 * described by @a conflict. Any output argument may be @c NULL if
5019 * the caller is not interested in the status of a particular type.
5020 *
5021 * The returned @a *props_conflicted array is allocated in @a result_pool.
5022 * It contains the names of conflicted properties. If no property conflict
5023 * exists, the array will contain no elements.
5024 *
5025 * @since New in 1.10.
5026 */
5027 svn_error_t *
5029  apr_array_header_t **props_conflicted,
5030  svn_boolean_t *tree_conflicted,
5031  svn_client_conflict_t *conflict,
5032  apr_pool_t *result_pool,
5033  apr_pool_t *scratch_pool);
5034 
5035 /**
5036  * Return a textual human-readable description of the property conflict
5037  * described by @a conflict, allocated in @a result_pool. The description
5038  * is encoded in UTF-8 and may contain multiple lines separated by
5039  * @c APR_EOL_STR. The last line is not terminated by a newline.
5040  *
5041  * Additionally, the description may be localized to the language used
5042  * by the current locale.
5043  *
5044  * @since New in 1.10.
5045  */
5046 svn_error_t *
5048  svn_client_conflict_t *conflict,
5049  apr_pool_t *result_pool,
5050  apr_pool_t *scratch_pool);
5051 
5052 /**
5053  * Return a textual human-readable description of the tree conflict
5054  * described by @a conflict, allocated in @a result_pool. The description
5055  * is encoded in UTF-8 and may contain multiple lines separated by
5056  * @c APR_EOL_STR. The last line is not terminated by a newline.
5057  *
5058  * Additionally, the description may be localized to the language used
5059  * by the current locale.
5060  *
5061  * While client implementors are free to enhance descriptions by adding
5062  * additional information to the text, or break up very long lines for
5063  * formatting purposes, there is no syntax defined for descriptions, and
5064  * implementors should not rely on any particular parts of descriptions
5065  * to remain stable over time, apart from what is stated below.
5066  * Descriptions may or may not form complete sentences. They may contain
5067  * paths relative to the repository root; such paths always start with "^/",
5068  * and end with either a peg revision (e.g. "@100") or a colon followed by
5069  * a range of revisions (as in svn:mergeinfo, e.g. ":100-200").
5070  * Paths may appear on a line of their own to avoid overlong lines.
5071  * Any revision numbers mentioned elsewhere in the description are
5072  * prefixed with the letter 'r' (e.g. "r99").
5073  *
5074  * The description has two parts: One part describes the "incoming change"
5075  * applied by an update, merge, or switch operation. The other part
5076  * describes the "local change" which occurred in the working copy or
5077  * perhaps in the history of a merge target branch.
5078  * Both parts are provided independently to allow for some flexibility
5079  * when displaying the description. As a convention, displaying the
5080  * "incoming change" first and the "local change" second is recommended.
5081  *
5082  * By default, the description is based only on information available in
5083  * the working copy. If svn_client_conflict_tree_get_details() was already
5084  * called for @a conflict, the description might also contain useful
5085  * information obtained from the repository and provide for a much better
5086  * user experience.
5087  *
5088  * @since New in 1.10.
5089  */
5090 svn_error_t *
5092  const char **incoming_change_description,
5093  const char **local_change_description,
5094  svn_client_conflict_t *conflict,
5095  svn_client_ctx_t *ctx,
5096  apr_pool_t *result_pool,
5097  apr_pool_t *scratch_pool);
5098 
5099 /**
5100  * Set @a *options to an array of pointers to svn_client_conflict_option_t
5101  * objects applicable to text conflicts described by @a conflict.
5102  *
5103  * @since New in 1.10.
5104  */
5105 svn_error_t *
5107  svn_client_conflict_t *conflict,
5108  svn_client_ctx_t *ctx,
5109  apr_pool_t *result_pool,
5110  apr_pool_t *scratch_pool);
5111 
5112 /**
5113  * Set @a *options to an array of pointers to svn_client_conflict_option_t
5114  * objects applicable to property conflicts described by @a conflict.
5115  *
5116  * @since New in 1.10.
5117  */
5118 svn_error_t *
5120  svn_client_conflict_t *conflict,
5121  svn_client_ctx_t *ctx,
5122  apr_pool_t *result_pool,
5123  apr_pool_t *scratch_pool);
5124 
5125 /**
5126  * Set @a *options to an array of pointers to svn_client_conflict_option_t
5127  * objects applicable to the tree conflict described by @a conflict.
5128  *
5129  * By default, the list of options is based only on information available in
5130  * the working copy. If svn_client_conflict_tree_get_details() was already
5131  * called for @a conflict, a more useful list of options might be returned.
5132  *
5133  * @since New in 1.10.
5134  */
5135 svn_error_t *
5137  svn_client_conflict_t *conflict,
5138  svn_client_ctx_t *ctx,
5139  apr_pool_t *result_pool,
5140  apr_pool_t *scratch_pool);
5141 
5142 /**
5143  * Find more information about the tree conflict represented by @a conflict.
5144  *
5145  * A call to svn_client_conflict_tree_get_description() may yield much better
5146  * results after this function has been called.
5147  *
5148  * A call to svn_client_conflict_tree_get_resolution_options() may provide
5149  * more useful resolution options if this function has been called.
5150  *
5151  * This function may contact the repository. Use the authentication baton
5152  * cached in @a ctx for authentication if contacting the repository.
5153  *
5154  * @since New in 1.10.
5155  */
5156 svn_error_t *
5158  svn_client_ctx_t *ctx,
5159  apr_pool_t *scratch_pool);
5160 
5161 /**
5162  * Return an ID for @a option. This ID can be used by callers to associate
5163  * arbitrary data with a particular conflict resolution option.
5164  *
5165  * The ID of a particular resolution option will never change in future
5166  * revisions of this API.
5167  *
5168  * @since New in 1.10.
5169  */
5172 
5173 /**
5174  * Return a textual human-readable label of @a option, allocated in
5175  * @a result_pool. The label is encoded in UTF-8 and usually
5176  * contains up to three words.
5177  *
5178  * Additionally, the label may be localized to the language used
5179  * by the current locale.
5180  *
5181  * @since New in 1.10.
5182  */
5183 const char *
5185  apr_pool_t *result_pool);
5186 
5187 /**
5188  * Return a textual human-readable description of @a option, allocated in
5189  * @a result_pool. The description is encoded in UTF-8 and may contain
5190  * multiple lines separated by @c APR_EOL_STR.
5191  *
5192  * Additionally, the description may be localized to the language used
5193  * by the current locale.
5194  *
5195  * @since New in 1.10.
5196  */
5197 const char *
5199  apr_pool_t *result_pool);
5200 
5201 /**
5202  * Return the ID of the recommended resolution option. If no specific option
5203  * is recommended, return @c svn_client_conflict_option_unspecified;
5204  *
5205  * Client implementations which aim to avoid excessive interactive prompting
5206  * may wish to try a recommended resolution option before falling back to
5207  * asking the user which option to use.
5208  *
5209  * Conflict resolution with a recommended option is not guaranteed to succeed.
5210  * Clients should check for errors when trying to resolve a conflict and fall
5211  * back to other options and/or interactive prompting when the recommended
5212  * option fails to resolve a conflict.
5213  *
5214  * If @a conflict is a tree conflict, svn_client_conflict_tree_get_details()
5215  * should be called before this function to allow for useful recommendations.
5216  *
5217  * @since New in 1.10.
5218  */
5221 
5222 /**
5223  * Return the absolute path to the conflicted working copy node described
5224  * by @a conflict.
5225  *
5226  * @since New in 1.10.
5227  */
5228 const char *
5230 
5231 /**
5232  * Return the operation during which the conflict described by @a
5233  * conflict was recorded.
5234  *
5235  * @since New in 1.10.
5236  */
5239 
5240 /**
5241  * Return the action an update, switch, or merge operation attempted to
5242  * perform on the working copy node described by @a conflict.
5243  *
5244  * @since New in 1.10.
5245  */
5248 
5249 /**
5250  * Return the reason why the attempted action performed by an update, switch,
5251  * or merge operation conflicted with the state of the node in the working copy.
5252  *
5253  * During update and switch operations this local change is part of uncommitted
5254  * modifications in the working copy. During merge operations it may
5255  * additionally be part of the history of the merge target branch, anywhere
5256  * between the common ancestor revision and the working copy revision.
5257  *
5258  * @since New in 1.10.
5259  */
5262 
5263 /**
5264  * Return information about the repository associated with @a conflict.
5265  * In case of a foreign-repository merge this will differ from the
5266  * repository information associated with the merge target working copy.
5267  *
5268  * @since New in 1.10.
5269  */
5270 svn_error_t *
5271 svn_client_conflict_get_repos_info(const char **repos_root_url,
5272  const char **repos_uuid,
5273  svn_client_conflict_t *conflict,
5274  apr_pool_t *result_pool,
5275  apr_pool_t *scratch_pool);
5276 
5277 /**
5278  * Return the repository-relative location and the node kind of the incoming
5279  * old version of the conflicted node described by @a conflict.
5280  *
5281  * If the repository-relative path is not available, the @a
5282  * *incoming_old_repos_relpath will be set to @c NULL,
5283  *
5284  * If the peg revision is not available, @a *incoming_old_regrev will be
5285  * set to SVN_INVALID_REVNUM.
5286  *
5287  * If the node kind is not available or if the node does not exist at the
5288  * specified path and revision, @a *incoming_old_node_kind will be set to
5289  * svn_node_none.
5290  * ### Should return svn_node_unkown if not available?
5291  *
5292  * Any output parameter may be set to @c NULL by the caller to indicate that
5293  * a particular piece of information should not be returned.
5294  *
5295  * In case of tree conflicts, this "path@revision" does not necessarily exist
5296  * in the repository, and it does not necessarily represent the incoming
5297  * change which is responsible for the occurrence of the tree conflict.
5298  * The responsible incoming change is generally located somewhere between
5299  * the old and new incoming versions.
5300  *
5301  * @since New in 1.10.
5302  */
5303 svn_error_t *
5305  const char **incoming_old_repos_relpath,
5306  svn_revnum_t *incoming_old_regrev,
5307  svn_node_kind_t *incoming_old_node_kind,
5308  svn_client_conflict_t *conflict,
5309  apr_pool_t *result_pool,
5310  apr_pool_t *scratch_pool);
5311 
5312 /**
5313  * Like svn_client_conflict_get_incoming_old_repos_location(), expect this
5314  * function returns the same data for the incoming new version.
5315  *
5316  * The same note about tree conflicts applies.
5317  *
5318  * @since New in 1.10.
5319  */
5320 svn_error_t *
5322  const char **incoming_new_repos_relpath,
5323  svn_revnum_t *incoming_new_regrev,
5324  svn_node_kind_t *incoming_new_node_kind,
5325  svn_client_conflict_t *conflict,
5326  apr_pool_t *result_pool,
5327  apr_pool_t *scratch_pool);
5328 
5329 /**
5330  * Return the node kind of the tree conflict victim described by @a conflict.
5331  * The victim is the local node in the working copy which was affected by the
5332  * tree conflict at the time the conflict was raised.
5333  *
5334  * @since New in 1.10.
5335  */
5338 
5339 /**
5340  * Resolve a tree @a conflict using resolution option @a option.
5341  *
5342  * May raise an error in case the tree conflict cannot be resolved yet, for
5343  * instance @c SVN_ERR_WC_OBSTRUCTED_UPDATE, @c SVN_ERR_WC_FOUND_CONFLICT,
5344  * or @c SVN_ERR_WC_CONFLICT_RESOLVER_FAILUE.
5345  * This may happen when other tree conflicts, or unversioned obstructions,
5346  * block the resolution of this tree conflict. In such a case the other
5347  * conflicts should be resolved first and resolution of this conflict should
5348  * be attempted again later.
5349  *
5350  * @since New in 1.10.
5351  */
5352 svn_error_t *
5355  svn_client_ctx_t *ctx,
5356  apr_pool_t *scratch_pool);
5357 
5358 /**
5359  * Like svn_client_conflict_tree_resolve(), except that it identifies
5360  * the desired resolution option by ID @a option_id.
5361  *
5362  * If the provided @a option_id is the ID of an option which resolves
5363  * @a conflict, try to resolve the tree conflict using that option.
5364  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5365  *
5366  * @since New in 1.10.
5367  */
5368 svn_error_t *
5370  svn_client_conflict_t *conflict,
5372  svn_client_ctx_t *ctx,
5373  apr_pool_t *scratch_pool);
5374 
5375 /**
5376  * Return the ID of the option this tree @a conflict has been resolved to.
5377  * If the conflict has not been resolved yet, then return
5378  * @c svn_client_conflict_option_unspecified.
5379  *
5380  * @since New in 1.10.
5381  */
5384 
5385 /**
5386  * Return the path to the legacy property conflicts reject file
5387  * for the property conflicts represented by @a conflict.
5388  *
5389  * This function exists for backwards compatibility only and should not be
5390  * used in new code.
5391  *
5392  * @since New in 1.10.
5393  */
5394 const char *
5396 
5397 /**
5398  * Return the set of property values involved in the conflict of property
5399  * PROPNAME described by @a conflict. If a property value is unavailable the
5400  * corresponding output argument is set to @c NULL.
5401  *
5402  * A 3-way diff of these property values can be generated with
5403  * svn_diff_mem_string_diff3(). A merged version with conflict
5404  * markers can be generated with svn_diff_mem_string_output_merge3().
5405  *
5406  * @since New in 1.10.
5407  */
5408 svn_error_t *
5410  const svn_string_t **working_propval,
5411  const svn_string_t **incoming_old_propval,
5412  const svn_string_t **incoming_new_propval,
5413  svn_client_conflict_t *conflict,
5414  const char *propname,
5415  apr_pool_t *result_pool);
5416 
5417 /**
5418  * Resolve a property @a conflict in property @a propname using resolution
5419  * option @a option. To resolve all properties to the same option at once,
5420  * set @a propname to the empty string "".
5421  *
5422  * @since New in 1.10.
5423  */
5424 svn_error_t *
5426  const char *propname,
5428  svn_client_ctx_t *ctx,
5429  apr_pool_t *scratch_pool);
5430 /**
5431  * If the provided @a option_id is the ID of an option which resolves
5432  * @a conflict, resolve the property conflict in property @a propname
5433  * using that option.
5434  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5435  *
5436  * @since New in 1.10.
5437  */
5438 svn_error_t *
5440  svn_client_conflict_t *conflict,
5441  const char *propname,
5443  svn_client_ctx_t *ctx,
5444  apr_pool_t *scratch_pool);
5445 
5446 /**
5447  * Return the ID of the option this property @a conflict in property
5448  * @a propname has been resolved to.
5449  * If the conflict has not been resolved yet, then return
5450  * @c svn_client_conflict_option_unspecified.
5451  *
5452  * @since New in 1.10.
5453  */
5456  const char *propname);
5457 
5458 /**
5459  * Return the MIME-type of the working version of the text-conflicted file
5460  * described by @a conflict.
5461  *
5462  * ### Really needed? What about base/incoming_old/incoming_new values?
5463  * @since: New in 1.10.
5464  */
5465 const char *
5467 
5468 /**
5469  * Return absolute paths to the versions of the text-conflicted file
5470  * described by @a conflict.
5471  *
5472  * If a particular content is not available, it is set to @c NULL.
5473  *
5474  * ### Should this be returning svn_stream_t instead of paths?
5475  * @since: New in 1.10.
5476  */
5477 svn_error_t *
5478 svn_client_conflict_text_get_contents(const char **base_abspath,
5479  const char **working_abspath,
5480  const char **incoming_old_abspath,
5481  const char **incoming_new_abspath,
5482  svn_client_conflict_t *conflict,
5483  apr_pool_t *result_pool,
5484  apr_pool_t *scratch_pool);
5485 
5486 /**
5487  * Resolve a text @a conflict using resolution option @a option.
5488  *
5489  * @since New in 1.10.
5490  */
5491 svn_error_t *
5494  svn_client_ctx_t *ctx,
5495  apr_pool_t *scratch_pool);
5496 
5497 /**
5498  * If the provided @a option_id is the ID of an option which resolves
5499  * @a conflict, resolve the text conflict using that option.
5500  * Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
5501  *
5502  * @since New in 1.10.
5503  */
5504 svn_error_t *
5506  svn_client_conflict_t *conflict,
5508  svn_client_ctx_t *ctx,
5509  apr_pool_t *scratch_pool);
5510 
5511 /**
5512  * Return the ID of the option this text @a conflict has been resolved to.
5513  * If the conflict has not been resolved yet, then return
5514  * @c svn_client_conflict_option_unspecified.
5515  *
5516  * @since New in 1.10.
5517  */
5520 
5521 /** @} */
5522 
5523 /**
5524  * @defgroup Resolved Mark conflicted paths as resolved.
5525  *
5526  * @{
5527  */
5528 
5529 /**
5530  * Similar to svn_client_resolve(), but without automatic conflict
5531  * resolution support.
5532  *
5533  * @deprecated Provided for backward compatibility with the 1.4 API.
5534  * Use svn_client_resolve() with @a conflict_choice == @c
5535  * svn_wc_conflict_choose_merged instead.
5536  */
5538 svn_error_t *
5539 svn_client_resolved(const char *path,
5540  svn_boolean_t recursive,
5541  svn_client_ctx_t *ctx,
5542  apr_pool_t *pool);
5543 
5544 /** Perform automatic conflict resolution on a working copy @a path.
5545  *
5546  * If @a conflict_choice is
5547  *
5548  * - #svn_wc_conflict_choose_base:
5549  * resolve the conflict with the old file contents
5550  *
5551  * - #svn_wc_conflict_choose_mine_full:
5552  * use the original working contents
5553  *
5554  * - #svn_wc_conflict_choose_theirs_full:
5555  * use the new contents
5556  *
5557  * - #svn_wc_conflict_choose_merged:
5558  * don't change the contents at all, just remove the conflict
5559  * status, which is the pre-1.5 behavior.
5560  *
5561  * - #svn_wc_conflict_choose_theirs_conflict
5562  * ###...
5563  *
5564  * - #svn_wc_conflict_choose_mine_conflict
5565  * ###...
5566  *
5567  * - svn_wc_conflict_choose_unspecified
5568  * invoke @a ctx->conflict_func2 with @a ctx->conflict_baton2 to obtain
5569  * a resolution decision for each conflict. This can be used to
5570  * implement interactive conflict resolution but is NOT RECOMMENDED for
5571  * new code. To perform conflict resolution based on interactive user
5572  * input on a per-conflict basis, use svn_client_conflict_text_resolve(),
5573  * svn_client_conflict_prop_resolve(), and
5574  * svn_client_conflict_tree_resolve() instead of svn_client_resolve().
5575  *
5576  * #svn_wc_conflict_choose_theirs_conflict and
5577  * #svn_wc_conflict_choose_mine_conflict are not legal for binary
5578  * files or properties.
5579  *
5580  * If @a path is not in a state of conflict to begin with, do nothing.
5581  * If @a path's conflict state is removed and @a ctx->notify_func2 is non-NULL,
5582  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and @a path.
5583  * ### with what notification parameters?
5584  *
5585  * If @a depth is #svn_depth_empty, act only on @a path; if
5586  * #svn_depth_files, resolve @a path and its conflicted file
5587  * children (if any); if #svn_depth_immediates, resolve @a path and
5588  * all its immediate conflicted children (both files and directories,
5589  * if any); if #svn_depth_infinity, resolve @a path and every
5590  * conflicted file or directory anywhere beneath it.
5591  *
5592  * Note that this operation will try to lock the parent directory of
5593  * @a path in order to be able to resolve tree-conflicts on @a path.
5594  *
5595  * @since New in 1.5.
5596  */
5597 svn_error_t *
5598 svn_client_resolve(const char *path,
5599  svn_depth_t depth,
5600  svn_wc_conflict_choice_t conflict_choice,
5601  svn_client_ctx_t *ctx,
5602  apr_pool_t *pool);
5603 
5604 
5605 /** @} */
5606 
5607 /**
5608  * @defgroup Copy Copy paths in the working copy and repository.
5609  *
5610  * @{
5611  */
5612 
5613 /**
5614  * A structure which describes the source of a copy operation--its path,
5615  * revision, and peg revision.
5616  *
5617  * @since New in 1.5.
5618  */
5620 {
5621  /** The source path or URL. */
5622  const char *path;
5623 
5624  /** The source operational revision. */
5626 
5627  /** The source peg revision. */
5630 
5631 /** Copy each source in @a sources to @a dst_path.
5632  *
5633  * If multiple @a sources are given, @a dst_path must be a directory,
5634  * and @a sources will be copied as children of @a dst_path.
5635  *
5636  * @a sources is an array of <tt>svn_client_copy_source_t *</tt> elements,
5637  * either all referring to local WC items or all referring to versioned
5638  * items in the repository.
5639  *
5640  * If @a sources has only one item, attempt to copy it to @a dst_path. If
5641  * @a copy_as_child is TRUE and @a dst_path already exists, attempt to copy the
5642  * item as a child of @a dst_path. If @a copy_as_child is FALSE and
5643  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
5644  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
5645  * URL.
5646  *
5647  * If @a sources has multiple items, and @a copy_as_child is TRUE, all
5648  * @a sources are copied as children of @a dst_path. If any child of
5649  * @a dst_path already exists with the same name any item in @a sources,
5650  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
5651  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
5652  *
5653  * If @a sources has multiple items, and @a copy_as_child is FALSE, fail
5654  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
5655  *
5656  * If @a dst_path is a URL, use the authentication baton
5657  * in @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to immediately
5658  * attempt to commit the copy action in the repository.
5659  *
5660  * If @a dst_path is not a URL, then this is just a variant of
5661  * svn_client_add(), where the @a sources are scheduled for addition
5662  * as copies. No changes will happen to the repository until a commit occurs.
5663  * This scheduling can be removed with svn_client_revert2().
5664  *
5665  * If @a make_parents is TRUE, create any non-existent parent directories
5666  * also. Otherwise the parent of @a dst_path must already exist.
5667  *
5668  * If @a ignore_externals is set, don't process externals definitions
5669  * as part of this operation.
5670  *
5671  * If @a metadata_only is @c TRUE and copying a file in a working copy,
5672  * everything in the metadata is updated as if the node is moved, but the
5673  * actual disk copy operation is not performed. This feature is useful for
5674  * clients that want to keep the working copy in sync while the actual working
5675  * copy is updated by some other task.
5676  *
5677  * If @a pin_externals is set, pin URLs in copied externals definitions
5678  * to their current revision unless they were already pinned to a
5679  * particular revision. A pinned external uses a URL which points at a
5680  * fixed revision, rather than the HEAD revision. Externals in the copy
5681  * destination are pinned to either a working copy base revision or the
5682  * HEAD revision of a repository (as of the time the copy operation is
5683  * performed), depending on the type of the copy source:
5684  <pre>
5685  copy source: working copy (WC) REPOS
5686  ------------+------------------------+---------------------------+
5687  copy WC | external's WC BASE rev | external's repos HEAD rev |
5688  dest: |------------------------+---------------------------+
5689  REPOS | external's WC BASE rev | external's repos HEAD rev |
5690  ------------+------------------------+---------------------------+
5691  </pre>
5692  * If the copy source is a working copy, then all externals must be checked
5693  * out, be at a single-revision, contain no local modifications, and contain
5694  * no switched subtrees. Else, #SVN_ERR_WC_PATH_UNEXPECTED_STATUS is returned.
5695  *
5696  * If non-NULL, @a externals_to_pin restricts pinning to a subset of externals.
5697  * It is a hash table keyed by either a local absolute path or a URL at which
5698  * an svn:externals property is set. The hash table contains apr_array_header_t*
5699  * elements as returned by svn_wc_parse_externals_description3(). These arrays
5700  * contain elements of type svn_wc_external_item2_t*, each of which corresponds
5701  * to a single line of an svn:externals definition. Externals corresponding to
5702  * these items will be pinned, other externals will not be pinned.
5703  * If @a externals_to_pin is @c NULL then all externals are pinned.
5704  * If @a pin_externals is @c FALSE then @a externals_to_pin is ignored.
5705  *
5706  * If non-NULL, @a revprop_table is a hash table holding additional,
5707  * custom revision properties (<tt>const char *</tt> names mapped to
5708  * <tt>svn_string_t *</tt> values) to be set on the new revision in
5709  * the event that this is a committing operation. This table cannot
5710  * contain any standard Subversion properties.
5711  *
5712  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo
5713  * that this function can use to query for a commit log message when one is
5714  * needed.
5715  *
5716  * If @a ctx->notify_func2 is non-NULL, invoke it with @a ctx->notify_baton2
5717  * for each item added at the new location, passing the new, relative path of
5718  * the added item.
5719  *
5720  * If @a commit_callback is non-NULL, then for each successful commit, call
5721  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
5722  * the commit.
5723  *
5724  * @since New in 1.9.
5725  */
5726 svn_error_t *
5727 svn_client_copy7(const apr_array_header_t *sources,
5728  const char *dst_path,
5729  svn_boolean_t copy_as_child,
5730  svn_boolean_t make_parents,
5731  svn_boolean_t ignore_externals,
5732  svn_boolean_t metadata_only,
5733  svn_boolean_t pin_externals,
5734  const apr_hash_t *externals_to_pin,
5735  const apr_hash_t *revprop_table,
5736  svn_commit_callback2_t commit_callback,
5737  void *commit_baton,
5738  svn_client_ctx_t *ctx,
5739  apr_pool_t *pool);
5740 
5741 /**
5742  * Similar to svn_client_copy7(), but doesn't support meta_data_only
5743  * and cannot pin externals.
5744  *
5745  *
5746  * @since New in 1.7.
5747  * @deprecated Provided for backward compatibility with the 1.8 API.
5748  */
5750 svn_error_t *
5751 svn_client_copy6(const apr_array_header_t *sources,
5752  const char *dst_path,
5753  svn_boolean_t copy_as_child,
5754  svn_boolean_t make_parents,
5755  svn_boolean_t ignore_externals,
5756  const apr_hash_t *revprop_table,
5757  svn_commit_callback2_t commit_callback,
5758  void *commit_baton,
5759  svn_client_ctx_t *ctx,
5760  apr_pool_t *pool);
5761 
5762 /**
5763  * Similar to svn_client_copy6(), but returns the commit info in
5764  * @a *commit_info_p rather than through a callback function.
5765  *
5766  * @since New in 1.6.
5767  * @deprecated Provided for backward compatibility with the 1.6 API.
5768  */
5770 svn_error_t *
5772  const apr_array_header_t *sources,
5773  const char *dst_path,
5774  svn_boolean_t copy_as_child,
5775  svn_boolean_t make_parents,
5776  svn_boolean_t ignore_externals,
5777  const apr_hash_t *revprop_table,
5778  svn_client_ctx_t *ctx,
5779  apr_pool_t *pool);
5780 
5781 /**
5782  * Similar to svn_client_copy5(), with @a ignore_externals set to @c FALSE.
5783  *
5784  * @since New in 1.5.
5785  *
5786  * @deprecated Provided for backward compatibility with the 1.5 API.
5787  */
5789 svn_error_t *
5791  const apr_array_header_t *sources,
5792  const char *dst_path,
5793  svn_boolean_t copy_as_child,
5794  svn_boolean_t make_parents,
5795  const apr_hash_t *revprop_table,
5796  svn_client_ctx_t *ctx,
5797  apr_pool_t *pool);
5798 
5799 /**
5800  * Similar to svn_client_copy4(), with only one @a src_path, @a
5801  * copy_as_child set to @c FALSE, @a revprop_table passed as NULL, and
5802  * @a make_parents set to @c FALSE. Also, use @a src_revision as both
5803  * the operational and peg revision.
5804  *
5805  * @since New in 1.4.
5806  *
5807  * @deprecated Provided for backward compatibility with the 1.4 API.
5808  */
5810 svn_error_t *
5812  const char *src_path,
5813  const svn_opt_revision_t *src_revision,
5814  const char *dst_path,
5815  svn_client_ctx_t *ctx,
5816  apr_pool_t *pool);
5817 
5818 
5819 /**
5820  * Similar to svn_client_copy3(), with the difference that if @a dst_path
5821  * already exists and is a directory, copy the item into that directory,
5822  * keeping its name (the last component of @a src_path).
5823  *
5824  * @since New in 1.3.
5825  *
5826  * @deprecated Provided for backward compatibility with the 1.3 API.
5827  */
5829 svn_error_t *
5831  const char *src_path,
5832  const svn_opt_revision_t *src_revision,
5833  const char *dst_path,
5834  svn_client_ctx_t *ctx,
5835  apr_pool_t *pool);
5836 
5837 
5838 /**
5839  * Similar to svn_client_copy2(), but uses #svn_client_commit_info_t
5840  * for @a commit_info_p.
5841  *
5842  * @deprecated Provided for backward compatibility with the 1.2 API.
5843  */
5845 svn_error_t *
5847  const char *src_path,
5848  const svn_opt_revision_t *src_revision,
5849  const char *dst_path,
5850  svn_client_ctx_t *ctx,
5851  apr_pool_t *pool);
5852 
5853 
5854 /** @} */
5855 
5856 /**
5857  * @defgroup Move Move paths in the working copy or repository.
5858  *
5859  * @{
5860  */
5861 
5862 /**
5863  * Move @a src_paths to @a dst_path.
5864  *
5865  * @a src_paths is an array of (const char *) paths -- either all WC paths
5866  * or all URLs -- of versioned items. If multiple @a src_paths are given,
5867  * @a dst_path must be a directory and @a src_paths will be moved as
5868  * children of @a dst_path.
5869  *
5870  * If @a src_paths are repository URLs:
5871  *
5872  * - @a dst_path must also be a repository URL.
5873  *
5874  * - The authentication baton in @a ctx and @a ctx->log_msg_func/@a
5875  * ctx->log_msg_baton are used to commit the move.
5876  *
5877  * - The move operation will be immediately committed.
5878  *
5879  * If @a src_paths are working copy paths:
5880  *
5881  * - @a dst_path must also be a working copy path.
5882  *
5883  * - @a ctx->log_msg_func3 and @a ctx->log_msg_baton3 are ignored.
5884  *
5885  * - This is a scheduling operation. No changes will happen to the
5886  * repository until a commit occurs. This scheduling can be removed
5887  * with svn_client_revert2(). If one of @a src_paths is a file it is
5888  * removed from the working copy immediately. If one of @a src_path
5889  * is a directory it will remain in the working copy but all the files,
5890  * and unversioned items, it contains will be removed.
5891  *
5892  * If @a src_paths has only one item, attempt to move it to @a dst_path. If
5893  * @a move_as_child is TRUE and @a dst_path already exists, attempt to move the
5894  * item as a child of @a dst_path. If @a move_as_child is FALSE and
5895  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
5896  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
5897  * URL.
5898  *
5899  * If @a src_paths has multiple items, and @a move_as_child is TRUE, all
5900  * @a src_paths are moved as children of @a dst_path. If any child of
5901  * @a dst_path already exists with the same name any item in @a src_paths,
5902  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
5903  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
5904  *
5905  * If @a src_paths has multiple items, and @a move_as_child is FALSE, fail
5906  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
5907  *
5908  * If @a make_parents is TRUE, create any non-existent parent directories
5909  * also. Otherwise, the parent of @a dst_path must already exist.
5910  *
5911  * If @a allow_mixed_revisions is @c FALSE, #SVN_ERR_WC_MIXED_REVISIONS
5912  * will be raised if the move source is a mixed-revision subtree.
5913  * If @a allow_mixed_revisions is TRUE, a mixed-revision move source is
5914  * allowed but the move will degrade to a copy and a delete without local
5915  * move tracking. This parameter should be set to FALSE except where backwards
5916  * compatibility to svn_client_move6() is required.
5917  *
5918  * If @a metadata_only is @c TRUE and moving a file in a working copy,
5919  * everything in the metadata is updated as if the node is moved, but the
5920  * actual disk move operation is not performed. This feature is useful for
5921  * clients that want to keep the working copy in sync while the actual working
5922  * copy is updated by some other task.
5923  *
5924  * If non-NULL, @a revprop_table is a hash table holding additional,
5925  * custom revision properties (<tt>const char *</tt> names mapped to
5926  * <tt>svn_string_t *</tt> values) to be set on the new revision in
5927  * the event that this is a committing operation. This table cannot
5928  * contain any standard Subversion properties.
5929  *
5930  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo that
5931  * this function can use to query for a commit log message when one is needed.
5932  *
5933  * If @a ctx->notify_func2 is non-NULL, then for each item moved, call
5934  * @a ctx->notify_func2 with the @a ctx->notify_baton2 twice, once to indicate
5935  * the deletion of the moved thing, and once to indicate the addition of
5936  * the new location of the thing.
5937  *
5938  * ### Is this really true? What about svn_wc_notify_commit_replaced()? ###
5939  *
5940  * If @a commit_callback is non-NULL, then for each successful commit, call
5941  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
5942  * the commit.
5943  *
5944  * @since New in 1.8.
5945  */
5946 svn_error_t *
5947 svn_client_move7(const apr_array_header_t *src_paths,
5948  const char *dst_path,
5949  svn_boolean_t move_as_child,
5950  svn_boolean_t make_parents,
5951  svn_boolean_t allow_mixed_revisions,
5952  svn_boolean_t metadata_only,
5953  const apr_hash_t *revprop_table,
5954  svn_commit_callback2_t commit_callback,
5955  void *commit_baton,
5956  svn_client_ctx_t *ctx,
5957  apr_pool_t *pool);
5958 
5959 /**
5960  * Similar to svn_client_move7(), but with @a allow_mixed_revisions always
5961  * set to @c TRUE and @a metadata_only always to @c FALSE.
5962  *
5963  * @since New in 1.7.
5964  * @deprecated Provided for backward compatibility with the 1.7 API.
5965  */
5967 svn_error_t *
5968 svn_client_move6(const apr_array_header_t *src_paths,
5969  const char *dst_path,
5970  svn_boolean_t move_as_child,
5971  svn_boolean_t make_parents,
5972  const apr_hash_t *revprop_table,
5973  svn_commit_callback2_t commit_callback,
5974  void *commit_baton,
5975  svn_client_ctx_t *ctx,
5976  apr_pool_t *pool);
5977 
5978 /**
5979  * Similar to svn_client_move6(), but returns the commit info in
5980  * @a *commit_info_p rather than through a callback function.
5981  *
5982  * A WC-to-WC move will include any modified and/or unversioned children.
5983  * @a force is ignored.
5984  *
5985  * @since New in 1.5.
5986  * @deprecated Provided for backward compatibility with the 1.6 API.
5987  */
5989 svn_error_t *
5991  const apr_array_header_t *src_paths,
5992  const char *dst_path,
5993  svn_boolean_t force,
5994  svn_boolean_t move_as_child,
5995  svn_boolean_t make_parents,
5996  const apr_hash_t *revprop_table,
5997  svn_client_ctx_t *ctx,
5998  apr_pool_t *pool);
5999 
6000 /**
6001  * Similar to svn_client_move5(), with only one @a src_path, @a
6002  * move_as_child set to @c FALSE, @a revprop_table passed as NULL, and
6003  * @a make_parents set to @c FALSE.
6004  *
6005  * Note: The behaviour of @a force changed in 1.5 (r860885 and r861421), when
6006  * the 'move' semantics were improved to just move the source including any
6007  * modified and/or unversioned items in it. Before that, @a force
6008  * controlled what happened to such items, but now @a force is ignored.
6009  *
6010  * @since New in 1.4.
6011  *
6012  * @deprecated Provided for backward compatibility with the 1.4 API.
6013  */
6015 svn_error_t *
6017  const char *src_path,
6018  const char *dst_path,
6019  svn_boolean_t force,
6020  svn_client_ctx_t *ctx,
6021  apr_pool_t *pool);
6022 
6023 /**
6024  * Similar to svn_client_move4(), with the difference that if @a dst_path
6025  * already exists and is a directory, move the item into that directory,
6026  * keeping its name (the last component of @a src_path).
6027  *
6028  * @since New in 1.3.
6029  *
6030  * @deprecated Provided for backward compatibility with the 1.3 API.
6031  */
6033 svn_error_t *
6035  const char *src_path,
6036  const char *dst_path,
6037  svn_boolean_t force,
6038  svn_client_ctx_t *ctx,
6039  apr_pool_t *pool);
6040 
6041 /**
6042  * Similar to svn_client_move3(), but uses #svn_client_commit_info_t
6043  * for @a commit_info_p.
6044  *
6045  * @deprecated Provided for backward compatibility with the 1.2 API.
6046  *
6047  * @since New in 1.2.
6048  */
6050 svn_error_t *
6052  const char *src_path,
6053  const char *dst_path,
6054  svn_boolean_t force,
6055  svn_client_ctx_t *ctx,
6056  apr_pool_t *pool);
6057 
6058 /**
6059  * Similar to svn_client_move2(), but an extra argument @a src_revision
6060  * must be passed. This has no effect, but must be of kind
6061  * #svn_opt_revision_unspecified or #svn_opt_revision_head,
6062  * otherwise error #SVN_ERR_UNSUPPORTED_FEATURE is returned.
6063  *
6064  * @deprecated Provided for backward compatibility with the 1.1 API.
6065  */
6067 svn_error_t *
6069  const char *src_path,
6070  const svn_opt_revision_t *src_revision,
6071  const char *dst_path,
6072  svn_boolean_t force,
6073  svn_client_ctx_t *ctx,
6074  apr_pool_t *pool);
6075 
6076 /** @} */
6077 
6078 ␌
6079 /** Properties
6080  *
6081  * Note that certain svn-controlled properties must always have their
6082  * values set and stored in UTF8 with LF line endings. When
6083  * retrieving these properties, callers must convert the values back
6084  * to native locale and native line-endings before displaying them to
6085  * the user. For help with this task, see
6086  * svn_prop_needs_translation(), svn_subst_translate_string(), and
6087  * svn_subst_detranslate_string().
6088  *
6089  * @defgroup svn_client_prop_funcs Property functions
6090  * @{
6091  */
6092 
6093 
6094 /**
6095  * Set @a propname to @a propval on @a url. A @a propval of @c NULL will
6096  * delete the property.
6097  *
6098  * Immediately attempt to commit the property change in the repository,
6099  * using the authentication baton in @a ctx and @a
6100  * ctx->log_msg_func3/@a ctx->log_msg_baton3.
6101  *
6102  * If the property has changed on @a url since revision
6103  * @a base_revision_for_url (which must not be #SVN_INVALID_REVNUM), no
6104  * change will be made and an error will be returned.
6105  *
6106  * If non-NULL, @a revprop_table is a hash table holding additional,
6107  * custom revision properties (<tt>const char *</tt> names mapped to
6108  * <tt>svn_string_t *</tt> values) to be set on the new revision. This
6109  * table cannot contain any standard Subversion properties.
6110  *
6111  * If @a commit_callback is non-NULL, then call @a commit_callback with
6112  * @a commit_baton and a #svn_commit_info_t for the commit.
6113  *
6114  * If @a propname is an svn-controlled property (i.e. prefixed with
6115  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
6116  * the value is UTF8-encoded and uses LF line-endings.
6117  *
6118  * If @a skip_checks is TRUE, do no validity checking. But if @a
6119  * skip_checks is FALSE, and @a propname is not a valid property for @a
6120  * url, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the property is
6121  * not appropriate for @a url), or * #SVN_ERR_BAD_MIME_TYPE (if @a propname
6122  * is "svn:mime-type", but @a propval is not a valid mime-type).
6123  *
6124  * Use @a scratch_pool for all memory allocation.
6125  *
6126  * @since New in 1.7.
6127  */
6128 svn_error_t *
6129 svn_client_propset_remote(const char *propname,
6130  const svn_string_t *propval,
6131  const char *url,
6132  svn_boolean_t skip_checks,
6133  svn_revnum_t base_revision_for_url,
6134  const apr_hash_t *revprop_table,
6135  svn_commit_callback2_t commit_callback,
6136  void *commit_baton,
6137  svn_client_ctx_t *ctx,
6138  apr_pool_t *scratch_pool);
6139 
6140 /**
6141  * Set @a propname to @a propval on each (const char *) target in @a
6142  * targets. The targets must be all working copy paths. A @a propval
6143  * of @c NULL will delete the property.
6144  *
6145  * If @a depth is #svn_depth_empty, set the property on each member of
6146  * @a targets only; if #svn_depth_files, set it on @a targets and their
6147  * file children (if any); if #svn_depth_immediates, on @a targets and all
6148  * of their immediate children (both files and directories); if
6149  * #svn_depth_infinity, on @a targets and everything beneath them.
6150  *
6151  * @a changelists is an array of <tt>const char *</tt> changelist
6152  * names, used as a restrictive filter on items whose properties are
6153  * set; that is, don't set properties on any item unless it's a member
6154  * of one of those changelists. If @a changelists is empty (or
6155  * altogether @c NULL), no changelist filtering occurs.
6156  *
6157  * If @a propname is an svn-controlled property (i.e. prefixed with
6158  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
6159  * the value is UTF8-encoded and uses LF line-endings.
6160  *
6161  * If @a skip_checks is TRUE, do no validity checking. But if @a
6162  * skip_checks is FALSE, and @a propname is not a valid property for @a
6163  * targets, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the
6164  * property is not appropriate for @a targets), or
6165  * #SVN_ERR_BAD_MIME_TYPE (if @a propname is "svn:mime-type", but @a
6166  * propval is not a valid mime-type).
6167  *
6168  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
6169  * ctx->cancel_baton at various places during the operation.
6170  *
6171  * Use @a scratch_pool for all memory allocation.
6172  *
6173  * @since New in 1.7.
6174  */
6175 svn_error_t *
6176 svn_client_propset_local(const char *propname,
6177  const svn_string_t *propval,
6178  const apr_array_header_t *targets,
6179  svn_depth_t depth,
6180  svn_boolean_t skip_checks,
6181  const apr_array_header_t *changelists,
6182  svn_client_ctx_t *ctx,
6183  apr_pool_t *scratch_pool);
6184 
6185 /**
6186  * An amalgamation of svn_client_propset_local() and
6187  * svn_client_propset_remote() that takes only a single target, and
6188  * returns the commit info in @a *commit_info_p rather than through a
6189  * callback function.
6190  *
6191  * @since New in 1.5.
6192  * @deprecated Provided for backward compatibility with the 1.6 API.
6193  */
6195 svn_error_t *
6197  const char *propname,
6198  const svn_string_t *propval,
6199  const char *target,
6200  svn_depth_t depth,
6201  svn_boolean_t skip_checks,
6202  svn_revnum_t base_revision_for_url,
6203  const apr_array_header_t *changelists,
6204  const apr_hash_t *revprop_table,
6205  svn_client_ctx_t *ctx,
6206  apr_pool_t *pool);
6207 
6208 /**
6209  * Like svn_client_propset3(), but with @a base_revision_for_url
6210  * always #SVN_INVALID_REVNUM; @a commit_info_p always @c NULL; @a
6211  * changelists always @c NULL; @a revprop_table always @c NULL; and @a
6212  * depth set according to @a recurse: if @a recurse is TRUE, @a depth
6213  * is #svn_depth_infinity, else #svn_depth_empty.
6214  *
6215  * @deprecated Provided for backward compatibility with the 1.4 API.
6216  */
6218 svn_error_t *
6219 svn_client_propset2(const char *propname,
6220  const svn_string_t *propval,
6221  const char *target,
6222  svn_boolean_t recurse,
6223  svn_boolean_t skip_checks,
6224  svn_client_ctx_t *ctx,
6225  apr_pool_t *pool);
6226 
6227 /**
6228  * Like svn_client_propset2(), but with @a skip_checks always FALSE and a
6229  * newly created @a ctx.
6230  *
6231  * @deprecated Provided for backward compatibility with the 1.1 API.
6232  */
6234 svn_error_t *
6235 svn_client_propset(const char *propname,
6236  const svn_string_t *propval,
6237  const char *target,
6238  svn_boolean_t recurse,
6239  apr_pool_t *pool);
6240 
6241 /** Set @a propname to @a propval on revision @a revision in the repository
6242  * represented by @a URL. Use the authentication baton in @a ctx for
6243  * authentication, and @a pool for all memory allocation. Return the actual
6244  * rev affected in @a *set_rev. A @a propval of @c NULL will delete the
6245  * property.
6246  *
6247  * If @a original_propval is non-NULL, then just before setting the
6248  * new value, check that the old value matches @a original_propval;
6249  * if they do not match, return the error #SVN_ERR_RA_OUT_OF_DATE.
6250  * This is to help clients support interactive editing of revprops:
6251  * without this check, the window during which the property may change
6252  * underneath the user is as wide as the amount of time the user
6253  * spends editing the property. With this check, the window is
6254  * reduced to a small, constant amount of time right before we set the
6255  * new value. (To check that an old value is still non-existent, set
6256  * @a original_propval->data to NULL, and @a original_propval->len is
6257  * ignored.)
6258  * If the server advertises #SVN_RA_CAPABILITY_ATOMIC_REVPROPS, the
6259  * check of @a original_propval is done atomically.
6260  *
6261  * Note: the representation of "property is not set" in @a
6262  * original_propval differs from the representation in other APIs
6263  * (such as svn_fs_change_rev_prop2() and svn_ra_change_rev_prop2()).
6264  *
6265  * If @a force is TRUE, allow newlines in the author property.
6266  *
6267  * If @a propname is an svn-controlled property (i.e. prefixed with
6268  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
6269  * the value UTF8-encoded and uses LF line-endings.
6270  *
6271  * Note that unlike its cousin svn_client_propset3(), this routine
6272  * doesn't affect the working copy at all; it's a pure network
6273  * operation that changes an *unversioned* property attached to a
6274  * revision. This can be used to tweak log messages, dates, authors,
6275  * and the like. Be careful: it's a lossy operation.
6276 
6277  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
6278  * functions and baton which are called upon successful setting of the
6279  * property.
6280  *
6281  * Also note that unless the administrator creates a
6282  * pre-revprop-change hook in the repository, this feature will fail.
6283  *
6284  * @since New in 1.6.
6285  */
6286 svn_error_t *
6287 svn_client_revprop_set2(const char *propname,
6288  const svn_string_t *propval,
6289  const svn_string_t *original_propval,
6290  const char *URL,
6291  const svn_opt_revision_t *revision,
6292  svn_revnum_t *set_rev,
6293  svn_boolean_t force,
6294  svn_client_ctx_t *ctx,
6295  apr_pool_t *pool);
6296 
6297 /**
6298  * Similar to svn_client_revprop_set2(), but with @a original_propval
6299  * always @c NULL.
6300  *
6301  * @deprecated Provided for backward compatibility with the 1.5 API.
6302  */
6304 svn_error_t *
6305 svn_client_revprop_set(const char *propname,
6306  const svn_string_t *propval,
6307  const char *URL,
6308  const svn_opt_revision_t *revision,
6309  svn_revnum_t *set_rev,
6310  svn_boolean_t force,
6311  svn_client_ctx_t *ctx,
6312  apr_pool_t *pool);
6313 
6314 /**
6315  * Set @a *props to a hash table whose keys are absolute paths or URLs
6316  * of items on which property @a propname is explicitly set, and whose
6317  * values are <tt>svn_string_t *</tt> representing the property value for
6318  * @a propname at that path.
6319  *
6320  * If @a inherited_props is not @c NULL, then set @a *inherited_props to a
6321  * depth-first ordered array of #svn_prop_inherited_item_t * structures
6322  * representing the properties inherited by @a target. If @a target is a
6323  * working copy path, then properties inherited by @a target as far as the
6324  * root of the working copy are obtained from the working copy's actual
6325  * property values. Properties inherited from above the working copy root
6326  * come from the inherited properties cache. If @a target is a URL, then
6327  * the inherited properties come from the repository. If @a inherited_props
6328  * is not @c NULL and no inheritable properties are found, then set
6329  * @a *inherited_props to an empty array.
6330  *
6331  * The #svn_prop_inherited_item_t->path_or_url members of the
6332  * #svn_prop_inherited_item_t * structures in @a *inherited_props are
6333  * URLs if @a target is a URL or if @a target is a working copy path but the
6334  * property represented by the structure is above the working copy root (i.e.
6335  * the inherited property is from the cache). In all other cases the
6336  * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
6337  * paths.
6338  *
6339  * Allocate @a *props (including keys and values) and @a *inherited_props
6340  * (including its elements) in @a result_pool, use @a scratch_pool for
6341  * temporary allocations.
6342  *
6343  * @a target is a WC absolute path or a URL.
6344  *
6345  * Don't store any path, not even @a target, if it does not have a
6346  * property named @a propname.
6347  *
6348  * If @a revision->kind is #svn_opt_revision_unspecified, then: get
6349  * properties from the working copy if @a target is a working copy
6350  * path, or from the repository head if @a target is a URL. Else get
6351  * the properties as of @a revision. The actual node revision
6352  * selected is determined by the path as it exists in @a peg_revision.
6353  * If @a peg_revision->kind is #svn_opt_revision_unspecified, then
6354  * it defaults to #svn_opt_revision_head for URLs or
6355  * #svn_opt_revision_working for WC targets. Use the authentication
6356  * baton in @a ctx for authentication if contacting the repository.
6357  * If @a actual_revnum is not @c NULL, the actual revision number used
6358  * for the fetch is stored in @a *actual_revnum.
6359  *
6360  * If @a depth is #svn_depth_empty, fetch the property from
6361  * @a target only; if #svn_depth_files, fetch from @a target and its
6362  * file children (if any); if #svn_depth_immediates, from @a target
6363  * and all of its immediate children (both files and directories); if
6364  * #svn_depth_infinity, from @a target and everything beneath it.
6365  *
6366  * @a changelists is an array of <tt>const char *</tt> changelist
6367  * names, used as a restrictive filter on items whose properties are
6368  * gotten; that is, don't get @a propname on any item unless it's a member
6369  * of one of those changelists. If @a changelists is empty (or
6370  * altogether @c NULL), no changelist filtering occurs.
6371  *
6372  * If error, don't touch @a *props, otherwise @a *props is a hash table
6373  * even if empty.
6374  *
6375  * This function returns SVN_ERR_UNVERSIONED_RESOURCE when it is called on
6376  * unversioned nodes.
6377  *
6378  * @since New in 1.8.
6379  */
6380 svn_error_t *
6381 svn_client_propget5(apr_hash_t **props,
6382  apr_array_header_t **inherited_props,
6383  const char *propname,
6384  const char *target, /* abspath or URL */
6385  const svn_opt_revision_t *peg_revision,
6386  const svn_opt_revision_t *revision,
6387  svn_revnum_t *actual_revnum,
6388  svn_depth_t depth,
6389  const apr_array_header_t *changelists,
6390  svn_client_ctx_t *ctx,
6391  apr_pool_t *result_pool,
6392  apr_pool_t *scratch_pool);
6393 
6394 /**
6395  * Similar to svn_client_propget5 but with @a inherited_props always
6396  * passed as NULL.
6397  *
6398  * @since New in 1.7.
6399  * @deprecated Provided for backward compatibility with the 1.7 API.
6400  */
6402 svn_error_t *
6403 svn_client_propget4(apr_hash_t **props,
6404  const char *propname,
6405  const char *target, /* abspath or URL */
6406  const svn_opt_revision_t *peg_revision,
6407  const svn_opt_revision_t *revision,
6408  svn_revnum_t *actual_revnum,
6409  svn_depth_t depth,
6410  const apr_array_header_t *changelists,
6411  svn_client_ctx_t *ctx,
6412  apr_pool_t *result_pool,
6413  apr_pool_t *scratch_pool);
6414 
6415 /**
6416  * Similar to svn_client_propget4(), but with the following change to the
6417  * output hash keys: keys are `<tt>char *</tt>' paths, prefixed by
6418  * @a target, which is a working copy path or a URL.
6419  *
6420  * This function returns SVN_ERR_ENTRY_NOT_FOUND where svn_client_propget4
6421  * would return SVN_ERR_UNVERSIONED_RESOURCE.
6422  *
6423  * @since New in 1.5.
6424  * @deprecated Provided for backward compatibility with the 1.6 API.
6425  */
6427 svn_error_t *
6428 svn_client_propget3(apr_hash_t **props,
6429  const char *propname,
6430  const char *target,
6431  const svn_opt_revision_t *peg_revision,
6432  const svn_opt_revision_t *revision,
6433  svn_revnum_t *actual_revnum,
6434  svn_depth_t depth,
6435  const apr_array_header_t *changelists,
6436  svn_client_ctx_t *ctx,
6437  apr_pool_t *pool);
6438 
6439 /**
6440  * Similar to svn_client_propget3(), except that @a actual_revnum and
6441  * @a changelists are always @c NULL, and @a depth is set according to
6442  * @a recurse: if @a recurse is TRUE, then @a depth is
6443  * #svn_depth_infinity, else #svn_depth_empty.
6444  *
6445  * @deprecated Provided for backward compatibility with the 1.4 API.
6446  */
6448 svn_error_t *
6449 svn_client_propget2(apr_hash_t **props,
6450  const char *propname,
6451  const char *target,
6452  const svn_opt_revision_t *peg_revision,
6453  const svn_opt_revision_t *revision,
6454  svn_boolean_t recurse,
6455  svn_client_ctx_t *ctx,
6456  apr_pool_t *pool);
6457 
6458 /**
6459  * Similar to svn_client_propget2(), except that @a peg_revision is
6460  * always the same as @a revision.
6461  *
6462  * @deprecated Provided for backward compatibility with the 1.1 API.
6463  */
6465 svn_error_t *
6466 svn_client_propget(apr_hash_t **props,
6467  const char *propname,
6468  const char *target,
6469  const svn_opt_revision_t *revision,
6470  svn_boolean_t recurse,
6471  svn_client_ctx_t *ctx,
6472  apr_pool_t *pool);
6473 
6474 /** Set @a *propval to the value of @a propname on revision @a revision
6475  * in the repository represented by @a URL. Use the authentication baton
6476  * in @a ctx for authentication, and @a pool for all memory allocation.
6477  * Return the actual rev queried in @a *set_rev.
6478  *
6479  * If @a propname does not exist on @a revision, set @a *propval to @c NULL.
6480  *
6481  * Note that unlike its cousin svn_client_propget(), this routine
6482  * doesn't affect the working copy at all; it's a pure network
6483  * operation that queries an *unversioned* property attached to a
6484  * revision. This can query log messages, dates, authors, and the
6485  * like.
6486  */
6487 svn_error_t *
6488 svn_client_revprop_get(const char *propname,
6489  svn_string_t **propval,
6490  const char *URL,
6491  const svn_opt_revision_t *revision,
6492  svn_revnum_t *set_rev,
6493  svn_client_ctx_t *ctx,
6494  apr_pool_t *pool);
6495 
6496 /**
6497  * Invoke @a receiver with @a receiver_baton to return the regular explicit, and
6498  * possibly the inherited, properties of @a target, a URL or working copy path.
6499  * @a receiver will be called for each path encountered.
6500  *
6501  * @a target is a WC path or a URL.
6502  *
6503  * If @a revision->kind is #svn_opt_revision_unspecified, then get the
6504  * explicit (and possibly the inherited) properties from the working copy,
6505  * if @a target is a working copy path, or from the repository head if
6506  * @a target is a URL. Else get the properties as of @a revision.
6507  * The actual node revision selected is determined by the path as it exists
6508  * in @a peg_revision. If @a peg_revision->kind is
6509  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
6510  * for URLs or #svn_opt_revision_working for WC targets. Use the
6511  * authentication baton cached in @a ctx for authentication if contacting
6512  * the repository.
6513  *
6514  * If @a depth is #svn_depth_empty, list only the properties of
6515  * @a target itself. If @a depth is #svn_depth_files, and
6516  * @a target is a directory, list the properties of @a target
6517  * and its file entries. If #svn_depth_immediates, list the properties
6518  * of its immediate file and directory entries. If #svn_depth_infinity,
6519  * list the properties of its file entries and recurse (with
6520  * #svn_depth_infinity) on directory entries. #svn_depth_unknown is
6521  * equivalent to #svn_depth_empty. All other values produce undefined
6522  * results.
6523  *
6524  * @a changelists is an array of <tt>const char *</tt> changelist
6525  * names, used as a restrictive filter on items whose properties are
6526  * listed; that is, don't list properties on any item unless it's a member
6527  * of one of those changelists. If @a changelists is empty (or
6528  * altogether @c NULL), no changelist filtering occurs.
6529  *
6530  * If @a get_target_inherited_props is true, then also return any inherited
6531  * properties when @a receiver is called for @a target. If @a target is a
6532  * working copy path, then properties inherited by @a target as far as the
6533  * root of the working copy are obtained from the working copy's actual
6534  * property values. Properties inherited from above the working copy
6535  * root come from the inherited properties cache. If @a target is a URL,
6536  * then the inherited properties come from the repository.
6537  * If @a get_target_inherited_props is false, then no inherited properties
6538  * are returned to @a receiver.
6539  *
6540  * If @a target is not found, return the error #SVN_ERR_ENTRY_NOT_FOUND.
6541  *
6542  * @since New in 1.8.
6543  */
6544 svn_error_t *
6545 svn_client_proplist4(const char *target,
6546  const svn_opt_revision_t *peg_revision,
6547  const svn_opt_revision_t *revision,
6548  svn_depth_t depth,
6549  const apr_array_header_t *changelists,
6550  svn_boolean_t get_target_inherited_props,
6551  svn_proplist_receiver2_t receiver,
6552  void *receiver_baton,
6553  svn_client_ctx_t *ctx,
6554  apr_pool_t *scratch_pool);
6555 
6556 /**
6557  * Similar to svn_client_proplist4(), except that the @a receiver type
6558  * is a #svn_proplist_receiver_t, @a get_target_inherited_props is
6559  * always passed NULL, and there is no separate scratch pool.
6560  *
6561  * @since New in 1.5.
6562  * @deprecated Provided for backward compatibility with the 1.7 API.
6563  */
6565 svn_error_t *
6566 svn_client_proplist3(const char *target,
6567  const svn_opt_revision_t *peg_revision,
6568  const svn_opt_revision_t *revision,
6569  svn_depth_t depth,
6570  const apr_array_header_t *changelists,
6571  svn_proplist_receiver_t receiver,
6572  void *receiver_baton,
6573  svn_client_ctx_t *ctx,
6574  apr_pool_t *pool);
6575 
6576 /**
6577  * Similar to svn_client_proplist3(), except the properties are
6578  * returned as an array of #svn_client_proplist_item_t * structures
6579  * instead of by invoking the receiver function, there's no support
6580  * for @a changelists filtering, and @a recurse is used instead of a
6581  * #svn_depth_t parameter (FALSE corresponds to #svn_depth_empty,
6582  * and TRUE to #svn_depth_infinity).
6583  *
6584  * @since New in 1.2.
6585  *
6586  * @deprecated Provided for backward compatibility with the 1.4 API.
6587  */
6589 svn_error_t *
6590 svn_client_proplist2(apr_array_header_t **props,
6591  const char *target,
6592  const svn_opt_revision_t *peg_revision,
6593  const svn_opt_revision_t *revision,
6594  svn_boolean_t recurse,
6595  svn_client_ctx_t *ctx,
6596  apr_pool_t *pool);
6597 
6598 /**
6599  * Similar to svn_client_proplist2(), except that @a peg_revision is
6600  * always the same as @a revision.
6601  *
6602  * @deprecated Provided for backward compatibility with the 1.1 API.
6603  */
6605 svn_error_t *
6606 svn_client_proplist(apr_array_header_t **props,
6607  const char *target,
6608  const svn_opt_revision_t *revision,
6609  svn_boolean_t recurse,
6610  svn_client_ctx_t *ctx,
6611  apr_pool_t *pool);
6612 
6613 /** Set @a *props to a hash of the revision props attached to @a revision in
6614  * the repository represented by @a URL. Use the authentication baton cached
6615  * in @a ctx for authentication, and @a pool for all memory allocation.
6616  * Return the actual rev queried in @a *set_rev.
6617  *
6618  * The allocated hash maps (<tt>const char *</tt>) property names to
6619  * (#svn_string_t *) property values.
6620  *
6621  * Note that unlike its cousin svn_client_proplist(), this routine
6622  * doesn't read a working copy at all; it's a pure network operation
6623  * that reads *unversioned* properties attached to a revision.
6624  */
6625 svn_error_t *
6626 svn_client_revprop_list(apr_hash_t **props,
6627  const char *URL,
6628  const svn_opt_revision_t *revision,
6629  svn_revnum_t *set_rev,
6630  svn_client_ctx_t *ctx,
6631  apr_pool_t *pool);
6632 /** @} */
6633 ␌
6634 
6635 /**
6636  * @defgroup Export Export a tree from version control.
6637  *
6638  * @{
6639  */
6640 
6641 /**
6642  * Export the contents of either a subversion repository or a
6643  * subversion working copy into a 'clean' directory (meaning a
6644  * directory with no administrative directories). If @a result_rev
6645  * is not @c NULL and the path being exported is a repository URL, set
6646  * @a *result_rev to the value of the revision actually exported (set
6647  * it to #SVN_INVALID_REVNUM for local exports).
6648  *
6649  * @a from_path_or_url is either the path the working copy on disk, or
6650  * a URL to the repository you wish to export.
6651  *
6652  * When exporting a directory, @a to_path is the path to the directory
6653  * where you wish to create the exported tree; when exporting a file, it
6654  * is the path of the file that will be created. If @a to_path is the
6655  * empty path, then the basename of the export file/directory in the repository
6656  * will be used. If @a to_path represents an existing directory, and a
6657  * file is being exported, then a file with the that basename will be
6658  * created under that directory (as with 'copy' operations).
6659  *
6660  * @a peg_revision is the revision where the path is first looked up
6661  * when exporting from a repository. If @a peg_revision->kind is
6662  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
6663  * for URLs or #svn_opt_revision_working for WC targets.
6664  *
6665  * @a revision is the revision that should be exported.
6666  *
6667  * @a peg_revision and @a revision must not be @c NULL.
6668  *
6669  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
6670  * functions and baton which are passed to svn_client_checkout() when
6671  * exporting from a repository.
6672  *
6673  * @a ctx is a context used for authentication in the repository case.
6674  *
6675  * @a overwrite if TRUE will cause the export to overwrite files or
6676  * directories.
6677  *
6678  * If @a ignore_externals is set, don't process externals definitions
6679  * as part of this operation.
6680  *
6681  * If @a ignore_keywords is set, don't expand keywords as part of this
6682  * operation.
6683  *
6684  * @a native_eol allows you to override the standard eol marker on the
6685  * platform you are running on. Can be either "LF", "CR" or "CRLF" or
6686  * NULL. If NULL will use the standard eol marker. Any other value
6687  * will cause the #SVN_ERR_IO_UNKNOWN_EOL error to be returned.
6688  *
6689  * If @a depth is #svn_depth_infinity, export fully recursively. Else
6690  * if it is #svn_depth_immediates, export @a from_path_or_url and its
6691  * immediate children (if any), but with subdirectories empty and at
6692  * #svn_depth_empty. Else if #svn_depth_files, export @a
6693  * from_path_or_url and its immediate file children (if any) only. If
6694  * @a depth is #svn_depth_empty, then export exactly @a
6695  * from_path_or_url and none of its children.
6696  *
6697  * All allocations are done in @a pool.
6698  *
6699  * @since New in 1.7.
6700  */
6701 svn_error_t *
6703  const char *from_path_or_url,
6704  const char *to_path,
6705  const svn_opt_revision_t *peg_revision,
6706  const svn_opt_revision_t *revision,
6707  svn_boolean_t overwrite,
6708  svn_boolean_t ignore_externals,
6709  svn_boolean_t ignore_keywords,
6710  svn_depth_t depth,
6711  const char *native_eol,
6712  svn_client_ctx_t *ctx,
6713  apr_pool_t *pool);
6714 
6715 /**
6716  * Similar to svn_client_export5(), but with @a ignore_keywords set
6717  * to FALSE.
6718  *
6719  * @deprecated Provided for backward compatibility with the 1.6 API.
6720  * @since New in 1.5.
6721  */
6723 svn_error_t *
6725  const char *from_path_or_url,
6726  const char *to_path,
6727  const svn_opt_revision_t *peg_revision,
6728  const svn_opt_revision_t *revision,
6729  svn_boolean_t overwrite,
6730  svn_boolean_t ignore_externals,
6731  svn_depth_t depth,
6732  const char *native_eol,
6733  svn_client_ctx_t *ctx,
6734  apr_pool_t *pool);
6735 
6736 
6737 /**
6738  * Similar to svn_client_export4(), but with @a depth set according to
6739  * @a recurse: if @a recurse is TRUE, set @a depth to
6740  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
6741  * #svn_depth_files.
6742  *
6743  * @deprecated Provided for backward compatibility with the 1.4 API.
6744  *
6745  * @since New in 1.2.
6746  */
6748 svn_error_t *
6750  const char *from_path_or_url,
6751  const char *to_path,
6752  const svn_opt_revision_t *peg_revision,
6753  const svn_opt_revision_t *revision,
6754  svn_boolean_t overwrite,
6755  svn_boolean_t ignore_externals,
6756  svn_boolean_t recurse,
6757  const char *native_eol,
6758  svn_client_ctx_t *ctx,
6759  apr_pool_t *pool);
6760 
6761 
6762 /**
6763  * Similar to svn_client_export3(), but with @a peg_revision
6764  * always set to #svn_opt_revision_unspecified, @a overwrite set to
6765  * the value of @a force, @a ignore_externals always FALSE, and
6766  * @a recurse always TRUE.
6767  *
6768  * @since New in 1.1.
6769  * @deprecated Provided for backward compatibility with the 1.1 API.
6770  */
6772 svn_error_t *
6774  const char *from_path_or_url,
6775  const char *to_path,
6776  svn_opt_revision_t *revision,
6777  svn_boolean_t force,
6778  const char *native_eol,
6779  svn_client_ctx_t *ctx,
6780  apr_pool_t *pool);
6781 
6782 
6783 /**
6784  * Similar to svn_client_export2(), but with @a native_eol always set
6785  * to NULL.
6786  *
6787  * @deprecated Provided for backward compatibility with the 1.0 API.
6788  */
6790 svn_error_t *
6792  const char *from_path_or_url,
6793  const char *to_path,
6794  svn_opt_revision_t *revision,
6795  svn_boolean_t force,
6796  svn_client_ctx_t *ctx,
6797  apr_pool_t *pool);
6798 
6799 /** @} */
6800 
6801 /**
6802  * @defgroup List List / ls
6803  *
6804  * @{
6805  */
6806 
6807 /** The type of function invoked by svn_client_list3() to report the details
6808  * of each directory entry being listed.
6809  *
6810  * @a baton is the baton that was passed to the caller. @a path is the
6811  * entry's path relative to @a abs_path; it is the empty path when reporting
6812  * the top node of the list operation. @a dirent contains some or all of
6813  * the directory entry's details, as determined by the caller. @a lock is
6814  * the entry's lock, if it is locked and if lock information is being
6815  * reported by the caller; otherwise @a lock is NULL. @a abs_path is the
6816  * repository path of the top node of the list operation; it is relative to
6817  * the repository root and begins with "/".
6818  *
6819  * If svn_client_list3() was called with @a include_externals set to TRUE,
6820  * @a external_parent_url and @a external_target will be set.
6821  * @a external_parent_url is url of the directory which has the
6822  * externals definitions. @a external_target is the target subdirectory of
6823  * externals definitions which is relative to the parent directory that holds
6824  * the external item.
6825  *
6826  * If external_parent_url and external_target are defined, the item being
6827  * listed is part of the external described by external_parent_url and
6828  * external_target. Else, the item is not part of any external.
6829  * Moreover, we will never mix items which are part of separate
6830  * externals, and will always finish listing an external before listing
6831  * the next one.
6832  *
6833  * @a scratch_pool may be used for temporary allocations.
6834  *
6835  * @since New in 1.8.
6836  */
6837 typedef svn_error_t *(*svn_client_list_func2_t)(
6838  void *baton,
6839  const char *path,
6840  const svn_dirent_t *dirent,
6841  const svn_lock_t *lock,
6842  const char *abs_path,
6843  const char *external_parent_url,
6844  const char *external_target,
6845  apr_pool_t *scratch_pool);
6846 
6847 /**
6848  * Similar to #svn_client_list_func2_t, but without any information about
6849  * externals definitions.
6850  *
6851  * @deprecated Provided for backward compatibility with the 1.7 API.
6852  *
6853  * @since New in 1.4
6854  *
6855  * */
6856 typedef svn_error_t *(*svn_client_list_func_t)(void *baton,
6857  const char *path,
6858  const svn_dirent_t *dirent,
6859  const svn_lock_t *lock,
6860  const char *abs_path,
6861  apr_pool_t *pool);
6862 
6863 /**
6864  * Report the directory entry, and possibly children, for @a
6865  * path_or_url at @a revision. The actual node revision selected is
6866  * determined by the path as it exists in @a peg_revision. If @a
6867  * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
6868  * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
6869  * for WC targets.
6870  *
6871  * Report directory entries by invoking @a list_func/@a baton with @a path
6872  * relative to @a path_or_url. The dirent for @a path_or_url is reported
6873  * using an empty @a path. If @a path_or_url is a directory, also report
6874  * its children. If @a path_or_url is non-existent, return
6875  * #SVN_ERR_FS_NOT_FOUND.
6876  *
6877  * If the @a patterns array of <tt>const char *</tt> is not @c NULL, only
6878  * report paths whose last segment matches one of the specified glob
6879  * patterns. This does not affect the size of the tree nor the number of
6880  * externals being covered.
6881  *
6882  * If @a fetch_locks is TRUE, include locks when reporting directory entries.
6883  *
6884  * If @a include_externals is TRUE, also list all external items
6885  * reached by recursion. @a depth value passed to the original list target
6886  * applies for the externals also.
6887  *
6888  * Use @a scratch_pool for temporary allocations.
6889  *
6890  * Use authentication baton cached in @a ctx to authenticate against the
6891  * repository.
6892  *
6893  * If @a depth is #svn_depth_empty, list just @a path_or_url itself.
6894  * If @a depth is #svn_depth_files, list @a path_or_url and its file
6895  * entries. If #svn_depth_immediates, list its immediate file and
6896  * directory entries. If #svn_depth_infinity, list file entries and
6897  * recurse (with #svn_depth_infinity) on directory entries.
6898  *
6899  * @a dirent_fields controls which fields in the #svn_dirent_t's are
6900  * filled in. To have them totally filled in use #SVN_DIRENT_ALL,
6901  * otherwise simply bitwise OR together the combination of @c SVN_DIRENT_
6902  * fields you care about.
6903  *
6904  * @since New in 1.10.
6905  */
6906 svn_error_t *
6907 svn_client_list4(const char *path_or_url,
6908  const svn_opt_revision_t *peg_revision,
6909  const svn_opt_revision_t *revision,
6910  const apr_array_header_t *patterns,
6911  svn_depth_t depth,
6912  apr_uint32_t dirent_fields,
6913  svn_boolean_t fetch_locks,
6914  svn_boolean_t include_externals,
6915  svn_client_list_func2_t list_func,
6916  void *baton,
6917  svn_client_ctx_t *ctx,
6918  apr_pool_t *scratch_pool);
6919 
6920 /** Similar to svn_client_list4(), but with @a patterns set to @c NULL.
6921  *
6922  * @since New in 1.8.
6923  *
6924  * @deprecated Provided for backwards compatibility with the 1.9 API.
6925  */
6927 svn_error_t *
6928 svn_client_list3(const char *path_or_url,
6929  const svn_opt_revision_t *peg_revision,
6930  const svn_opt_revision_t *revision,
6931  svn_depth_t depth,
6932  apr_uint32_t dirent_fields,
6933  svn_boolean_t fetch_locks,
6934  svn_boolean_t include_externals,
6935  svn_client_list_func2_t list_func,
6936  void *baton,
6937  svn_client_ctx_t *ctx,
6938  apr_pool_t *pool);
6939 
6940 
6941 /** Similar to svn_client_list3(), but with @a include_externals set
6942  * to FALSE, and using a #svn_client_list_func_t as callback.
6943  *
6944  * @since New in 1.5.
6945  *
6946  * @deprecated Provided for backwards compatibility with the 1.7 API.
6947  */
6949 svn_error_t *
6950 svn_client_list2(const char *path_or_url,
6951  const svn_opt_revision_t *peg_revision,
6952  const svn_opt_revision_t *revision,
6953  svn_depth_t depth,
6954  apr_uint32_t dirent_fields,
6955  svn_boolean_t fetch_locks,
6956  svn_client_list_func_t list_func,
6957  void *baton,
6958  svn_client_ctx_t *ctx,
6959  apr_pool_t *pool);
6960 
6961 /**
6962  * Similar to svn_client_list2(), but with @a recurse instead of @a depth.
6963  * If @a recurse is FALSE, pass #svn_depth_immediates for @a depth; else
6964  * pass #svn_depth_infinity.
6965  *
6966  * @since New in 1.4.
6967  *
6968  * @deprecated Provided for backward compatibility with the 1.4 API.
6969  */
6971 svn_error_t *
6972 svn_client_list(const char *path_or_url,
6973  const svn_opt_revision_t *peg_revision,
6974  const svn_opt_revision_t *revision,
6975  svn_boolean_t recurse,
6976  apr_uint32_t dirent_fields,
6977  svn_boolean_t fetch_locks,
6978  svn_client_list_func_t list_func,
6979  void *baton,
6980  svn_client_ctx_t *ctx,
6981  apr_pool_t *pool);
6982 
6983 /**
6984  * Same as svn_client_list(), but always passes #SVN_DIRENT_ALL for
6985  * the @a dirent_fields argument and returns all information in two
6986  * hash tables instead of invoking a callback.
6987  *
6988  * Set @a *dirents to a newly allocated hash of directory entries.
6989  * The @a dirents hash maps entry names (<tt>const char *</tt>) to
6990  * #svn_dirent_t *'s.
6991  *
6992  * If @a locks is not @c NULL, set @a *locks to a hash table mapping
6993  * entry names (<tt>const char *</tt>) to #svn_lock_t *'s.
6994  *
6995  * @since New in 1.3.
6996  *
6997  * @deprecated Provided for backward compatibility with the 1.3 API.
6998  * Use svn_client_list2() instead.
6999  */
7001 svn_error_t *
7002 svn_client_ls3(apr_hash_t **dirents,
7003  apr_hash_t **locks,
7004  const char *path_or_url,
7005  const svn_opt_revision_t *peg_revision,
7006  const svn_opt_revision_t *revision,
7007  svn_boolean_t recurse,
7008  svn_client_ctx_t *ctx,
7009  apr_pool_t *pool);
7010 
7011 /**
7012  * Same as svn_client_ls3(), but without the ability to get locks.
7013  *
7014  * @since New in 1.2.
7015  *
7016  * @deprecated Provided for backward compatibility with the 1.2 API.
7017  * Use svn_client_list2() instead.
7018  */
7020 svn_error_t *
7021 svn_client_ls2(apr_hash_t **dirents,
7022  const char *path_or_url,
7023  const svn_opt_revision_t *peg_revision,
7024  const svn_opt_revision_t *revision,
7025  svn_boolean_t recurse,
7026  svn_client_ctx_t *ctx,
7027  apr_pool_t *pool);
7028 
7029 /**
7030  * Similar to svn_client_ls2() except that @a peg_revision is always
7031  * the same as @a revision.
7032  *
7033  * @deprecated Provided for backward compatibility with the 1.1 API.
7034  * Use svn_client_list2() instead.
7035  */
7037 svn_error_t *
7038 svn_client_ls(apr_hash_t **dirents,
7039  const char *path_or_url,
7040  svn_opt_revision_t *revision,
7041  svn_boolean_t recurse,
7042  svn_client_ctx_t *ctx,
7043  apr_pool_t *pool);
7044 
7045 
7046 /** @} */
7047 
7048 /**
7049  * @defgroup Cat View the contents of a file in the repository.
7050  *
7051  * @{
7052  */
7053 
7054 /**
7055  * Output the content of a file.
7056  *
7057  * @param[out] props Optional output argument to obtain properties.
7058  * @param[in] out The stream to which the content will be written.
7059  * @param[in] path_or_url The path or URL of the file.
7060  * @param[in] peg_revision The peg revision.
7061  * @param[in] revision The operative revision.
7062  * @param[in] expand_keywords When true, keywords (when set) are expanded.
7063  * @param[in] ctx The standard client context, used for possible
7064  * authentication.
7065  *
7066  * @return A pointer to an #svn_error_t of the type (this list is not
7067  * exhaustive): <br>
7068  * An unspecified error if @a revision is of kind
7069  * #svn_opt_revision_previous (or some other kind that requires
7070  * a local path), because the desired revision cannot be
7071  * determined. <br>
7072  * If no error occurred, return #SVN_NO_ERROR.
7073  *
7074  * If @a *props is not NULL it is set to a hash of all the file's
7075  * non-inherited properties. If it is NULL, the properties are only
7076  * used for determining how and if the file should be translated.
7077  *
7078  * @see #svn_client_ctx_t <br> @ref clnt_revisions for
7079  * a discussion of operative and peg revisions.
7080  *
7081  * @since New in 1.9.
7082  */
7083 svn_error_t *
7084 svn_client_cat3(apr_hash_t **props,
7085  svn_stream_t *out,
7086  const char *path_or_url,
7087  const svn_opt_revision_t *peg_revision,
7088  const svn_opt_revision_t *revision,
7089  svn_boolean_t expand_keywords,
7090  svn_client_ctx_t *ctx,
7091  apr_pool_t *result_pool,
7092  apr_pool_t *scratch_pool);
7093 
7094 /**
7095  * Similar to svn_client_cat3() except without the option of directly
7096  * reading the properties, and with @a expand_keywords always TRUE.
7097  *
7098  * @since New in 1.2.
7099  * @deprecated Provided for backward compatibility with the 1.8 API.
7100  */
7102 svn_error_t *
7104  const char *path_or_url,
7105  const svn_opt_revision_t *peg_revision,
7106  const svn_opt_revision_t *revision,
7107  svn_client_ctx_t *ctx,
7108  apr_pool_t *pool);
7109 
7110 
7111 /**
7112  * Similar to svn_client_cat2() except that the peg revision is always
7113  * the same as @a revision.
7114  *
7115  * @deprecated Provided for backward compatibility with the 1.1 API.
7116  */
7118 svn_error_t *
7120  const char *path_or_url,
7121  const svn_opt_revision_t *revision,
7122  svn_client_ctx_t *ctx,
7123  apr_pool_t *pool);
7124 
7125 /** @} end group: cat */
7126 
7127 
7128 /** Changelist commands
7129  *
7130  * @defgroup svn_client_changelist_funcs Client Changelist Functions
7131  * @{
7132  */
7133 
7134 /**
7135  * Add each path in @a paths (recursing to @a depth as necessary) to
7136  * @a changelist. If a path is already a member of another
7137  * changelist, then remove it from the other changelist and add it to
7138  * @a changelist. (For now, a path cannot belong to two changelists
7139  * at once.)
7140  *
7141  * @a paths is an array of (const char *) local WC paths.
7142  *
7143  * @a changelists is an array of <tt>const char *</tt> changelist
7144  * names, used as a restrictive filter on items whose changelist
7145  * assignments are adjusted; that is, don't tweak the changeset of any
7146  * item unless it's currently a member of one of those changelists.
7147  * If @a changelists is empty (or altogether @c NULL), no changelist
7148  * filtering occurs.
7149  *
7150  * @note This metadata is purely a client-side "bookkeeping"
7151  * convenience, and is entirely managed by the working copy.
7152  *
7153  * @since New in 1.5.
7154  */
7155 svn_error_t *
7156 svn_client_add_to_changelist(const apr_array_header_t *paths,
7157  const char *changelist,
7158  svn_depth_t depth,
7159  const apr_array_header_t *changelists,
7160  svn_client_ctx_t *ctx,
7161  apr_pool_t *pool);
7162 
7163 /**
7164  * Remove each path in @a paths (recursing to @a depth as necessary)
7165  * from changelists to which they are currently assigned.
7166  *
7167  * @a paths is an array of (const char *) local WC paths.
7168  *
7169  * @a changelists is an array of <tt>const char *</tt> changelist
7170  * names, used as a restrictive filter on items whose changelist
7171  * assignments are removed; that is, don't remove from a changeset any
7172  * item unless it's currently a member of one of those changelists.
7173  * If @a changelists is empty (or altogether @c NULL), all changelist
7174  * assignments in and under each path in @a paths (to @a depth) will
7175  * be removed.
7176  *
7177  * @note This metadata is purely a client-side "bookkeeping"
7178  * convenience, and is entirely managed by the working copy.
7179  *
7180  * @since New in 1.5.
7181  */
7182 svn_error_t *
7183 svn_client_remove_from_changelists(const apr_array_header_t *paths,
7184  svn_depth_t depth,
7185  const apr_array_header_t *changelists,
7186  svn_client_ctx_t *ctx,
7187  apr_pool_t *pool);
7188 
7189 
7190 /**
7191  * Beginning at @a path, crawl to @a depth to discover every path in
7192  * or under @a path which belongs to one of the changelists in @a
7193  * changelists (an array of <tt>const char *</tt> changelist names).
7194  * If @a changelists is @c NULL, discover paths with any changelist.
7195  * Call @a callback_func (with @a callback_baton) each time a
7196  * changelist-having path is discovered.
7197  *
7198  * @a path is a local WC path.
7199  *
7200  * If @a ctx->cancel_func is not @c NULL, invoke it passing @a
7201  * ctx->cancel_baton during the recursive walk.
7202  *
7203  * @since New in 1.5.
7204  */
7205 svn_error_t *
7207  const apr_array_header_t *changelists,
7208  svn_depth_t depth,
7209  svn_changelist_receiver_t callback_func,
7210  void *callback_baton,
7211  svn_client_ctx_t *ctx,
7212  apr_pool_t *pool);
7213 
7214 /** @} */
7215 
7216 
7217 ␌
7218 /** Locking commands
7219  *
7220  * @defgroup svn_client_locking_funcs Client Locking Functions
7221  * @{
7222  */
7223 
7224 /**
7225  * Lock @a targets in the repository. @a targets is an array of
7226  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
7227  * All targets must be in the same repository.
7228  *
7229  * If a target is already locked in the repository, no lock will be
7230  * acquired unless @a steal_lock is TRUE, in which case the locks are
7231  * stolen. @a comment, if non-NULL, is an xml-escapable description
7232  * stored with each lock in the repository. Each acquired lock will
7233  * be stored in the working copy if the targets are WC paths.
7234  *
7235  * For each target @a ctx->notify_func2/notify_baton2 will be used to indicate
7236  * whether it was locked. An action of #svn_wc_notify_locked
7237  * means that the path was locked. If the path was not locked because
7238  * it was out of date or there was already a lock in the repository,
7239  * the notification function will be called with
7240  * #svn_wc_notify_failed_lock, and the error passed in the notification
7241  * structure.
7242  *
7243  * Use @a pool for temporary allocations.
7244  *
7245  * @since New in 1.2.
7246  */
7247 svn_error_t *
7248 svn_client_lock(const apr_array_header_t *targets,
7249  const char *comment,
7250  svn_boolean_t steal_lock,
7251  svn_client_ctx_t *ctx,
7252  apr_pool_t *pool);
7253 
7254 /**
7255  * Unlock @a targets in the repository. @a targets is an array of
7256  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
7257  * All targets must be in the same repository.
7258  *
7259  * If the targets are WC paths, and @a break_lock is FALSE, the working
7260  * copy must contain a lock for each target.
7261  * If this is not the case, or the working copy lock doesn't match the
7262  * lock token in the repository, an error will be signaled.
7263  *
7264  * If the targets are URLs, the locks may be broken even if @a break_lock
7265  * is FALSE, but only if the lock owner is the same as the
7266  * authenticated user.
7267  *
7268  * If @a break_lock is TRUE, the locks will be broken in the
7269  * repository. In both cases, the locks, if any, will be removed from
7270  * the working copy if the targets are WC paths.
7271  *
7272  * The notification functions in @a ctx will be called for each
7273  * target. If the target was successfully unlocked,
7274  * #svn_wc_notify_unlocked will be used. Else, if the error is
7275  * directly related to unlocking the path (see
7276  * #SVN_ERR_IS_UNLOCK_ERROR), #svn_wc_notify_failed_unlock will be
7277  * used and the error will be passed in the notification structure.
7278 
7279  * Use @a pool for temporary allocations.
7280  *
7281  * @since New in 1.2.
7282  */
7283 svn_error_t *
7284 svn_client_unlock(const apr_array_header_t *targets,
7285  svn_boolean_t break_lock,
7286  svn_client_ctx_t *ctx,
7287  apr_pool_t *pool);
7288 
7289 /** @} */
7290 
7291 /**
7292  * @defgroup Info Show repository information about a working copy.
7293  *
7294  * @{
7295  */
7296 
7297 /** The size of the file is unknown.
7298  * Used as value in fields of type @c apr_size_t in #svn_info_t.
7299  *
7300  * @since New in 1.5
7301  * @deprecated Provided for backward compatibility with the 1.6 API.
7302  */
7303 #define SVN_INFO_SIZE_UNKNOWN ((apr_size_t) -1)
7304 
7305 /**
7306  * A structure which describes various system-generated metadata about
7307  * a working-copy path or URL.
7308  *
7309  * @note Fields may be added to the end of this structure in future
7310  * versions. Therefore, users shouldn't allocate structures of this
7311  * type, to preserve binary compatibility.
7312  *
7313  * @since New in 1.2.
7314  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7315  * API is #svn_client_info2_t.
7316  */
7317 typedef struct svn_info_t
7318 {
7319  /** Where the item lives in the repository. */
7320  const char *URL;
7321 
7322  /** The revision of the object. If path_or_url is a working-copy
7323  * path, then this is its current working revnum. If path_or_url
7324  * is a URL, then this is the repos revision that path_or_url lives in. */
7326 
7327  /** The node's kind. */
7329 
7330  /** The root URL of the repository. */
7331  const char *repos_root_URL;
7332 
7333  /** The repository's UUID. */
7334  const char *repos_UUID;
7335 
7336  /** The last revision in which this object changed. */
7338 
7339  /** The date of the last_changed_rev. */
7340  apr_time_t last_changed_date;
7341 
7342  /** The author of the last_changed_rev. */
7343  const char *last_changed_author;
7344 
7345  /** An exclusive lock, if present. Could be either local or remote. */
7347 
7348  /** Whether or not to ignore the next 10 wc-specific fields. */
7350 
7351  /**
7352  * @name Working-copy path fields
7353  * These things only apply to a working-copy path.
7354  * See svn_wc_entry_t for explanations.
7355  * @{
7356  */
7357  svn_wc_schedule_t schedule;
7358  const char *copyfrom_url;
7359  svn_revnum_t copyfrom_rev;
7360  apr_time_t text_time;
7361  apr_time_t prop_time; /* will always be 0 for svn 1.4 and later */
7362  const char *checksum;
7363  const char *conflict_old;
7364  const char *conflict_new;
7365  const char *conflict_wrk;
7366  const char *prejfile;
7367  /** @since New in 1.5. */
7368  const char *changelist;
7369  /** @since New in 1.5. */
7371 
7372  /**
7373  * Similar to working_size64, but will be #SVN_INFO_SIZE_UNKNOWN when
7374  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
7375  *
7376  * @deprecated Provided for backward compatibility with the 1.5 API.
7377  */
7378  apr_size_t working_size;
7379 
7380  /** @} */
7381 
7382  /**
7383  * Similar to size64, but size will be #SVN_INFO_SIZE_UNKNOWN when
7384  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
7385  *
7386  * @deprecated Provided for backward compatibility with the 1.5 API.
7387  */
7388  apr_size_t size;
7389 
7390  /**
7391  * The size of the file in the repository (untranslated,
7392  * e.g. without adjustment of line endings and keyword
7393  * expansion). Only applicable for file -- not directory -- URLs.
7394  * For working copy paths, size64 will be #SVN_INVALID_FILESIZE.
7395  * @since New in 1.6.
7396  */
7398 
7399  /**
7400  * The size of the file after being translated into its local
7401  * representation, or #SVN_INVALID_FILESIZE if unknown.
7402  * Not applicable for directories.
7403  * @since New in 1.6.
7404  * @name Working-copy path fields
7405  * @{
7406  */
7407  svn_filesize_t working_size64;
7408 
7409  /**
7410  * Info on any tree conflict of which this node is a victim. Otherwise NULL.
7411  * @since New in 1.6.
7412  */
7414 
7415  /** @} */
7416 
7418 
7419 
7420 /**
7421  * The callback invoked by svn_client_info2(). Each invocation
7422  * describes @a path with the information present in @a info. Note
7423  * that any fields within @a info may be NULL if information is
7424  * unavailable. Use @a pool for all temporary allocation.
7425  *
7426  * @since New in 1.2.
7427  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7428  * API is #svn_client_info_receiver2_t.
7429  */
7430 typedef svn_error_t *(*svn_info_receiver_t)(
7431  void *baton,
7432  const char *path,
7433  const svn_info_t *info,
7434  apr_pool_t *pool);
7435 
7436 /**
7437  * Return a duplicate of @a info, allocated in @a pool. No part of the new
7438  * structure will be shared with @a info.
7439  *
7440  * @since New in 1.3.
7441  * @deprecated Provided for backward compatibility with the 1.6 API. The new
7442  * API is #svn_client_info2_dup().
7443  */
7445 svn_info_t *
7447  apr_pool_t *pool);
7448 
7449 /**
7450  * A structure which describes various system-generated metadata about
7451  * a working-copy path or URL.
7452  *
7453  * @note Fields may be added to the end of this structure in future
7454  * versions. Therefore, users shouldn't allocate structures of this
7455  * type, to preserve binary compatibility.
7456  *
7457  * @since New in 1.7.
7458  */
7459 typedef struct svn_client_info2_t
7460 {
7461  /** Where the item lives in the repository. */
7462  const char *URL;
7463 
7464  /** The revision of the object. If the target is a working-copy
7465  * path, then this is its current working revnum. If the target
7466  * is a URL, then this is the repos revision that it lives in. */
7468 
7469  /** The root URL of the repository. */
7470  const char *repos_root_URL;
7471 
7472  /** The repository's UUID. */
7473  const char *repos_UUID;
7474 
7475  /** The node's kind. */
7477 
7478  /** The size of the file in the repository (untranslated,
7479  * e.g. without adjustment of line endings and keyword
7480  * expansion). Only applicable for file -- not directory -- URLs.
7481  * For working copy paths, @a size will be #SVN_INVALID_FILESIZE. */
7483 
7484  /** The last revision in which this object changed. */
7486 
7487  /** The date of the last_changed_rev. */
7488  apr_time_t last_changed_date;
7489 
7490  /** The author of the last_changed_rev. */
7491  const char *last_changed_author;
7492 
7493  /** An exclusive lock, if present. Could be either local or remote. */
7495 
7496  /** Possible information about the working copy, NULL if not valid. */
7498 
7500 
7501 /**
7502  * Return a duplicate of @a info, allocated in @a pool. No part of the new
7503  * structure will be shared with @a info.
7504  *
7505  * @since New in 1.7.
7506  */
7509  apr_pool_t *pool);
7510 
7511 /**
7512  * The callback invoked by info retrievers. Each invocation
7513  * describes @a abspath_or_url with the information present in @a info.
7514  * Use @a scratch_pool for all temporary allocation.
7515  *
7516  * @since New in 1.7.
7517  */
7518 typedef svn_error_t *(*svn_client_info_receiver2_t)(
7519  void *baton,
7520  const char *abspath_or_url,
7521  const svn_client_info2_t *info,
7522  apr_pool_t *scratch_pool);
7523 
7524 /**
7525  * Invoke @a receiver with @a receiver_baton to return information
7526  * about @a abspath_or_url in @a revision. The information returned is
7527  * system-generated metadata, not the sort of "property" metadata
7528  * created by users. See #svn_client_info2_t.
7529  *
7530  * If both revision arguments are either #svn_opt_revision_unspecified
7531  * or @c NULL, then information will be pulled solely from the working copy;
7532  * no network connections will be made.
7533  *
7534  * Otherwise, information will be pulled from a repository. The
7535  * actual node revision selected is determined by the @a abspath_or_url
7536  * as it exists in @a peg_revision. If @a peg_revision->kind is
7537  * #svn_opt_revision_unspecified, then it defaults to
7538  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
7539  * WC targets.
7540  *
7541  * If @a abspath_or_url is not a local path, then if @a revision is of
7542  * kind #svn_opt_revision_previous (or some other kind that requires
7543  * a local path), an error will be returned, because the desired
7544  * revision cannot be determined.
7545  *
7546  * Use the authentication baton cached in @a ctx to authenticate
7547  * against the repository.
7548  *
7549  * If @a abspath_or_url is a file, just invoke @a receiver on it. If it
7550  * is a directory, then descend according to @a depth. If @a depth is
7551  * #svn_depth_empty, invoke @a receiver on @a abspath_or_url and
7552  * nothing else; if #svn_depth_files, on @a abspath_or_url and its
7553  * immediate file children; if #svn_depth_immediates, the preceding
7554  * plus on each immediate subdirectory; if #svn_depth_infinity, then
7555  * recurse fully, invoking @a receiver on @a abspath_or_url and
7556  * everything beneath it.
7557  *
7558  * If @a fetch_excluded is TRUE, also also send excluded nodes in the working
7559  * copy to @a receiver, otherwise these are skipped. If @a fetch_actual_only
7560  * is TRUE also send nodes that don't exist as versioned but are still
7561  * tree conflicted.
7562  *
7563  * If @a include_externals is @c TRUE, recurse into externals and report about
7564  * them as well.
7565  *
7566  * @a changelists is an array of <tt>const char *</tt> changelist
7567  * names, used as a restrictive filter on items whose info is
7568  * reported; that is, don't report info about any item unless
7569  * it's a member of one of those changelists. If @a changelists is
7570  * empty (or altogether @c NULL), no changelist filtering occurs.
7571  *
7572  * @since New in 1.9.
7573  */
7574 svn_error_t *
7575 svn_client_info4(const char *abspath_or_url,
7576  const svn_opt_revision_t *peg_revision,
7577  const svn_opt_revision_t *revision,
7578  svn_depth_t depth,
7579  svn_boolean_t fetch_excluded,
7580  svn_boolean_t fetch_actual_only,
7581  svn_boolean_t include_externals,
7582  const apr_array_header_t *changelists,
7583  svn_client_info_receiver2_t receiver,
7584  void *receiver_baton,
7585  svn_client_ctx_t *ctx,
7586  apr_pool_t *scratch_pool);
7587 
7588 
7589 /** Similar to svn_client_info4, but doesn't support walking externals.
7590  *
7591  * @since New in 1.7.
7592  * @deprecated Provided for backward compatibility with the 1.8 API.
7593  */
7595 svn_error_t *
7596 svn_client_info3(const char *abspath_or_url,
7597  const svn_opt_revision_t *peg_revision,
7598  const svn_opt_revision_t *revision,
7599  svn_depth_t depth,
7600  svn_boolean_t fetch_excluded,
7601  svn_boolean_t fetch_actual_only,
7602  const apr_array_header_t *changelists,
7603  svn_client_info_receiver2_t receiver,
7604  void *receiver_baton,
7605  svn_client_ctx_t *ctx,
7606  apr_pool_t *scratch_pool);
7607 
7608 /** Similar to svn_client_info3, but uses an svn_info_receiver_t instead of
7609  * a #svn_client_info_receiver2_t, and @a path_or_url may be a relative path.
7610  *
7611  * @since New in 1.5.
7612  * @deprecated Provided for backward compatibility with the 1.6 API.
7613  */
7615 svn_error_t *
7616 svn_client_info2(const char *path_or_url,
7617  const svn_opt_revision_t *peg_revision,
7618  const svn_opt_revision_t *revision,
7619  svn_info_receiver_t receiver,
7620  void *receiver_baton,
7621  svn_depth_t depth,
7622  const apr_array_header_t *changelists,
7623  svn_client_ctx_t *ctx,
7624  apr_pool_t *pool);
7625 
7626 /**
7627  * Similar to svn_client_info2() but with @a changelists passed as @c
7628  * NULL, and @a depth set according to @a recurse: if @a recurse is
7629  * TRUE, @a depth is #svn_depth_infinity, else #svn_depth_empty.
7630  *
7631  * @deprecated Provided for backward compatibility with the 1.4 API.
7632  */
7634 svn_error_t *
7635 svn_client_info(const char *path_or_url,
7636  const svn_opt_revision_t *peg_revision,
7637  const svn_opt_revision_t *revision,
7638  svn_info_receiver_t receiver,
7639  void *receiver_baton,
7640  svn_boolean_t recurse,
7641  svn_client_ctx_t *ctx,
7642  apr_pool_t *pool);
7643 
7644 /**
7645  * Set @a *wcroot_abspath to the local abspath of the root of the
7646  * working copy in which @a local_abspath resides.
7647  *
7648  * @since New in 1.7.
7649  */
7650 svn_error_t *
7651 svn_client_get_wc_root(const char **wcroot_abspath,
7652  const char *local_abspath,
7653  svn_client_ctx_t *ctx,
7654  apr_pool_t *result_pool,
7655  apr_pool_t *scratch_pool);
7656 
7657 /**
7658  * Set @a *min_revision and @a *max_revision to the lowest and highest
7659  * revision numbers found within @a local_abspath. If @a committed is
7660  * TRUE, set @a *min_revision and @a *max_revision to the lowest and
7661  * highest committed (i.e. "last changed") revision numbers,
7662  * respectively. NULL may be passed for either of @a min_revision and
7663  * @a max_revision to indicate the caller's lack of interest in the
7664  * value. Use @a scratch_pool for temporary allocations.
7665  *
7666  * @since New in 1.7.
7667  */
7668 svn_error_t *
7670  svn_revnum_t *max_revision,
7671  const char *local_abspath,
7672  svn_boolean_t committed,
7673  svn_client_ctx_t *ctx,
7674  apr_pool_t *scratch_pool);
7675 
7676 /** @} */
7677 
7678 ␌
7679 /**
7680  * @defgroup Patch Apply a patch to the working copy
7681  *
7682  * @{
7683  */
7684 
7685 /**
7686  * The callback invoked by svn_client_patch() before attempting to patch
7687  * the target file at @a canon_path_from_patchfile (the path as parsed from
7688  * the patch file, but in canonicalized form). The callback can set
7689  * @a *filtered to @c TRUE to prevent the file from being patched, or else
7690  * must set it to @c FALSE.
7691  *
7692  * The callback is also provided with @a patch_abspath, the path of a
7693  * temporary file containing the patched result, and with @a reject_abspath,
7694  * the path to a temporary file containing the diff text of any hunks
7695  * which were rejected during patching.
7696  *
7697  * Because the callback is invoked before the patching attempt is made,
7698  * there is no guarantee that the target file will actually be patched
7699  * successfully. Client implementations must pay attention to notification
7700  * feedback provided by svn_client_patch() to find out which paths were
7701  * patched successfully.
7702  *
7703  * Note also that the files at @a patch_abspath and @a reject_abspath are
7704  * guaranteed to remain on disk after patching only if the
7705  * @a remove_tempfiles parameter for svn_client_patch() is @c FALSE.
7706  *
7707  * The const char * parameters may be allocated in @a scratch_pool which
7708  * will be cleared after each invocation.
7709  *
7710  * @since New in 1.7.
7711  */
7712 typedef svn_error_t *(*svn_client_patch_func_t)(
7713  void *baton,
7714  svn_boolean_t *filtered,
7715  const char *canon_path_from_patchfile,
7716  const char *patch_abspath,
7717  const char *reject_abspath,
7718  apr_pool_t *scratch_pool);
7719 
7720 /**
7721  * Apply a unidiff patch that's located at absolute path
7722  * @a patch_abspath to the working copy directory at @a wc_dir_abspath.
7723  *
7724  * This function makes a best-effort attempt at applying the patch.
7725  * It might skip patch targets which cannot be patched (e.g. targets
7726  * that are outside of the working copy). It will also reject hunks
7727  * which cannot be applied to a target in case the hunk's context
7728  * does not match anywhere in the patch target.
7729  *
7730  * If @a dry_run is TRUE, the patching process is carried out, and full
7731  * notification feedback is provided, but the working copy is not modified.
7732  *
7733  * @a strip_count specifies how many leading path components should be
7734  * stripped from paths obtained from the patch. It is an error if a
7735  * negative strip count is passed.
7736  *
7737  * If @a reverse is @c TRUE, apply patches in reverse, deleting lines
7738  * the patch would add and adding lines the patch would delete.
7739  *
7740  * If @a ignore_whitespace is TRUE, allow patches to be applied if they
7741  * only differ from the target by whitespace.
7742  *
7743  * If @a remove_tempfiles is TRUE, lifetimes of temporary files created
7744  * during patching will be managed internally. Otherwise, the caller should
7745  * take ownership of these files, the names of which can be obtained by
7746  * passing a @a patch_func callback.
7747  *
7748  * If @a patch_func is non-NULL, invoke @a patch_func with @a patch_baton
7749  * for each patch target processed.
7750  *
7751  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
7752  * @a ctx->notify_baton2 as patching progresses.
7753  *
7754  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
7755  * ctx->cancel_baton at various places during the operation.
7756  *
7757  * Use @a scratch_pool for temporary allocations.
7758  *
7759  * @since New in 1.7.
7760  */
7761 svn_error_t *
7762 svn_client_patch(const char *patch_abspath,
7763  const char *wc_dir_abspath,
7764  svn_boolean_t dry_run,
7765  int strip_count,
7766  svn_boolean_t reverse,
7767  svn_boolean_t ignore_whitespace,
7768  svn_boolean_t remove_tempfiles,
7769  svn_client_patch_func_t patch_func,
7770  void *patch_baton,
7771  svn_client_ctx_t *ctx,
7772  apr_pool_t *scratch_pool);
7773 
7774 /**
7775  * Similar to svn_client_patch(), but the patch is read from a file handle,
7776  * described in @a patch_file.
7777  *
7778  * In future versions, this function may be used to apply a patch directly
7779  * from an svn_stream_t.
7780  *
7781  * @since New in 1.15.
7782  */
7783 svn_error_t *
7784 svn_client_patch_stream(apr_file_t *patch_file,
7785  const char *wc_dir_abspath,
7786  svn_boolean_t dry_run,
7787  int strip_count,
7788  svn_boolean_t reverse,
7789  svn_boolean_t ignore_whitespace,
7790  svn_boolean_t remove_tempfiles,
7791  svn_client_patch_func_t patch_func,
7792  void *patch_baton,
7793  svn_client_ctx_t *ctx,
7794  apr_pool_t *scratch_pool);
7795 
7796 /** @} */
7797 
7798 /** @} end group: Client working copy management */
7799 
7800 /**
7801  *
7802  * @defgroup clnt_sessions Client session related functions
7803  *
7804  * @{
7805  *
7806  */
7807 
7808 ␌
7809 /* Converting paths to URLs. */
7810 
7811 /** Set @a *url to the URL for @a path_or_url allocated in result_pool.
7812  *
7813  * If @a path_or_url is already a URL, set @a *url to @a path_or_url.
7814  *
7815  * If @a path_or_url is a versioned item, set @a *url to @a
7816  * path_or_url's entry URL. If @a path_or_url is unversioned (has
7817  * no entry), set @a *url to NULL.
7818  *
7819  * Use @a ctx->wc_ctx to retrieve the information. Use
7820  ** @a scratch_pool for temporary allocations.
7821  *
7822  * @since New in 1.7.
7823  */
7824 svn_error_t *
7825 svn_client_url_from_path2(const char **url,
7826  const char *path_or_url,
7827  svn_client_ctx_t *ctx,
7828  apr_pool_t *result_pool,
7829  apr_pool_t *scratch_pool);
7830 
7831 /** Similar to svn_client_url_from_path2(), but without a context argument.
7832  *
7833  * @since New in 1.5.
7834  * @deprecated Provided for backward compatibility with the 1.6 API.
7835  */
7837 svn_error_t *
7838 svn_client_url_from_path(const char **url,
7839  const char *path_or_url,
7840  apr_pool_t *pool);
7841 
7842 
7843 ␌
7844 /* Fetching a repository's root URL and UUID. */
7845 
7846 /** Set @a *repos_root_url and @a *repos_uuid, to the root URL and UUID of
7847  * the repository in which @a abspath_or_url is versioned. Use the
7848  * authentication baton and working copy context cached in @a ctx as
7849  * necessary. @a repos_root_url and/or @a repos_uuid may be NULL if not
7850  * wanted.
7851  *
7852  * This function will open a temporary RA session to the repository if
7853  * necessary to get the information.
7854  *
7855  * Allocate @a *repos_root_url and @a *repos_uuid in @a result_pool.
7856  * Use @a scratch_pool for temporary allocations.
7857  *
7858  * @since New in 1.8.
7859  */
7860 svn_error_t *
7861 svn_client_get_repos_root(const char **repos_root_url,
7862  const char **repos_uuid,
7863  const char *abspath_or_url,
7864  svn_client_ctx_t *ctx,
7865  apr_pool_t *result_pool,
7866  apr_pool_t *scratch_pool);
7867 
7868 /** Set @a *url to the repository root URL of the repository in which
7869  * @a path_or_url is versioned (or scheduled to be versioned),
7870  * allocated in @a pool. @a ctx is required for possible repository
7871  * authentication.
7872  *
7873  * @since New in 1.5.
7874  * @deprecated Provided for backward compatibility with the 1.7 API. Use
7875  * svn_client_get_repos_root() instead, with an absolute path.
7876  */
7878 svn_error_t *
7880  const char *path_or_url,
7881  svn_client_ctx_t *ctx,
7882  apr_pool_t *pool);
7883 
7884 /** Get repository @a uuid for @a url.
7885  *
7886  * Use a @a pool to open a temporary RA session to @a url, discover the
7887  * repository uuid, and free the session. Return the uuid in @a uuid,
7888  * allocated in @a pool. @a ctx is required for possible repository
7889  * authentication.
7890  *
7891  * @deprecated Provided for backward compatibility with the 1.7 API. Use
7892  * svn_client_get_repos_root() instead.
7893  */
7895 svn_error_t *
7896 svn_client_uuid_from_url(const char **uuid,
7897  const char *url,
7898  svn_client_ctx_t *ctx,
7899  apr_pool_t *pool);
7900 
7901 
7902 /** Return the repository @a uuid for working-copy @a local_abspath,
7903  * allocated in @a result_pool. Use @a ctx->wc_ctx to retrieve the
7904  * information.
7905  *
7906  * Use @a scratch_pool for temporary allocations.
7907  *
7908  * @since New in 1.7.
7909  * @deprecated Provided for backward compatibility with the 1.7 API. Use
7910  * svn_client_get_repos_root() instead.
7911  */
7913 svn_error_t *
7914 svn_client_uuid_from_path2(const char **uuid,
7915  const char *local_abspath,
7916  svn_client_ctx_t *ctx,
7917  apr_pool_t *result_pool,
7918  apr_pool_t *scratch_pool);
7919 
7920 /** Similar to svn_client_uuid_from_path2(), but with a relative path and
7921  * an access baton.
7922  *
7923  * @deprecated Provided for backward compatibility with the 1.6 API.
7924  */
7926 svn_error_t *
7927 svn_client_uuid_from_path(const char **uuid,
7928  const char *path,
7929  svn_wc_adm_access_t *adm_access,
7930  svn_client_ctx_t *ctx,
7931  apr_pool_t *pool);
7932 
7933 ␌
7934 /* Opening RA sessions. */
7935 
7936 /** Open an RA session rooted at @a url, and return it in @a *session.
7937  *
7938  * Use the authentication baton stored in @a ctx for authentication.
7939  * @a *session is allocated in @a result_pool.
7940  *
7941  * If @a wri_abspath is not NULL, use the working copy identified by @a
7942  * wri_abspath to potentially avoid transferring unneeded data.
7943  *
7944  * @note This function is similar to svn_ra_open4(), but the caller avoids
7945  * having to providing its own callback functions.
7946  * @since New in 1.8.
7947  */
7948 svn_error_t *
7950  const char *url,
7951  const char *wri_abspath,
7952  svn_client_ctx_t *ctx,
7953  apr_pool_t *result_pool,
7954  apr_pool_t *scratch_pool);
7955 
7956 /** Similar to svn_client_open_ra_session2(), but with @ wri_abspath
7957  * always passed as NULL, and with the same pool used as both @a
7958  * result_pool and @a scratch_pool.
7959  *
7960  * @since New in 1.3.
7961  * @deprecated Provided for backward compatibility with the 1.7 API.
7962  */
7964 svn_error_t *
7966  const char *url,
7967  svn_client_ctx_t *ctx,
7968  apr_pool_t *pool);
7969 
7970 
7971 /** @} end group: Client session related functions */
7972 
7973 /** @} */
7974 
7975 #ifdef __cplusplus
7976 }
7977 #endif /* __cplusplus */
7978 
7979 #endif /* SVN_CLIENT_H */
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_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_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_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_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.
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_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.
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.
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_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_...
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_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,...
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_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_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_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_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,...
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...
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_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_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 ...
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_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_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_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_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...
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.
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:4990
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...
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_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_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_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_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_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_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...
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.
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_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....
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_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_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_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,...
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.
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_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_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_client_conflict_option_id_t
A public enumeration of conflict option IDs.
Definition: svn_client.h:4708
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_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.
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...
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_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_...
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:4694
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...
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.
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_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...
svn_client_conflict_option_id_t svn_client_conflict_option_get_id(svn_client_conflict_option_t *option)
Return an ID for option.
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...
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:4701
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_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_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...
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_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_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...
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.
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.
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_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_client_conflict_option_local_move_dir_merge
Definition: svn_client.h:4756
@ svn_client_conflict_option_sibling_move_file_text_merge
Definition: svn_client.h:4759
@ svn_client_conflict_option_sibling_move_dir_merge
Definition: svn_client.h:4760
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't support meta_data_only and cannot pin externals.
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,...
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_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...
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_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...
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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...
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_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 ...
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,...
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.
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.
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 'clean' dir...
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_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,...
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_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_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_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:2013
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_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...
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_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...
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_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_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.
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_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...
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't support walking externals.
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:7518
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:7430
svn_info_t * svn_info_dup(const svn_info_t *info, apr_pool_t *pool)
Return a duplicate of info, allocated in pool.
struct svn_info_t svn_info_t
A structure which describes various system-generated metadata about a working-copy path or URL.
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.
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_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...
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_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_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_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:6837
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:6856
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_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.
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_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_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:
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_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_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_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...
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_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_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_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...
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_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_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_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_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_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_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.
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_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_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_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_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_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_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.
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_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_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...
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_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.
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.
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_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,...
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_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_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's located at absolute path patch_abspath to the working copy directory at ...
svn_error_t * svn_client_patch_stream(apr_file_t *patch_file, 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)
Similar to svn_client_patch(), but the patch is read from a file handle, described in patch_file.
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:7712
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.
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_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_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_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_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_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_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_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_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...
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:2594
struct svn_client_status_t svn_client_status_t
Structure for holding the "status" of a working copy item.
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_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...
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_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_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_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_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.
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,...
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,...
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...
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_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,...
const svn_version_t * svn_client_wc_version_from_format(int wc_format, apr_pool_t *result_pool)
Return the version of the Subversion library that first supported the given WC format,...
svn_error_t * svn_client_upgrade2(const svn_version_t **result_format_version_p, const char *wcroot_dir, const svn_version_t *target_format_version, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Recursively upgrade a working copy and nested externals working copies from any older format to a WC ...
const int * svn_client_get_wc_formats_supported(apr_pool_t *result_pool)
Returns a list of the WC formats supported by the client library.
svn_error_t * svn_client_default_wc_version(const svn_version_t **version_p, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
Set *version_p to the version of a working copy format that should be used by default for ctx,...
const svn_version_t * svn_client_oldest_wc_version(apr_pool_t *result_pool)
Returns the first version that supported the library's oldest working copy metadata format.
const svn_version_t * svn_client_latest_wc_version(apr_pool_t *result_pool)
Returns the first version that supported the library's latest working copy metadata format.
svn_error_t * svn_client_upgrade(const char *wcroot_dir, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Like svn_client_upgrade2(), but with result_format_version_p, target_format_version and result_pool s...
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,...
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...
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...
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...
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,...
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...
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,...
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,...
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...
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,...
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,...
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
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_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
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_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
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_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,...
Definition: svn_client.h:848
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
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_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_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_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,...
struct svn_client_commit_item3_t svn_client_commit_item3_t
The commit candidate structure.
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
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_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't return inherited properties.
Definition: svn_client.h:393
svn_client_commit_item3_t * svn_client_commit_item3_create(apr_pool_t *pool)
Return a new commit item object, allocated in pool.
struct svn_client_commit_info_t svn_client_commit_info_t
Information about commits passed back to client from this module.
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
struct svn_client_commit_item_t svn_client_commit_item_t
The commit candidate structure.
struct svn_client_commit_item2_t svn_client_commit_item2_t
The commit candidate structure.
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_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_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_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
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_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_create_context(svn_client_ctx_t **ctx, apr_pool_t *pool)
Similar to svn_client_create_context2 but passes a NULL cfg_hash.
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.
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_client_diff_summarize_kind_t
The difference type in an svn_diff_summarize_t structure.
Definition: svn_client.h:872
struct svn_client_diff_summarize_t svn_client_diff_summarize_t
A struct that describes the diff of an item.
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_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
@ svn_client_diff_summarize_kind_deleted
A deleted item.
Definition: svn_client.h:883
@ svn_client_diff_summarize_kind_added
An added item.
Definition: svn_client.h:877
@ svn_client_diff_summarize_kind_modified
An item with text modifications.
Definition: svn_client.h:880
@ svn_client_diff_summarize_kind_normal
An item with no text modifications.
Definition: svn_client.h:874
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_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_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_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_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.
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_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_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_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_checkout4(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, const svn_version_t *wc_format_version, svn_tristate_t store_pristine, svn_client_ctx_t *ctx, apr_pool_t *pool)
Checkout a working copy from a repository.
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)
Similar to svn_client_checkout4() but with wc_format_version set to NULL and store_pristine set to sv...
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_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__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:1623
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.
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...
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_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_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.
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_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_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_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_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_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_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_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.
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_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_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,...
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.
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_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.
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_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_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_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.
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...
struct svn_stream_t svn_stream_t
An abstract stream of bytes–either incoming or outgoing or both.
Definition: svn_io.h:863
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_wc_conflict_choice_t
The way in which the conflict callback chooses a course of action.
Definition: svn_wc.h:2184
svn_wc_conflict_reason_t
The pre-existing condition which is causing a state of conflict.
Definition: svn_wc.h:1658
svn_wc_operation_t
The user operation that exposed a conflict.
Definition: svn_wc.h:1702
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:2296
svn_wc_conflict_action_t
The type of action being attempted on an object.
Definition: svn_wc.h:1644
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:2311
struct svn_wc_context_t svn_wc_context_t
The context for all working copy interactions.
Definition: svn_wc.h:179
svn_wc_schedule_t
The schedule states an entry can be in.
Definition: svn_wc.h:2887
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:1583
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:1573
enum svn_wc_status_kind repos_prop_status
The node's property status in the repository.
Definition: svn_client.h:2511
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:2518
enum svn_wc_status_kind repos_text_status
The node's text status in the repository.
Definition: svn_client.h:2508
const svn_lock_t * repos_lock
The node's lock in the repository, if any.
Definition: svn_client.h:2514
apr_time_t ood_changed_date
Set to the most recent commit date, or 0 if not out of date.
Definition: svn_client.h:2521
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:2501
enum svn_wc_status_kind repos_node_status
The status of the node, based on the text status if the node has no restructuring changes.
Definition: svn_client.h:2505
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:2528
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:4211
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:4190
svn_wc_status_kind
The type of status for the working copy.
Definition: svn_wc.h:3703
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:4202
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:8625
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.
A provider object, ready to be put into an array and given to svn_auth_open().
Definition: svn_auth.h:159
Information about commits passed back to client from this module.
Definition: svn_client.h:417
svn_revnum_t revision
just-committed revision.
Definition: svn_client.h:419
const char * date
server-side date of the commit.
Definition: svn_client.h:422
const char * author
author of the commit.
Definition: svn_client.h:425
The commit candidate structure.
Definition: svn_client.h:544
svn_revnum_t copyfrom_rev
copyfrom-rev, valid when copyfrom_url != NULL
Definition: svn_client.h:561
apr_byte_t state_flags
state flags
Definition: svn_client.h:564
const char * path
absolute working-copy path of item
Definition: svn_client.h:546
svn_revnum_t revision
revision of textbase
Definition: svn_client.h:555
const char * copyfrom_url
copyfrom-url or NULL if not a copied item
Definition: svn_client.h:558
const char * url
commit URL for this item
Definition: svn_client.h:552
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:549
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:569
The commit candidate structure.
Definition: svn_client.h:465
svn_revnum_t revision
revision of textbase
Definition: svn_client.h:484
const char * url
commit URL for this item.
Definition: svn_client.h:481
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:476
const char * copyfrom_url
copyfrom-url or NULL if not a copied item
Definition: svn_client.h:487
apr_array_header_t * incoming_prop_changes
An array of svn_prop_t *'s, which are incoming changes from the repository to WC properties.
Definition: svn_client.h:508
apr_array_header_t * outgoing_prop_changes
An array of svn_prop_t *'s, which are outgoing changes to make to properties in the repository.
Definition: svn_client.h:519
svn_revnum_t copyfrom_rev
copyfrom-rev, valid when copyfrom_url != NULL
Definition: svn_client.h:490
apr_byte_t state_flags
state flags
Definition: svn_client.h:493
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
const char * path
absolute working-copy path of item.
Definition: svn_client.h:473
const char * session_relpath
When processing the commit this contains the relative path for the commit session.
Definition: svn_client.h:526
The commit candidate structure.
Definition: svn_client.h:577
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_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:582
svn_revnum_t revision
revision (copyfrom-rev if _IS_COPY)
Definition: svn_client.h:588
apr_byte_t state_flags
state flags
Definition: svn_client.h:594
const char * path
absolute working-copy path of item
Definition: svn_client.h:579
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:599
A structure which describes the source of a copy operation–its path, revision, and peg revision.
Definition: svn_client.h:5620
const char * path
The source path or URL.
Definition: svn_client.h:5622
const svn_opt_revision_t * peg_revision
The source peg revision.
Definition: svn_client.h:5628
const svn_opt_revision_t * revision
The source operational revision.
Definition: svn_client.h:5625
A client context structure, which holds client specific callbacks, batons, serves as a cache for conf...
Definition: svn_client.h:959
void * log_msg_baton2
callback baton for log_msg_func2
Definition: svn_client.h:1015
svn_ra_check_tunnel_func_t check_tunnel_func
Check-tunnel callback.
Definition: svn_client.h:1070
svn_wc_notify_func_t notify_func
notification callback function.
Definition: svn_client.h:967
svn_wc_conflict_resolver_func_t conflict_func
Conflict resolution callback and baton, if available.
Definition: svn_client.h:1041
void * notify_baton2
notification baton for notify_func2().
Definition: svn_client.h:1006
svn_ra_open_tunnel_func_t open_tunnel_func
Open-tunnel callback.
Definition: svn_client.h:1080
svn_client_get_commit_log2_t log_msg_func2
Log message callback function.
Definition: svn_client.h:1011
void * cancel_baton
a baton to pass to the cancellation callback.
Definition: svn_client.h:997
svn_wc_notify_func2_t notify_func2
notification function, defaulting to a function that forwards to notify_func().
Definition: svn_client.h:1002
svn_client_get_commit_log3_t log_msg_func3
Log message callback function.
Definition: svn_client.h:1029
void * notify_baton
notification callback baton for notify_func()
Definition: svn_client.h:972
void * log_msg_baton
log message callback baton
Definition: svn_client.h:983
apr_hash_t * config
a hash mapping of const char * configuration file names to svn_config_t *'s.
Definition: svn_client.h:990
void * progress_baton
Callback baton for progress_func.
Definition: svn_client.h:1024
void * tunnel_baton
The baton used with check_tunnel_func and open_tunnel_func.
Definition: svn_client.h:1085
svn_client_get_commit_log_t log_msg_func
Log message callback function.
Definition: svn_client.h:978
svn_ra_progress_notify_func_t progress_func
Notification callback for network progress information.
Definition: svn_client.h:1020
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
const char * client_name
Custom client name string, or NULL.
Definition: svn_client.h:1046
apr_hash_t * mimetypes_map
MIME types map.
Definition: svn_client.h:1037
svn_auth_baton_t * auth_baton
main authentication baton.
Definition: svn_client.h:961
void * log_msg_baton3
The callback baton for log_msg_func3.
Definition: svn_client.h:1033
svn_wc_context_t * wc_ctx
A working copy context for the client operation to use.
Definition: svn_client.h:1059
svn_wc_conflict_resolver_func2_t conflict_func2
Conflict resolution callback and baton, if available.
Definition: svn_client.h:1051
A struct that describes the diff of an item.
Definition: svn_client.h:897
const char * path
Path relative to the target.
Definition: svn_client.h:900
svn_boolean_t prop_changed
Properties changed? For consistency with 'svn status' output, this should be false if summarize_kind ...
Definition: svn_client.h:907
svn_client_diff_summarize_kind_t summarize_kind
Change kind.
Definition: svn_client.h:903
svn_node_kind_t node_kind
File or dir.
Definition: svn_client.h:910
A structure which describes various system-generated metadata about a working-copy path or URL.
Definition: svn_client.h:7460
const svn_wc_info_t * wc_info
Possible information about the working copy, NULL if not valid.
Definition: svn_client.h:7497
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:7491
svn_filesize_t size
The size of the file in the repository (untranslated, e.g.
Definition: svn_client.h:7482
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:7485
const char * repos_UUID
The repository's UUID.
Definition: svn_client.h:7473
apr_time_t last_changed_date
The date of the last_changed_rev.
Definition: svn_client.h:7488
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:7462
svn_revnum_t rev
The revision of the object.
Definition: svn_client.h:7467
const svn_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:7494
const char * repos_root_URL
The root URL of the repository.
Definition: svn_client.h:7470
svn_node_kind_t kind
The node's kind.
Definition: svn_client.h:7476
This is a structure which stores a filename and a hash of property names and values.
Definition: svn_client.h:347
apr_hash_t * prop_hash
A hash of (const char *) property names, and (svn_string_t *) property values.
Definition: svn_client.h:353
svn_stringbuf_t * node_name
The name of the node on which these properties are set.
Definition: svn_client.h:349
Structure for holding the "status" of a working copy item.
Definition: svn_client.h:2404
const void * backwards_compatibility_baton
Reserved for libsvn_client's internal use; this value is only to be used for libsvn_client backwards ...
Definition: svn_client.h:2535
svn_boolean_t conflicted
Set to TRUE if the node is the victim of some kind of conflict.
Definition: svn_client.h:2420
svn_revnum_t changed_rev
Last revision this was changed.
Definition: svn_client.h:2458
const char * repos_root_url
The URL of the repository root.
Definition: svn_client.h:2446
svn_boolean_t switched
A file or directory can be 'switched' if the switch command has been used.
Definition: svn_client.h:2469
svn_filesize_t filesize
The actual size of the working file on disk, or SVN_INVALID_FILESIZE if unknown (or if the item isn't...
Definition: svn_client.h:2413
enum svn_wc_status_kind node_status
The status of the node, based on the restructuring changes and if the node has no restructuring chang...
Definition: svn_client.h:2424
const char * repos_relpath
The in-repository path relative to the repository root.
Definition: svn_client.h:2452
apr_time_t changed_date
Date of last commit.
Definition: svn_client.h:2461
const char * changelist
Which changelist this item is part of, or NULL if not part of any.
Definition: svn_client.h:2482
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:2568
const char * local_abspath
The absolute path to the node.
Definition: svn_client.h:2409
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:2475
enum svn_wc_status_kind prop_status
The status of the node's properties.
Definition: svn_client.h:2434
const svn_lock_t * lock
The locally present lock.
Definition: svn_client.h:2479
const char * repos_uuid
The UUID of the repository.
Definition: svn_client.h:2449
svn_boolean_t copied
A file or directory can be 'copied' if it's scheduled for addition-with-history (or part of a subtree...
Definition: svn_client.h:2443
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:2546
enum svn_wc_status_kind text_status
The status of the text of the node, not including restructuring changes.
Definition: svn_client.h:2429
svn_revnum_t revision
Base revision.
Definition: svn_client.h:2455
svn_node_kind_t kind
The kind of node as recorded in the working copy.
Definition: svn_client.h:2406
svn_boolean_t versioned
If the path is under version control, versioned is TRUE, otherwise FALSE.
Definition: svn_client.h:2417
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:2486
svn_boolean_t wc_is_locked
A node can be 'locked' if a working copy update is in progress or was interrupted.
Definition: svn_client.h:2438
const char * changed_author
Last commit author of this item.
Definition: svn_client.h:2464
All information about a commit.
Definition: svn_types.h:686
Options to control the behaviour of the file diff routines.
Definition: svn_diff.h:470
A general subversion directory entry.
Definition: svn_types.h:560
Subversion error object.
Definition: svn_types.h:177
A structure which describes various system-generated metadata about a working-copy path or URL.
Definition: svn_client.h:7318
svn_node_kind_t kind
The node's kind.
Definition: svn_client.h:7328
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:7320
const char * repos_UUID
The repository's UUID.
Definition: svn_client.h:7334
svn_wc_conflict_description_t * tree_conflict
Info on any tree conflict of which this node is a victim.
Definition: svn_client.h:7413
svn_filesize_t size64
The size of the file in the repository (untranslated, e.g.
Definition: svn_client.h:7397
svn_revnum_t rev
The revision of the object.
Definition: svn_client.h:7325
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:7337
const char * repos_root_URL
The root URL of the repository.
Definition: svn_client.h:7331
apr_time_t last_changed_date
The date of the last_changed_rev.
Definition: svn_client.h:7340
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:7388
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:7378
svn_boolean_t has_wc_info
Whether or not to ignore the next 10 wc-specific fields.
Definition: svn_client.h:7349
svn_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:7346
const char * changelist
Definition: svn_client.h:7368
svn_depth_t depth
Definition: svn_client.h:7370
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:7343
A set of directory entry data elements as returned by svn_io_get_dirents.
Definition: svn_io.h:78
A lock object, for client & server to share.
Definition: svn_types.h:1105
A revision, specified in one of svn_opt_revision_kind ways.
Definition: svn_opt.h:470
A simple counted string.
Definition: svn_string.h:97
A buffered string, capable of appending without an allocation and copy for each append.
Definition: svn_string.h:105
Version information.
Definition: svn_version.h:148
Similar to svn_wc_conflict_description2_t, but with relative paths and adm_access batons.
Definition: svn_wc.h:1960
This struct contains information about a working copy node.
Definition: svn_wc.h:3263
Subversion's authentication system.
const svn_version_t * svn_client_version(void)
Get libsvn_client version information.
Contextual diffing.
Option and argument parsing for Subversion command lines.
Repository Access.
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(* 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 callbacks or t...
Definition: svn_ra.h:283
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
struct svn_ra_session_t svn_ra_session_t
A repository access session.
Definition: svn_ra.h:685
Counted-length strings for Subversion, plus some C string goodies.
Subversion's data types.
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:974
int svn_boolean_t
YABT: Yet Another Boolean Type.
Definition: svn_types.h:137
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:997
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:1081
apr_int64_t svn_filesize_t
The size of a file in the Subversion FS.
Definition: svn_types.h:430
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:963
#define SVN_EXPERIMENTAL
Macro used to mark experimental functions.
Definition: svn_types.h:88
#define SVN_DEPRECATED
Macro used to mark deprecated functions.
Definition: svn_types.h:62
svn_depth_t
The concept of depth for directories.
svn_tristate_t
Generic three-state property to represent an unknown value for values that are just like booleans.
svn_node_kind_t
The various types of nodes in the Subversion filesystem.
long int svn_revnum_t
A revision number.
Subversion's working copy library.