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