Subversion
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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_proplist3(). Each invocation
359  * provides the regular properties of @a path which is either a WC path or
360  * a URL. @a prop_hash maps property names (char *) to property
361  values (svn_string_t *). Use @a pool for all temporary allocation.
362  *
363  * @since New in 1.5.
364  */
365 typedef svn_error_t *(*svn_proplist_receiver_t)(
366  void *baton,
367  const char *path,
368  apr_hash_t *prop_hash,
369  apr_pool_t *pool);
370 
371 /**
372  * Return a duplicate of @a item, allocated in @a pool. No part of the new
373  * structure will be shared with @a item.
374  *
375  * @since New in 1.3.
376  *
377  * @deprecated Provided for backward compatibility with the 1.4 API.
378  */
382  apr_pool_t *pool);
383 
384 /** Information about commits passed back to client from this module.
385  *
386  * @deprecated Provided for backward compatibility with the 1.2 API.
387  */
389 {
390  /** just-committed revision. */
392 
393  /** server-side date of the commit. */
394  const char *date;
395 
396  /** author of the commit. */
397  const char *author;
398 
400 
401 
402 /**
403  * @name Commit state flags
404  * @brief State flags for use with the #svn_client_commit_item3_t structure
405  * (see the note about the namespace for that structure, which also
406  * applies to these flags).
407  * @{
408  */
409 #define SVN_CLIENT_COMMIT_ITEM_ADD 0x01
410 #define SVN_CLIENT_COMMIT_ITEM_DELETE 0x02
411 #define SVN_CLIENT_COMMIT_ITEM_TEXT_MODS 0x04
412 #define SVN_CLIENT_COMMIT_ITEM_PROP_MODS 0x08
413 #define SVN_CLIENT_COMMIT_ITEM_IS_COPY 0x10
414 /** @since New in 1.2. */
415 #define SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN 0x20
416 /** @} */
417 
418 /** The commit candidate structure.
419  *
420  * In order to avoid backwards compatibility problems clients should use
421  * svn_client_commit_item3_create() to allocate and initialize this
422  * structure instead of doing so themselves.
423  *
424  * @since New in 1.5.
425  */
427 {
428  /* IMPORTANT: If you extend this structure, add new fields to the end. */
429 
430  /** absolute working-copy path of item */
431  const char *path;
432 
433  /** node kind (dir, file) */
435 
436  /** commit URL for this item */
437  const char *url;
438 
439  /** revision of textbase */
441 
442  /** copyfrom-url or NULL if not a copied item */
443  const char *copyfrom_url;
444 
445  /** copyfrom-rev, valid when copyfrom_url != NULL */
447 
448  /** state flags */
449  apr_byte_t state_flags;
450 
451  /** An array of #svn_prop_t *'s, which are incoming changes from
452  * the repository to WC properties. These changes are applied
453  * post-commit.
454  *
455  * When adding to this array, allocate the #svn_prop_t and its
456  * contents in @c incoming_prop_changes->pool, so that it has the
457  * same lifetime as this data structure.
458  *
459  * See http://subversion.tigris.org/issues/show_bug.cgi?id=806 for a
460  * description of what would happen if the post-commit process
461  * didn't group these changes together with all other changes to the
462  * item.
463  */
464  apr_array_header_t *incoming_prop_changes;
465 
466  /** An array of #svn_prop_t *'s, which are outgoing changes to
467  * make to properties in the repository. These extra property
468  * changes are declared pre-commit, and applied to the repository as
469  * part of a commit.
470  *
471  * When adding to this array, allocate the #svn_prop_t and its
472  * contents in @c outgoing_prop_changes->pool, so that it has the
473  * same lifetime as this data structure.
474  */
475  apr_array_header_t *outgoing_prop_changes;
476 
477  /**
478  * When processing the commit this contains the relative path for
479  * the commit session. #NULL until the commit item is preprocessed.
480  */
481  const char *session_relpath;
483 
484 /** The commit candidate structure.
485  *
486  * @deprecated Provided for backward compatibility with the 1.4 API.
487  */
489 {
490  /** absolute working-copy path of item */
491  const char *path;
492 
493  /** node kind (dir, file) */
495 
496  /** commit URL for this item */
497  const char *url;
498 
499  /** revision of textbase */
501 
502  /** copyfrom-url or NULL if not a copied item */
503  const char *copyfrom_url;
504 
505  /** copyfrom-rev, valid when copyfrom_url != NULL */
507 
508  /** state flags */
509  apr_byte_t state_flags;
510 
511  /** Analogous to the #svn_client_commit_item3_t.incoming_prop_changes
512  * field.
513  */
514  apr_array_header_t *wcprop_changes;
516 
517 /** The commit candidate structure.
518  *
519  * @deprecated Provided for backward compatibility with the 1.2 API.
520  */
522 {
523  /** absolute working-copy path of item */
524  const char *path;
525 
526  /** node kind (dir, file) */
528 
529  /** commit URL for this item */
530  const char *url;
531 
532  /** revision (copyfrom-rev if _IS_COPY) */
534 
535  /** copyfrom-url */
536  const char *copyfrom_url;
537 
538  /** state flags */
539  apr_byte_t state_flags;
540 
541  /** Analogous to the #svn_client_commit_item3_t.incoming_prop_changes
542  * field.
543  */
544  apr_array_header_t *wcprop_changes;
545 
547 
548 /** Return a new commit item object, allocated in @a pool.
549  *
550  * In order to avoid backwards compatibility problems, this function
551  * is used to initialize and allocate the #svn_client_commit_item3_t
552  * structure rather than doing so explicitly, as the size of this
553  * structure may change in the future.
554  *
555  * @since New in 1.6.
556  */
558 svn_client_commit_item3_create(apr_pool_t *pool);
559 
560 /** Like svn_client_commit_item3_create() but with a stupid "const"
561  * qualifier on the returned structure, and it returns an error that
562  * will never happen.
563  *
564  * @deprecated Provided for backward compatibility with the 1.5 API.
565  */
567 svn_error_t *
569  apr_pool_t *pool);
570 
571 /**
572  * Return a duplicate of @a item, allocated in @a pool. No part of the
573  * new structure will be shared with @a item, except for the adm_access
574  * member.
575  *
576  * @since New in 1.5.
577  */
580  apr_pool_t *pool);
581 
582 /**
583  * Return a duplicate of @a item, allocated in @a pool. No part of the new
584  * structure will be shared with @a item.
585  *
586  * @deprecated Provided for backward compatibility with the 1.4 API.
587  */
591  apr_pool_t *pool);
592 
593 /** Callback type used by commit-y operations to get a commit log message
594  * from the caller.
595  *
596  * Set @a *log_msg to the log message for the commit, allocated in @a
597  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
598  * to the path of any temporary file which might be holding that log
599  * message, or @c NULL if no such file exists (though, if @a *log_msg is
600  * @c NULL, this value is undefined). The log message MUST be a UTF8
601  * string with LF line separators.
602  *
603  * @a commit_items is a read-only array of #svn_client_commit_item3_t
604  * structures, which may be fully or only partially filled-in,
605  * depending on the type of commit operation.
606  *
607  * @a baton is provided along with the callback for use by the handler.
608  *
609  * All allocations should be performed in @a pool.
610  *
611  * @since New in 1.5.
612  */
613 typedef svn_error_t *(*svn_client_get_commit_log3_t)(
614  const char **log_msg,
615  const char **tmp_file,
616  const apr_array_header_t *commit_items,
617  void *baton,
618  apr_pool_t *pool);
619 
620 /** Callback type used by commit-y operations to get a commit log message
621  * from the caller.
622  *
623  * Set @a *log_msg to the log message for the commit, allocated in @a
624  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
625  * to the path of any temporary file which might be holding that log
626  * message, or @c NULL if no such file exists (though, if @a *log_msg is
627  * @c NULL, this value is undefined). The log message MUST be a UTF8
628  * string with LF line separators.
629  *
630  * @a commit_items is a read-only array of #svn_client_commit_item2_t
631  * structures, which may be fully or only partially filled-in,
632  * depending on the type of commit operation.
633  *
634  * @a baton is provided along with the callback for use by the handler.
635  *
636  * All allocations should be performed in @a pool.
637  *
638  * @deprecated Provided for backward compatibility with the 1.3 API.
639  */
640 typedef svn_error_t *(*svn_client_get_commit_log2_t)(
641  const char **log_msg,
642  const char **tmp_file,
643  const apr_array_header_t *commit_items,
644  void *baton,
645  apr_pool_t *pool);
646 
647 /** Callback type used by commit-y operations to get a commit log message
648  * from the caller.
649  *
650  * Set @a *log_msg to the log message for the commit, allocated in @a
651  * pool, or @c NULL if wish to abort the commit process. Set @a *tmp_file
652  * to the path of any temporary file which might be holding that log
653  * message, or @c NULL if no such file exists (though, if @a *log_msg is
654  * @c NULL, this value is undefined). The log message MUST be a UTF8
655  * string with LF line separators.
656  *
657  * @a commit_items is a read-only array of #svn_client_commit_item_t
658  * structures, which may be fully or only partially filled-in,
659  * depending on the type of commit operation.
660  *
661  * @a baton is provided along with the callback for use by the handler.
662  *
663  * All allocations should be performed in @a pool.
664  *
665  * @deprecated Provided for backward compatibility with the 1.2 API.
666  */
667 typedef svn_error_t *(*svn_client_get_commit_log_t)(
668  const char **log_msg,
669  const char **tmp_file,
670  apr_array_header_t *commit_items,
671  void *baton,
672  apr_pool_t *pool);
673 
674 /** @} */
675 
676 /**
677  * Client blame
678  *
679  * @defgroup clnt_blame Client blame functionality
680  *
681  * @{
682  */
683 
684 /** Callback type used by svn_client_blame5() to notify the caller
685  * that line @a line_no of the blamed file was last changed in @a revision
686  * which has the revision properties @a rev_props, and that the contents were
687  * @a line.
688  *
689  * @a start_revnum and @a end_revnum contain the start and end revision
690  * number of the entire blame operation, as determined from the repository
691  * inside svn_client_blame5(). This can be useful for the blame receiver
692  * to format the blame output.
693  *
694  * If svn_client_blame5() was called with @a include_merged_revisions set to
695  * TRUE, @a merged_revision, @a merged_rev_props and @a merged_path will be
696  * set, otherwise they will be NULL. @a merged_path will be set to the
697  * absolute repository path.
698  *
699  * All allocations should be performed in @a pool.
700  *
701  * @note If there is no blame information for this line, @a revision will be
702  * invalid and @a rev_props will be NULL. In this case @a local_change
703  * will be true if the reason there is no blame information is that the line
704  * was modified locally. In all other cases @a local_change will be false.
705  *
706  * @since New in 1.7.
707  */
708 typedef svn_error_t *(*svn_client_blame_receiver3_t)(
709  void *baton,
710  svn_revnum_t start_revnum,
711  svn_revnum_t end_revnum,
712  apr_int64_t line_no,
713  svn_revnum_t revision,
714  apr_hash_t *rev_props,
715  svn_revnum_t merged_revision,
716  apr_hash_t *merged_rev_props,
717  const char *merged_path,
718  const char *line,
719  svn_boolean_t local_change,
720  apr_pool_t *pool);
721 
722 /**
723  * Similar to #svn_client_blame_receiver3_t, but with separate author and
724  * date revision properties instead of all revision properties, and without
725  * information about local changes.
726  *
727  * @deprecated Provided for backward compatibility with the 1.6 API.
728  *
729  * @since New in 1.5.
730  */
731 typedef svn_error_t *(*svn_client_blame_receiver2_t)(
732  void *baton,
733  apr_int64_t line_no,
734  svn_revnum_t revision,
735  const char *author,
736  const char *date,
737  svn_revnum_t merged_revision,
738  const char *merged_author,
739  const char *merged_date,
740  const char *merged_path,
741  const char *line,
742  apr_pool_t *pool);
743 
744 /**
745  * Similar to #svn_client_blame_receiver2_t, but without @a merged_revision,
746  * @a merged_author, @a merged_date, or @a merged_path members.
747  *
748  * @note New in 1.4 is that the line is defined to contain only the line
749  * content (and no [partial] EOLs; which was undefined in older versions).
750  * Using this callback with svn_client_blame() or svn_client_blame2()
751  * will still give you the old behaviour.
752  *
753  * @deprecated Provided for backward compatibility with the 1.4 API.
754  */
755 typedef svn_error_t *(*svn_client_blame_receiver_t)(
756  void *baton,
757  apr_int64_t line_no,
758  svn_revnum_t revision,
759  const char *author,
760  const char *date,
761  const char *line,
762  apr_pool_t *pool);
763 
764 
765 /** @} */
766 
767 /**
768  * Client diff
769  *
770  * @defgroup clnt_diff Client diff functionality
771  *
772  * @{
773  */
774 /** The difference type in an svn_diff_summarize_t structure.
775  *
776  * @since New in 1.4.
777  */
779 {
780  /** An item with no text modifications */
782 
783  /** An added item */
785 
786  /** An item with text modifications */
788 
789  /** A deleted item */
792 
793 
794 /** A struct that describes the diff of an item. Passed to
795  * #svn_client_diff_summarize_func_t.
796  *
797  * @note Fields may be added to the end of this structure in future
798  * versions. Therefore, users shouldn't allocate structures of this
799  * type, to preserve binary compatibility.
800  *
801  * @since New in 1.4.
802  */
804 {
805  /** Path relative to the target. If the target is a file, path is
806  * the empty string. */
807  const char *path;
808 
809  /** Change kind */
811 
812  /** Properties changed? For consistency with 'svn status' output,
813  * this should be false if summarize_kind is _added or _deleted. */
815 
816  /** File or dir */
819 
820 /**
821  * Return a duplicate of @a diff, allocated in @a pool. No part of the new
822  * structure will be shared with @a diff.
823  *
824  * @since New in 1.4.
825  */
828  apr_pool_t *pool);
829 
830 
831 /** A callback used in svn_client_diff_summarize2() and
832  * svn_client_diff_summarize_peg2() for reporting a @a diff summary.
833  *
834  * All allocations should be performed in @a pool.
835  *
836  * @a baton is a closure object; it should be provided by the implementation,
837  * and passed by the caller.
838  *
839  * @since New in 1.4.
840  */
841 typedef svn_error_t *(*svn_client_diff_summarize_func_t)(
842  const svn_client_diff_summarize_t *diff,
843  void *baton,
844  apr_pool_t *pool);
845 
846 
847 
848 /** @} */
849 
850 
851 /**
852  * Client context
853  *
854  * @defgroup clnt_ctx Client context management
855  *
856  * @{
857  */
858 
859 /** A client context structure, which holds client specific callbacks,
860  * batons, serves as a cache for configuration options, and other various
861  * and sundry things. In order to avoid backwards compatibility problems
862  * clients should use svn_client_create_context() to allocate and
863  * initialize this structure instead of doing so themselves.
864  */
865 typedef struct svn_client_ctx_t
866 {
867  /** main authentication baton. */
869 
870  /** notification callback function.
871  * This will be called by notify_func2() by default.
872  * @deprecated Provided for backward compatibility with the 1.1 API.
873  * Use @c notify_func2 instead. */
875 
876  /** notification callback baton for notify_func()
877  * @deprecated Provided for backward compatibility with the 1.1 API.
878  * Use @c notify_baton2 instead */
880 
881  /** Log message callback function. NULL means that Subversion
882  * should try not attempt to fetch a log message.
883  * @deprecated Provided for backward compatibility with the 1.2 API.
884  * Use @c log_msg_func2 instead. */
886 
887  /** log message callback baton
888  * @deprecated Provided for backward compatibility with the 1.2 API.
889  * Use @c log_msg_baton2 instead. */
891 
892  /** a hash mapping of <tt>const char *</tt> configuration file names to
893  * #svn_config_t *'s. For example, the '~/.subversion/config' file's
894  * contents should have the key "config". May be left unset (or set to
895  * NULL) to use the built-in default settings and not use any configuration.
896  */
897  apr_hash_t *config;
898 
899  /** a callback to be used to see if the client wishes to cancel the running
900  * operation. */
902 
903  /** a baton to pass to the cancellation callback. */
905 
906  /** notification function, defaulting to a function that forwards
907  * to notify_func(). If @c NULL, it will not be invoked.
908  * @since New in 1.2. */
910 
911  /** notification baton for notify_func2().
912  * @since New in 1.2. */
914 
915  /** Log message callback function. NULL means that Subversion
916  * should try log_msg_func.
917  * @since New in 1.3. */
919 
920  /** callback baton for log_msg_func2
921  * @since New in 1.3. */
923 
924  /** Notification callback for network progress information.
925  * May be NULL if not used.
926  * @since New in 1.3. */
928 
929  /** Callback baton for progress_func.
930  * @since New in 1.3. */
932 
933  /** Log message callback function. NULL means that Subversion
934  * should try @c log_msg_func2, then @c log_msg_func.
935  * @since New in 1.5. */
937 
938  /** The callback baton for @c log_msg_func3.
939  * @since New in 1.5. */
941 
942  /** MIME types map.
943  * @since New in 1.5. */
944  apr_hash_t *mimetypes_map;
945 
946  /** Conflict resolution callback and baton, if available.
947  * @since New in 1.5. */
949  void *conflict_baton;
950 
951  /** Custom client name string, or @c NULL.
952  * @since New in 1.5. */
953  const char *client_name;
954 
955  /** Conflict resolution callback and baton, if available. NULL means that
956  * subversion should try @c conflict_func.
957  * @since New in 1.7. */
959  void *conflict_baton2;
960 
961  /** A working copy context for the client operation to use.
962  * This is initialized by svn_client_create_context() and should never
963  * be @c NULL.
964  *
965  * @since New in 1.7. */
967 
969 
970 /** Initialize a client context.
971  * Set @a *ctx to a client context object, allocated in @a pool, that
972  * represents a particular instance of an svn client.
973  *
974  * In order to avoid backwards compatibility problems, clients must
975  * use this function to initialize and allocate the
976  * #svn_client_ctx_t structure rather than doing so themselves, as
977  * the size of this structure may change in the future.
978  *
979  * The current implementation never returns error, but callers should
980  * still check for error, for compatibility with future versions.
981  */
982 svn_error_t *
984  apr_pool_t *pool);
985 
986 /** @} end group: Client context management */
987 
988 /**
989  * @name Authentication information file names
990  *
991  * Names of files that contain authentication information.
992  *
993  * These filenames are decided by libsvn_client, since this library
994  * implements all the auth-protocols; libsvn_wc does nothing but
995  * blindly store and retrieve these files from protected areas.
996  *
997  * @defgroup clnt_auth_filenames Client authentication file names
998  * @{
999  */
1000 #define SVN_CLIENT_AUTH_USERNAME "username"
1001 #define SVN_CLIENT_AUTH_PASSWORD "password"
1002 /** @} group end: Authentication information file names */
1003 
1004 /** Client argument processing
1005  *
1006  * @defgroup clnt_cmdline Client command-line processing
1007  *
1008  * @{
1009  */
1010 
1011 /**
1012  * Pull remaining target arguments from @a os into @a *targets_p,
1013  * converting them to UTF-8, followed by targets from @a known_targets
1014  * (which might come from, for example, the "--targets" command line option).
1015  *
1016  * Process each target in one of the following ways. For a repository-
1017  * relative URL: resolve to a full URL, contacting the repository if
1018  * necessary to do so, and then treat as a full URL. For a URL: do some
1019  * IRI-to-URI encoding and some auto-escaping, and canonicalize. For a
1020  * local path: canonicalize case and path separators.
1021  *
1022  * If @a keep_last_origpath_on_truepath_collision is TRUE, and there are
1023  * exactly two targets which both case-canonicalize to the same path, the last
1024  * target will be returned in the original non-case-canonicalized form.
1025  *
1026  * Allocate @a *targets_p and its elements in @a pool.
1027  *
1028  * @a ctx is required for possible repository authentication.
1029  *
1030  * If a path has the same name as a Subversion working copy
1031  * administrative directory, return #SVN_ERR_RESERVED_FILENAME_SPECIFIED;
1032  * if multiple reserved paths are encountered, return a chain of
1033  * errors, all of which are #SVN_ERR_RESERVED_FILENAME_SPECIFIED. Do
1034  * not return this type of error in a chain with any other type of
1035  * error, and if this is the only type of error encountered, complete
1036  * the operation before returning the error(s).
1037  *
1038  * @since New in 1.7
1039  */
1040 svn_error_t *
1041 svn_client_args_to_target_array2(apr_array_header_t **targets_p,
1042  apr_getopt_t *os,
1043  const apr_array_header_t *known_targets,
1044  svn_client_ctx_t *ctx,
1045  svn_boolean_t keep_last_origpath_on_truepath_collision,
1046  apr_pool_t *pool);
1047 
1048 /*
1049  * Similar to svn_client_args_to_target_array2() but with
1050  * @a keep_last_origpath_on_truepath_collision always set to FALSE.
1051  *
1052  * @deprecated Provided for backward compatibility with the 1.6 API.
1053  */
1055 svn_error_t *
1056 svn_client_args_to_target_array(apr_array_header_t **targets_p,
1057  apr_getopt_t *os,
1058  const apr_array_header_t *known_targets,
1059  svn_client_ctx_t *ctx,
1060  apr_pool_t *pool);
1061 
1062 /** @} group end: Client command-line processing */
1063 
1064 /** @} */
1065 
1066 /**
1067  * Client working copy management functions
1068  *
1069  * @defgroup clnt_wc Client working copy management
1070  *
1071  * @{
1072  */
1073 
1074 /**
1075  * @defgroup clnt_wc_checkout Checkout
1076  *
1077  * @{
1078  */
1079 
1080 
1081 /**
1082  * Checkout a working copy from a repository.
1083  *
1084  * @param[out] result_rev If non-NULL, the value of the revision checked
1085  * out from the repository.
1086  * @param[in] URL The repository URL of the checkout source.
1087  * @param[in] path The root of the new working copy.
1088  * @param[in] peg_revision The peg revision.
1089  * @param[in] revision The operative revision.
1090  * @param[in] depth The depth of the operation. If #svn_depth_unknown,
1091  * then behave as if for #svn_depth_infinity, except in the case
1092  * of resuming a previous checkout of @a path (i.e., updating),
1093  * in which case use the depth of the existing working copy.
1094  * @param[in] ignore_externals If @c TRUE, don't process externals
1095  * definitions as part of this operation.
1096  * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
1097  * unversioned items that obstruct incoming paths. Only
1098  * obstructions of the same type (file or dir) as the added
1099  * item are tolerated. The text of obstructing files is left
1100  * as-is, effectively treating it as a user modification after
1101  * the checkout. Working properties of obstructing items are
1102  * set equal to the base properties. <br>
1103  * If @c FALSE, then abort if there are any unversioned
1104  * obstructing items.
1105  * @param[in] ctx The standard client context, used for authentication and
1106  * notification.
1107  * @param[in] pool Used for any temporary allocation.
1108  *
1109  * @return A pointer to an #svn_error_t of the type (this list is not
1110  * exhaustive): <br>
1111  * #SVN_ERR_UNSUPPORTED_FEATURE if @a URL refers to a file rather
1112  * than a directory; <br>
1113  * #SVN_ERR_RA_ILLEGAL_URL if @a URL does not exist; <br>
1114  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1115  * #svn_opt_revision_number, #svn_opt_revision_head, or
1116  * #svn_opt_revision_date. <br>
1117  * If no error occurred, return #SVN_NO_ERROR.
1118  *
1119  * @since New in 1.5.
1120  *
1121  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1122  * a discussion of operative and peg revisions.
1123  */
1124 svn_error_t *
1126  const char *URL,
1127  const char *path,
1128  const svn_opt_revision_t *peg_revision,
1129  const svn_opt_revision_t *revision,
1130  svn_depth_t depth,
1131  svn_boolean_t ignore_externals,
1132  svn_boolean_t allow_unver_obstructions,
1133  svn_client_ctx_t *ctx,
1134  apr_pool_t *pool);
1135 
1136 
1137 /**
1138  * Similar to svn_client_checkout3() but with @a allow_unver_obstructions
1139  * always set to FALSE, and @a depth set according to @a recurse: if
1140  * @a recurse is TRUE, @a depth is #svn_depth_infinity, if @a recurse
1141  * is FALSE, @a depth is #svn_depth_files.
1142  *
1143  * @deprecated Provided for backward compatibility with the 1.4 API.
1144  */
1146 svn_error_t *
1148  const char *URL,
1149  const char *path,
1150  const svn_opt_revision_t *peg_revision,
1151  const svn_opt_revision_t *revision,
1152  svn_boolean_t recurse,
1153  svn_boolean_t ignore_externals,
1154  svn_client_ctx_t *ctx,
1155  apr_pool_t *pool);
1156 
1157 
1158 /**
1159  * Similar to svn_client_checkout2(), but with @a peg_revision
1160  * always set to #svn_opt_revision_unspecified and
1161  * @a ignore_externals always set to FALSE.
1162  *
1163  * @deprecated Provided for backward compatibility with the 1.1 API.
1164  */
1166 svn_error_t *
1167 svn_client_checkout(svn_revnum_t *result_rev,
1168  const char *URL,
1169  const char *path,
1170  const svn_opt_revision_t *revision,
1171  svn_boolean_t recurse,
1172  svn_client_ctx_t *ctx,
1173  apr_pool_t *pool);
1174 /** @} */
1175 
1176 /**
1177  * @defgroup Update Bring a working copy up-to-date with a repository
1178  *
1179  * @{
1180  *
1181  */
1182 
1183 /**
1184  * Update working trees @a paths to @a revision, authenticating with the
1185  * authentication baton cached in @a ctx. @a paths is an array of const
1186  * char * paths to be updated. Unversioned paths that are direct children
1187  * of a versioned path will cause an update that attempts to add that path;
1188  * other unversioned paths are skipped. If @a result_revs is not NULL,
1189  * @a *result_revs will be set to an array of svn_revnum_t with each
1190  * element set to the revision to which @a revision was resolved for the
1191  * corresponding element of @a paths.
1192  *
1193  * @a revision must be of kind #svn_opt_revision_number,
1194  * #svn_opt_revision_head, or #svn_opt_revision_date. If @a
1195  * revision does not meet these requirements, return the error
1196  * #SVN_ERR_CLIENT_BAD_REVISION.
1197  *
1198  * The paths in @a paths can be from multiple working copies from multiple
1199  * repositories, but even if they all come from the same repository there
1200  * is no guarantee that revision represented by #svn_opt_revision_head
1201  * will remain the same as each path is updated.
1202  *
1203  * If @a ignore_externals is set, don't process externals definitions
1204  * as part of this operation.
1205  *
1206  * If @a depth is #svn_depth_infinity, update fully recursively.
1207  * Else if it is #svn_depth_immediates or #svn_depth_files, update
1208  * each target and its file entries, but not its subdirectories. Else
1209  * if #svn_depth_empty, update exactly each target, nonrecursively
1210  * (essentially, update the target's properties).
1211  *
1212  * If @a depth is #svn_depth_unknown, take the working depth from
1213  * @a paths and then behave as described above.
1214  *
1215  * If @a depth_is_sticky is set and @a depth is not
1216  * #svn_depth_unknown, then in addition to updating PATHS, also set
1217  * their sticky ambient depth value to @a depth.
1218  *
1219  * If @a allow_unver_obstructions is TRUE then the update tolerates
1220  * existing unversioned items that obstruct added paths. Only
1221  * obstructions of the same type (file or dir) as the added item are
1222  * tolerated. The text of obstructing files is left as-is, effectively
1223  * treating it as a user modification after the update. Working
1224  * properties of obstructing items are set equal to the base properties.
1225  * If @a allow_unver_obstructions is FALSE then the update will abort
1226  * if there are any unversioned obstructing items.
1227  *
1228  * If @a adds_as_modification is TRUE, a local addition at the same path
1229  * as an incoming addition of the same node kind results in a normal node
1230  * with a possible local modification, instead of a tree conflict.
1231  *
1232  * If @a make_parents is TRUE, create any non-existent parent
1233  * directories also by checking them out at depth=empty.
1234  *
1235  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
1236  * @a ctx->notify_baton2 for each item handled by the update, and also for
1237  * files restored from text-base. If @a ctx->cancel_func is non-NULL, invoke
1238  * it passing @a ctx->cancel_baton at various places during the update.
1239  *
1240  * Use @a pool for any temporary allocation.
1241  *
1242  * @todo Multiple Targets
1243  * - Up for debate: an update on multiple targets is *not* atomic.
1244  * Right now, svn_client_update only takes one path. What's
1245  * debatable is whether this should ever change. On the one hand,
1246  * it's kind of losing to have the client application loop over
1247  * targets and call svn_client_update() on each one; each call to
1248  * update initializes a whole new repository session (network
1249  * overhead, etc.) On the other hand, it's a very simple
1250  * implementation, and allows for the possibility that different
1251  * targets may come from different repositories.
1252  *
1253  * @since New in 1.7.
1254  */
1255 svn_error_t *
1256 svn_client_update4(apr_array_header_t **result_revs,
1257  const apr_array_header_t *paths,
1258  const svn_opt_revision_t *revision,
1259  svn_depth_t depth,
1260  svn_boolean_t depth_is_sticky,
1261  svn_boolean_t ignore_externals,
1262  svn_boolean_t allow_unver_obstructions,
1263  svn_boolean_t adds_as_modification,
1264  svn_boolean_t make_parents,
1265  svn_client_ctx_t *ctx,
1266  apr_pool_t *pool);
1267 
1268 /**
1269  * Similar to svn_client_update4() but with @a make_parents always set
1270  * to FALSE and @a adds_as_modification set to TRUE.
1271  *
1272  * @deprecated Provided for backward compatibility with the 1.6 API.
1273  * @since New in 1.5.
1274  */
1276 svn_error_t *
1277 svn_client_update3(apr_array_header_t **result_revs,
1278  const apr_array_header_t *paths,
1279  const svn_opt_revision_t *revision,
1280  svn_depth_t depth,
1281  svn_boolean_t depth_is_sticky,
1282  svn_boolean_t ignore_externals,
1283  svn_boolean_t allow_unver_obstructions,
1284  svn_client_ctx_t *ctx,
1285  apr_pool_t *pool);
1286 
1287 /**
1288  * Similar to svn_client_update3() but with @a allow_unver_obstructions
1289  * always set to FALSE, @a depth_is_sticky to FALSE, and @a depth set
1290  * according to @a recurse: if @a recurse is TRUE, set @a depth to
1291  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
1292  * #svn_depth_files.
1293  *
1294  * @deprecated Provided for backward compatibility with the 1.4 API.
1295  */
1297 svn_error_t *
1298 svn_client_update2(apr_array_header_t **result_revs,
1299  const apr_array_header_t *paths,
1300  const svn_opt_revision_t *revision,
1301  svn_boolean_t recurse,
1302  svn_boolean_t ignore_externals,
1303  svn_client_ctx_t *ctx,
1304  apr_pool_t *pool);
1305 
1306 /**
1307  * Similar to svn_client_update2() except that it accepts only a single
1308  * target in @a path, returns a single revision if @a result_rev is
1309  * not NULL, and @a ignore_externals is always set to FALSE.
1310  *
1311  * @deprecated Provided for backward compatibility with the 1.1 API.
1312  */
1314 svn_error_t *
1315 svn_client_update(svn_revnum_t *result_rev,
1316  const char *path,
1317  const svn_opt_revision_t *revision,
1318  svn_boolean_t recurse,
1319  svn_client_ctx_t *ctx,
1320  apr_pool_t *pool);
1321 /** @} */
1322 
1323 /**
1324  * @defgroup Switch Switch a working copy to another location.
1325  *
1326  * @{
1327  */
1328 
1329 /**
1330  * Switch an existing working copy directory to a different repository
1331  * location.
1332  *
1333  * This is normally used to switch a working copy directory over to another
1334  * line of development, such as a branch or a tag. Switching an existing
1335  * working copy directory is more efficient than checking out @a url from
1336  * scratch.
1337  *
1338  * @param[out] result_rev If non-NULL, the value of the revision to which
1339  * the working copy was actually switched.
1340  * @param[in] path The directory to be switched. This need not be the
1341  * root of a working copy.
1342  * @param[in] url The repository URL to switch to.
1343  * @param[in] peg_revision The peg revision.
1344  * @param[in] revision The operative revision.
1345  * @param[in] depth The depth of the operation. If #svn_depth_infinity,
1346  * switch fully recursively. Else if #svn_depth_immediates,
1347  * switch @a path and its file children (if any), and
1348  * switch subdirectories but do not update them. Else if
1349  * #svn_depth_files, switch just file children, ignoring
1350  * subdirectories completely. Else if #svn_depth_empty,
1351  * switch just @a path and touch nothing underneath it.
1352  * @param[in] depth_is_sticky If @c TRUE, and @a depth is not
1353  * #svn_depth_unknown, then in addition to switching @a path, also
1354  * set its sticky ambient depth value to @a depth.
1355  * @param[in] ignore_externals If @c TRUE, don't process externals
1356  * definitions as part of this operation.
1357  * @param[in] allow_unver_obstructions If @c TRUE, then tolerate existing
1358  * unversioned items that obstruct incoming paths. Only
1359  * obstructions of the same type (file or dir) as the added
1360  * item are tolerated. The text of obstructing files is left
1361  * as-is, effectively treating it as a user modification after
1362  * the checkout. Working properties of obstructing items are
1363  * set equal to the base properties. <br>
1364  * If @c FALSE, then abort if there are any unversioned
1365  * obstructing items.
1366  * @param[in] ignore_ancestry If @c FALSE, then verify that the file
1367  * or directory at @a path shares some common version control
1368  * ancestry with the switch URL location (represented by the
1369  * combination of @a url, @a peg_revision, and @a revision),
1370  * and returning #SVN_ERR_CLIENT_UNRELATED_RESOURCES if they
1371  * do not. If @c TRUE, no such sanity checks are performed.
1372  *
1373  * @param[in] ctx The standard client context, used for authentication and
1374  * notification. The notifier is invoked for paths affected by
1375  * the switch, and also for files which may be restored from the
1376  * pristine store after being previously removed from the working
1377  * copy.
1378  * @param[in] pool Used for any temporary allocation.
1379  *
1380  * @return A pointer to an #svn_error_t of the type (this list is not
1381  * exhaustive): <br>
1382  * #SVN_ERR_CLIENT_BAD_REVISION if @a revision is not one of
1383  * #svn_opt_revision_number, #svn_opt_revision_head, or
1384  * #svn_opt_revision_date. <br>
1385  * If no error occurred, return #SVN_NO_ERROR.
1386  *
1387  * @since New in 1.7.
1388  *
1389  * @see #svn_depth_t <br> #svn_client_ctx_t <br> @ref clnt_revisions for
1390  * a discussion of operative and peg revisions.
1391  */
1392 svn_error_t *
1393 svn_client_switch3(svn_revnum_t *result_rev,
1394  const char *path,
1395  const char *url,
1396  const svn_opt_revision_t *peg_revision,
1397  const svn_opt_revision_t *revision,
1398  svn_depth_t depth,
1399  svn_boolean_t depth_is_sticky,
1400  svn_boolean_t ignore_externals,
1401  svn_boolean_t allow_unver_obstructions,
1402  svn_boolean_t ignore_ancestry,
1403  svn_client_ctx_t *ctx,
1404  apr_pool_t *pool);
1405 
1406 
1407 /**
1408  * Similar to svn_client_switch3() but with @a ignore_ancestry always
1409  * set to TRUE.
1410  *
1411  * @since New in 1.5.
1412  * @deprecated Provided for backward compatibility with the 1.4 API.
1413  */
1415 svn_error_t *
1416 svn_client_switch2(svn_revnum_t *result_rev,
1417  const char *path,
1418  const char *url,
1419  const svn_opt_revision_t *peg_revision,
1420  const svn_opt_revision_t *revision,
1421  svn_depth_t depth,
1422  svn_boolean_t depth_is_sticky,
1423  svn_boolean_t ignore_externals,
1424  svn_boolean_t allow_unver_obstructions,
1425  svn_client_ctx_t *ctx,
1426  apr_pool_t *pool);
1427 
1428 
1429 /**
1430  * Similar to svn_client_switch2() but with @a allow_unver_obstructions,
1431  * @a ignore_externals, and @a depth_is_sticky always set to FALSE,
1432  * and @a depth set according to @a recurse: if @a recurse is TRUE,
1433  * set @a depth to #svn_depth_infinity, if @a recurse is FALSE, set
1434  * @a depth to #svn_depth_files.
1435  *
1436  * @deprecated Provided for backward compatibility with the 1.4 API.
1437  */
1439 svn_error_t *
1440 svn_client_switch(svn_revnum_t *result_rev,
1441  const char *path,
1442  const char *url,
1443  const svn_opt_revision_t *revision,
1444  svn_boolean_t recurse,
1445  svn_client_ctx_t *ctx,
1446  apr_pool_t *pool);
1447 
1448 /** @} */
1449 
1450 /**
1451  * @defgroup Add Begin versioning files/directories in a working copy.
1452  *
1453  * @{
1454  */
1455 
1456 /**
1457  * Schedule a working copy @a path for addition to the repository.
1458  *
1459  * If @a depth is #svn_depth_empty, add just @a path and nothing
1460  * below it. If #svn_depth_files, add @a path and any file
1461  * children of @a path. If #svn_depth_immediates, add @a path, any
1462  * file children, and any immediate subdirectories (but nothing
1463  * underneath those subdirectories). If #svn_depth_infinity, add
1464  * @a path and everything under it fully recursively.
1465  *
1466  * @a path's parent must be under revision control already (unless
1467  * @a add_parents is TRUE), but @a path is not. If @a recursive is
1468  * set, then assuming @a path is a directory, all of its contents will
1469  * be scheduled for addition as well.
1470  *
1471  * If @a force is not set and @a path is already under version
1472  * control, return the error #SVN_ERR_ENTRY_EXISTS. If @a force is
1473  * set, do not error on already-versioned items. When used on a
1474  * directory in conjunction with the @a recursive flag, this has the
1475  * effect of scheduling for addition unversioned files and directories
1476  * scattered deep within a versioned tree.
1477  *
1478  * If @a ctx->notify_func2 is non-NULL, then for each added item, call
1479  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the
1480  * added item.
1481  *
1482  * If @a no_ignore is FALSE, don't add any file or directory (or recurse
1483  * into any directory) that is unversioned and found by recursion (as
1484  * opposed to being the explicit target @a path) and whose name matches the
1485  * svn:ignore property on its parent directory or the global-ignores list in
1486  * @a ctx->config. If @a no_ignore is TRUE, do include such files and
1487  * directories. (Note that an svn:ignore property can influence this
1488  * behaviour only when recursing into an already versioned directory with @a
1489  * force.)
1490  *
1491  * If @a add_parents is TRUE, recurse up @a path's directory and look for
1492  * a versioned directory. If found, add all intermediate paths between it
1493  * and @a path. If not found, return #SVN_ERR_CLIENT_NO_VERSIONED_PARENT.
1494  *
1495  * @par Important:
1496  * This is a *scheduling* operation. No changes will
1497  * happen to the repository until a commit occurs. This scheduling
1498  * can be removed with svn_client_revert2().
1499  *
1500  * @since New in 1.5.
1501  */
1502 svn_error_t *
1503 svn_client_add4(const char *path,
1504  svn_depth_t depth,
1505  svn_boolean_t force,
1506  svn_boolean_t no_ignore,
1507  svn_boolean_t add_parents,
1508  svn_client_ctx_t *ctx,
1509  apr_pool_t *pool);
1510 
1511 /**
1512  * Similar to svn_client_add4(), but with @a add_parents always set to
1513  * FALSE and @a depth set according to @a recursive: if TRUE, then
1514  * @a depth is #svn_depth_infinity, if FALSE, then #svn_depth_empty.
1515  *
1516  * @deprecated Provided for backward compatibility with the 1.4 API.
1517  */
1519 svn_error_t *
1520 svn_client_add3(const char *path,
1521  svn_boolean_t recursive,
1522  svn_boolean_t force,
1523  svn_boolean_t no_ignore,
1524  svn_client_ctx_t *ctx,
1525  apr_pool_t *pool);
1526 
1527 /**
1528  * Similar to svn_client_add3(), but with @a no_ignore always set to
1529  * FALSE.
1530  *
1531  * @deprecated Provided for backward compatibility with the 1.2 API.
1532  */
1534 svn_error_t *
1535 svn_client_add2(const char *path,
1536  svn_boolean_t recursive,
1537  svn_boolean_t force,
1538  svn_client_ctx_t *ctx,
1539  apr_pool_t *pool);
1540 
1541 /**
1542  * Similar to svn_client_add2(), but with @a force always set to FALSE.
1543  *
1544  * @deprecated Provided for backward compatibility with the 1.0 API.
1545  */
1547 svn_error_t *
1548 svn_client_add(const char *path,
1549  svn_boolean_t recursive,
1550  svn_client_ctx_t *ctx,
1551  apr_pool_t *pool);
1552 
1553 /** @} */
1554 
1555 /**
1556  * @defgroup Mkdir Create directories in a working copy or repository.
1557  *
1558  * @{
1559  */
1560 
1561 /** Create a directory, either in a repository or a working copy.
1562  *
1563  * If @a paths contains URLs, use the authentication baton in @a ctx
1564  * and @a message to immediately attempt to commit the creation of the
1565  * directories in @a paths in the repository.
1566  *
1567  * Else, create the directories on disk, and attempt to schedule them
1568  * for addition (using svn_client_add(), whose docstring you should
1569  * read).
1570  *
1571  * If @a make_parents is TRUE, create any non-existent parent directories
1572  * also.
1573  *
1574  * If non-NULL, @a revprop_table is a hash table holding additional,
1575  * custom revision properties (<tt>const char *</tt> names mapped to
1576  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1577  * the event that this is a committing operation. This table cannot
1578  * contain any standard Subversion properties.
1579  *
1580  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1581  * combo that this function can use to query for a commit log message
1582  * when one is needed.
1583  *
1584  * If @a ctx->notify_func2 is non-NULL, when the directory has been created
1585  * (successfully) in the working copy, call @a ctx->notify_func2 with
1586  * @a ctx->notify_baton2 and the path of the new directory. Note that this is
1587  * only called for items added to the working copy.
1588  *
1589  * If @a commit_callback is non-NULL, then for each successful commit, call
1590  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1591  * the commit.
1592  *
1593  * @since New in 1.7.
1594  */
1595 svn_error_t *
1596 svn_client_mkdir4(const apr_array_header_t *paths,
1597  svn_boolean_t make_parents,
1598  const apr_hash_t *revprop_table,
1599  svn_commit_callback2_t commit_callback,
1600  void *commit_baton,
1601  svn_client_ctx_t *ctx,
1602  apr_pool_t *pool);
1603 
1604 /**
1605  * Similar to svn_client_mkdir4(), but returns the commit info in
1606  * @a *commit_info_p rather than through a callback function.
1607  *
1608  * @since New in 1.5.
1609  * @deprecated Provided for backward compatibility with the 1.6 API.
1610  */
1612 svn_error_t *
1613 svn_client_mkdir3(svn_commit_info_t **commit_info_p,
1614  const apr_array_header_t *paths,
1615  svn_boolean_t make_parents,
1616  const apr_hash_t *revprop_table,
1617  svn_client_ctx_t *ctx,
1618  apr_pool_t *pool);
1619 
1620 
1621 /**
1622  * Same as svn_client_mkdir3(), but with @a make_parents always FALSE,
1623  * and @a revprop_table always NULL.
1624  *
1625  * @since New in 1.3.
1626  * @deprecated Provided for backward compatibility with the 1.4 API.
1627  */
1629 svn_error_t *
1630 svn_client_mkdir2(svn_commit_info_t **commit_info_p,
1631  const apr_array_header_t *paths,
1632  svn_client_ctx_t *ctx,
1633  apr_pool_t *pool);
1634 
1635 /**
1636  * Same as svn_client_mkdir2(), but takes the #svn_client_commit_info_t
1637  * type for @a commit_info_p.
1638  *
1639  * @deprecated Provided for backward compatibility with the 1.2 API.
1640  */
1642 svn_error_t *
1644  const apr_array_header_t *paths,
1645  svn_client_ctx_t *ctx,
1646  apr_pool_t *pool);
1647 
1648 /** @} */
1649 
1650 /**
1651  * @defgroup Delete Remove files/directories from a working copy or repository.
1652  *
1653  * @{
1654  */
1655 
1656 /** Delete items from a repository or working copy.
1657  *
1658  * If the paths in @a paths are URLs, use the authentication baton in
1659  * @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to
1660  * immediately attempt to commit a deletion of the URLs from the
1661  * repository. Every path must belong to the same repository.
1662  *
1663  * Else, schedule the working copy paths in @a paths for removal from
1664  * the repository. Each path's parent must be under revision control.
1665  * This is just a *scheduling* operation. No changes will happen to
1666  * the repository until a commit occurs. This scheduling can be
1667  * removed with svn_client_revert2(). If a path is a file it is
1668  * immediately removed from the working copy. If the path is a
1669  * directory it will remain in the working copy but all the files, and
1670  * all unversioned items, it contains will be removed. If @a force is
1671  * not set then this operation will fail if any path contains locally
1672  * modified and/or unversioned items. If @a force is set such items
1673  * will be deleted.
1674  *
1675  * If the paths are working copy paths and @a keep_local is TRUE then
1676  * the paths will not be removed from the working copy, only scheduled
1677  * for removal from the repository. Once the scheduled deletion is
1678  * committed, they will appear as unversioned paths in the working copy.
1679  *
1680  * If non-NULL, @a revprop_table is a hash table holding additional,
1681  * custom revision properties (<tt>const char *</tt> names mapped to
1682  * <tt>svn_string_t *</tt> values) to be set on the new revision in
1683  * the event that this is a committing operation. This table cannot
1684  * contain any standard Subversion properties.
1685  *
1686  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1687  * combo that this function can use to query for a commit log message
1688  * when one is needed.
1689  *
1690  * If @a ctx->notify_func2 is non-NULL, then for each item deleted, call
1691  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the deleted
1692  * item.
1693  *
1694  * If @a commit_callback is non-NULL, then for each successful commit, call
1695  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1696  * the commit.
1697  *
1698  * @since New in 1.7.
1699  */
1700 svn_error_t *
1701 svn_client_delete4(const apr_array_header_t *paths,
1702  svn_boolean_t force,
1703  svn_boolean_t keep_local,
1704  const apr_hash_t *revprop_table,
1705  svn_commit_callback2_t commit_callback,
1706  void *commit_baton,
1707  svn_client_ctx_t *ctx,
1708  apr_pool_t *pool);
1709 
1710 /**
1711  * Similar to svn_client_delete4(), but returns the commit info in
1712  * @a *commit_info_p rather than through a callback function.
1713  *
1714  * @since New in 1.5.
1715  * @deprecated Provided for backward compatibility with the 1.6 API.
1716  */
1718 svn_error_t *
1719 svn_client_delete3(svn_commit_info_t **commit_info_p,
1720  const apr_array_header_t *paths,
1721  svn_boolean_t force,
1722  svn_boolean_t keep_local,
1723  const apr_hash_t *revprop_table,
1724  svn_client_ctx_t *ctx,
1725  apr_pool_t *pool);
1726 
1727 /**
1728  * Similar to svn_client_delete3(), but with @a keep_local always set
1729  * to FALSE, and @a revprop_table passed as NULL.
1730  *
1731  * @deprecated Provided for backward compatibility with the 1.4 API.
1732  */
1734 svn_error_t *
1735 svn_client_delete2(svn_commit_info_t **commit_info_p,
1736  const apr_array_header_t *paths,
1737  svn_boolean_t force,
1738  svn_client_ctx_t *ctx,
1739  apr_pool_t *pool);
1740 
1741 /**
1742  * Similar to svn_client_delete2(), but takes the #svn_client_commit_info_t
1743  * type for @a commit_info_p.
1744  *
1745  * @deprecated Provided for backward compatibility with the 1.2 API.
1746  */
1748 svn_error_t *
1750  const apr_array_header_t *paths,
1751  svn_boolean_t force,
1752  svn_client_ctx_t *ctx,
1753  apr_pool_t *pool);
1754 
1755 
1756 /** @} */
1757 
1758 /**
1759  * @defgroup Import Import files into the repository.
1760  *
1761  * @{
1762  */
1763 
1764 /** Import file or directory @a path into repository directory @a url at
1765  * head, authenticating with the authentication baton cached in @a ctx,
1766  * and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
1767  * for the (implied) commit. If some components of @a url do not exist
1768  * then create parent directories as necessary.
1769  *
1770  * This function reads an unversioned tree from disk and skips any ".svn"
1771  * directories. Even if a file or directory being imported is part of an
1772  * existing WC, this function sees it as unversioned and does not notice any
1773  * existing Subversion properties in it.
1774  *
1775  * If @a path is a directory, the contents of that directory are
1776  * imported directly into the directory identified by @a url. Note that the
1777  * directory @a path itself is not imported -- that is, the basename of
1778  * @a path is not part of the import.
1779  *
1780  * If @a path is a file, then the dirname of @a url is the directory
1781  * receiving the import. The basename of @a url is the filename in the
1782  * repository. In this case if @a url already exists, return error.
1783  *
1784  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
1785  * @a ctx->notify_baton2 as the import progresses, with any of the following
1786  * actions: #svn_wc_notify_commit_added,
1787  * #svn_wc_notify_commit_postfix_txdelta.
1788  *
1789  * Use @a pool for any temporary allocation.
1790  *
1791  * If non-NULL, @a revprop_table is a hash table holding additional,
1792  * custom revision properties (<tt>const char *</tt> names mapped to
1793  * <tt>svn_string_t *</tt> values) to be set on the new revision.
1794  * This table cannot contain any standard Subversion properties.
1795  *
1796  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton
1797  * combo that this function can use to query for a commit log message
1798  * when one is needed.
1799  *
1800  * If @a depth is #svn_depth_empty, import just @a path and nothing
1801  * below it. If #svn_depth_files, import @a path and any file
1802  * children of @a path. If #svn_depth_immediates, import @a path, any
1803  * file children, and any immediate subdirectories (but nothing
1804  * underneath those subdirectories). If #svn_depth_infinity, import
1805  * @a path and everything under it fully recursively.
1806  *
1807  * If @a no_ignore is @c FALSE, don't import any file or directory (or
1808  * recurse into any directory) that is found by recursion (as opposed to
1809  * being the explicit target @a path) and whose name matches the
1810  * global-ignores list in @a ctx->config. If @a no_ignore is @c TRUE, do
1811  * include such files and directories. (Note that svn:ignore properties are
1812  * not involved, as auto-props cannot set properties on directories and even
1813  * if the target is part of a WC the import ignores any existing
1814  * properties.)
1815  *
1816  * If @a ignore_unknown_node_types is @c FALSE, ignore files of which the
1817  * node type is unknown, such as device files and pipes.
1818  *
1819  * If @a commit_callback is non-NULL, then for each successful commit, call
1820  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1821  * the commit.
1822  *
1823  * @since New in 1.7.
1824  */
1825 svn_error_t *
1826 svn_client_import4(const char *path,
1827  const char *url,
1828  svn_depth_t depth,
1829  svn_boolean_t no_ignore,
1830  svn_boolean_t ignore_unknown_node_types,
1831  const apr_hash_t *revprop_table,
1832  svn_commit_callback2_t commit_callback,
1833  void *commit_baton,
1834  svn_client_ctx_t *ctx,
1835  apr_pool_t *pool);
1836 
1837 /**
1838  * Similar to svn_client_import4(), but returns the commit info in
1839  * @a *commit_info_p rather than through a callback function.
1840  *
1841  * @since New in 1.5.
1842  * @deprecated Provided for backward compatibility with the 1.6 API.
1843  */
1845 svn_error_t *
1846 svn_client_import3(svn_commit_info_t **commit_info_p,
1847  const char *path,
1848  const char *url,
1849  svn_depth_t depth,
1850  svn_boolean_t no_ignore,
1851  svn_boolean_t ignore_unknown_node_types,
1852  const apr_hash_t *revprop_table,
1853  svn_client_ctx_t *ctx,
1854  apr_pool_t *pool);
1855 
1856 /**
1857  * Similar to svn_client_import3(), but with @a ignore_unknown_node_types
1858  * always set to @c FALSE, @a revprop_table passed as NULL, and @a
1859  * depth set according to @a nonrecursive: if TRUE, then @a depth is
1860  * #svn_depth_files, else #svn_depth_infinity.
1861  *
1862  * @since New in 1.3.
1863  *
1864  * @deprecated Provided for backward compatibility with the 1.4 API
1865  */
1867 svn_error_t *
1868 svn_client_import2(svn_commit_info_t **commit_info_p,
1869  const char *path,
1870  const char *url,
1871  svn_boolean_t nonrecursive,
1872  svn_boolean_t no_ignore,
1873  svn_client_ctx_t *ctx,
1874  apr_pool_t *pool);
1875 
1876 /**
1877  * Similar to svn_client_import2(), but with @a no_ignore always set
1878  * to FALSE and using the #svn_client_commit_info_t type for
1879  * @a commit_info_p.
1880  *
1881  * @deprecated Provided for backward compatibility with the 1.2 API.
1882  */
1884 svn_error_t *
1886  const char *path,
1887  const char *url,
1888  svn_boolean_t nonrecursive,
1889  svn_client_ctx_t *ctx,
1890  apr_pool_t *pool);
1891 
1892 /** @} */
1893 
1894 /**
1895  * @defgroup Commit Commit local modifications to the repository.
1896  *
1897  * @{
1898  */
1899 
1900 /**
1901  * Commit files or directories into repository, authenticating with
1902  * the authentication baton cached in @a ctx, and using
1903  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to obtain the log message.
1904  * Set @a *commit_info_p to the results of the commit, allocated in @a pool.
1905  *
1906  * @a targets is an array of <tt>const char *</tt> paths to commit. They
1907  * need not be canonicalized nor condensed; this function will take care of
1908  * that. If @a targets has zero elements, then do nothing and return
1909  * immediately without error.
1910  *
1911  * If non-NULL, @a revprop_table is a hash table holding additional,
1912  * custom revision properties (<tt>const char *</tt> names mapped to
1913  * <tt>svn_string_t *</tt> values) to be set on the new revision.
1914  * This table cannot contain any standard Subversion properties.
1915  *
1916  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with
1917  * @a ctx->notify_baton2 as the commit progresses, with any of the following
1918  * actions: #svn_wc_notify_commit_modified, #svn_wc_notify_commit_added,
1919  * #svn_wc_notify_commit_deleted, #svn_wc_notify_commit_replaced,
1920  * #svn_wc_notify_commit_copied, #svn_wc_notify_commit_copied_replaced,
1921  * #svn_wc_notify_commit_postfix_txdelta.
1922  *
1923  * If @a depth is #svn_depth_infinity, commit all changes to and
1924  * below named targets. If @a depth is #svn_depth_empty, commit
1925  * only named targets (that is, only property changes on named
1926  * directory targets, and property and content changes for named file
1927  * targets). If @a depth is #svn_depth_files, behave as above for
1928  * named file targets, and for named directory targets, commit
1929  * property changes on a named directory and all changes to files
1930  * directly inside that directory. If #svn_depth_immediates, behave
1931  * as for #svn_depth_files, and for subdirectories of any named
1932  * directory target commit as though for #svn_depth_empty.
1933  *
1934  * Unlock paths in the repository, unless @a keep_locks is TRUE.
1935  *
1936  * @a changelists is an array of <tt>const char *</tt> changelist
1937  * names, used as a restrictive filter on items that are committed;
1938  * that is, don't commit anything unless it's a member of one of those
1939  * changelists. After the commit completes successfully, remove
1940  * changelist associations from the targets, unless @a
1941  * keep_changelists is set. If @a changelists is
1942  * empty (or altogether @c NULL), no changelist filtering occurs.
1943  *
1944  * If @a commit_as_operations is set to FALSE, when a copy is committed
1945  * all changes below the copy are always committed at the same time
1946  * (independent of the value of @a depth). If @a commit_as_operations is
1947  * #TRUE, changes to descendants are only committed if they are itself
1948  * included via @a depth and targets.
1949  *
1950  * When @a commit_as_operations is #TRUE it is possible to delete a node and
1951  * all its descendants by selecting just the root of the deletion. If it is
1952  * set to #FALSE this will raise an error.
1953  *
1954  * If @a commit_callback is non-NULL, then for each successful commit, call
1955  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
1956  * the commit.
1957  *
1958  * @note #svn_depth_unknown and #svn_depth_exclude must not be passed
1959  * for @a depth.
1960  *
1961  * Use @a pool for any temporary allocations.
1962  *
1963  * @since New in 1.7.
1964  */
1965 svn_error_t *
1966 svn_client_commit5(const apr_array_header_t *targets,
1967  svn_depth_t depth,
1968  svn_boolean_t keep_locks,
1969  svn_boolean_t keep_changelists,
1970  svn_boolean_t commit_as_operations,
1971  const apr_array_header_t *changelists,
1972  const apr_hash_t *revprop_table,
1973  svn_commit_callback2_t commit_callback,
1974  void *commit_baton,
1975  svn_client_ctx_t *ctx,
1976  apr_pool_t *pool);
1977 
1978 /**
1979  * Similar to svn_client_commit5(), but returns the commit info in
1980  * @a *commit_info_p rather than through a callback function. Does not use
1981  * #svn_wc_notify_commit_copied or #svn_wc_notify_commit_copied_replaced
1982  * (preferring #svn_wc_notify_commit_added and
1983  * #svn_wc_notify_commit_replaced, respectively, instead).
1984  *
1985  * Also, if no error is returned and @a (*commit_info_p)->revision is set to
1986  * #SVN_INVALID_REVNUM, then the commit was a no-op; nothing needed to
1987  * be committed.
1988  *
1989  * Sets @a commit_as_operations to FALSE to match Subversion 1.6's behavior.
1990  *
1991  * @since New in 1.5.
1992  * @deprecated Provided for backward compatibility with the 1.6 API.
1993  */
1995 svn_error_t *
1996 svn_client_commit4(svn_commit_info_t **commit_info_p,
1997  const apr_array_header_t *targets,
1998  svn_depth_t depth,
1999  svn_boolean_t keep_locks,
2000  svn_boolean_t keep_changelists,
2001  const apr_array_header_t *changelists,
2002  const apr_hash_t *revprop_table,
2003  svn_client_ctx_t *ctx,
2004  apr_pool_t *pool);
2005 
2006 /**
2007  * Similar to svn_client_commit4(), but always with NULL for
2008  * @a changelist_name, FALSE for @a keep_changelist, NULL for @a
2009  * revprop_table, and @a depth set according to @a recurse: if @a
2010  * recurse is TRUE, use #svn_depth_infinity, else #svn_depth_empty.
2011  *
2012  * @deprecated Provided for backward compatibility with the 1.4 API.
2013  *
2014  * @since New in 1.3.
2015  */
2017 svn_error_t *
2018 svn_client_commit3(svn_commit_info_t **commit_info_p,
2019  const apr_array_header_t *targets,
2020  svn_boolean_t recurse,
2021  svn_boolean_t keep_locks,
2022  svn_client_ctx_t *ctx,
2023  apr_pool_t *pool);
2024 
2025 /**
2026  * Similar to svn_client_commit3(), but uses #svn_client_commit_info_t
2027  * for @a commit_info_p.
2028  *
2029  * @deprecated Provided for backward compatibility with the 1.2 API.
2030  *
2031  * @since New in 1.2.
2032  */
2034 svn_error_t *
2036  const apr_array_header_t *targets,
2037  svn_boolean_t recurse,
2038  svn_boolean_t keep_locks,
2039  svn_client_ctx_t *ctx,
2040  apr_pool_t *pool);
2041 
2042 /**
2043  * Similar to svn_client_commit2(), but with @a keep_locks set to
2044  * TRUE and @a nonrecursive instead of @a recurse.
2045  *
2046  * @deprecated Provided for backward compatibility with the 1.1 API.
2047  */
2049 svn_error_t *
2051  const apr_array_header_t *targets,
2052  svn_boolean_t nonrecursive,
2053  svn_client_ctx_t *ctx,
2054  apr_pool_t *pool);
2055 
2056 /** @} */
2057 
2058 /**
2059  * @defgroup Status Report interesting information about paths in the \
2060  * working copy.
2061  *
2062  * @{
2063  */
2064 
2065 /**
2066  * Structure for holding the "status" of a working copy item.
2067  *
2068  * @note Fields may be added to the end of this structure in future
2069  * versions. Therefore, to preserve binary compatibility, users
2070  * should not directly allocate structures of this type.
2071  *
2072  * @since New in 1.7.
2073  */
2074 typedef struct svn_client_status_t
2075 {
2076  /** The kind of node as recorded in the working copy */
2078 
2079  /** The absolute path to the node */
2080  const char *local_abspath;
2081 
2082  /** The actual size of the working file on disk, or SVN_INVALID_FILESIZE
2083  * if unknown (or if the item isn't a file at all). */
2085 
2086  /** If the path is under version control, versioned is TRUE, otherwise
2087  * FALSE. */
2089 
2090  /** Set to TRUE if the node is the victim of some kind of conflict. */
2092 
2093  /** The status of the node, based on the restructuring changes and if the
2094  * node has no restructuring changes the text and prop status. */
2096 
2097  /** The status of the text of the node, not including restructuring changes.
2098  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2099  * svn_wc_status_modified and svn_wc_status_conflicted. */
2101 
2102  /** The status of the node's properties.
2103  * Valid values are: svn_wc_status_none, svn_wc_status_normal,
2104  * svn_wc_status_modified and svn_wc_status_conflicted. */
2106 
2107  /** a node can be 'locked' if a working copy update is in progress or
2108  * was interrupted. */
2110 
2111  /** a file or directory can be 'copied' if it's scheduled for
2112  * addition-with-history (or part of a subtree that is scheduled as such.).
2113  */
2115 
2116  /** The URL of the repository root. */
2117  const char *repos_root_url;
2118 
2119  /** The UUID of the repository */
2120  const char *repos_uuid;
2121 
2122  /** The in-repository path relative to the repository root. */
2123  const char *repos_relpath;
2124 
2125  /** Base revision. */
2127 
2128  /** Last revision this was changed */
2130 
2131  /** Date of last commit. */
2132  apr_time_t changed_date;
2133 
2134  /** Last commit author of this item */
2135  const char *changed_author;
2136 
2137  /** a file or directory can be 'switched' if the switch command has been
2138  * used. If this is TRUE, then file_external will be FALSE.
2139  */
2141 
2142  /** If the item is a file that was added to the working copy with an
2143  * svn:externals; if file_external is TRUE, then switched is always
2144  * FALSE.
2145  */
2147 
2148  /** The locally present lock. (Values of path, token, owner, comment and
2149  * are available if a lock is present) */
2151 
2152  /** Which changelist this item is part of, or NULL if not part of any. */
2153  const char *changelist;
2154 
2155  /** The depth of the node as recorded in the working copy
2156  * (#svn_depth_unknown for files or when no depth is recorded) */
2158 
2159  /**
2160  * @defgroup svn_wc_status_ood WC out-of-date info from the repository
2161  * @{
2162  *
2163  * When the working copy item is out-of-date compared to the
2164  * repository, the following fields represent the state of the
2165  * youngest revision of the item in the repository. If the working
2166  * copy is not out of date, the fields are initialized as described
2167  * below.
2168  */
2169 
2170  /** Set to the node kind of the youngest commit, or #svn_node_none
2171  * if not out of date. */
2173 
2174  /** The status of the node, based on the text status if the node has no
2175  * restructuring changes */
2177 
2178  /** The node's text status in the repository. */
2180 
2181  /** The node's property status in the repository. */
2183 
2184  /** The node's lock in the repository, if any. */
2186 
2187  /** Set to the youngest committed revision, or #SVN_INVALID_REVNUM
2188  * if not out of date. */
2190 
2191  /** Set to the most recent commit date, or @c 0 if not out of date. */
2192  apr_time_t ood_changed_date;
2193 
2194  /** Set to the user name of the youngest commit, or @c NULL if not
2195  * out of date or non-existent. Because a non-existent @c
2196  * svn:author property has the same behavior as an out-of-date
2197  * working copy, examine @c ood_changed_rev to determine whether
2198  * the working copy is out of date. */
2199  const char *ood_changed_author;
2200 
2201  /** @} */
2202 
2203  /** Reserved for libsvn_client's internal use; this value is only to be used for
2204  * libsvn_client backwards compatibility wrappers. This value may be NULL or
2205  * to other data in future versions. */
2207 
2208  /* NOTE! Please update svn_client_status_dup() when adding new fields here. */
2210 
2211 /**
2212  * Return a duplicate of @a status, allocated in @a result_pool. No part of the new
2213  * structure will be shared with @a status.
2214  *
2215  * @since New in 1.7.
2216  */
2219  apr_pool_t *result_pool);
2220 
2221 /**
2222  * A callback for reporting a @a status about @a path (which may be an
2223  * absolute or relative path).
2224  *
2225  * @a baton is a closure object; it should be provided by the
2226  * implementation, and passed by the caller.
2227  *
2228  * @a scratch_pool will be cleared between invocations to the callback.
2229  *
2230  * ### we might be revamping the status infrastructure, and this callback
2231  * ### could totally disappear by the end of 1.7 development. however, we
2232  * ### need to mark the STATUS parameter as "const" so that it is easier
2233  * ### to reason about who/what can modify those structures.
2234  *
2235  * @since New in 1.7.
2236  */
2237 typedef svn_error_t *(*svn_client_status_func_t)(
2238  void *baton,
2239  const char *path,
2240  const svn_client_status_t *status,
2241  apr_pool_t *scratch_pool);
2242 
2243 /**
2244  * Given @a path to a working copy directory (or single file), call
2245  * @a status_func/status_baton with a set of #svn_wc_status_t *
2246  * structures which describe the status of @a path, and its children
2247  * (recursing according to @a depth).
2248  *
2249  * - If @a get_all is set, retrieve all entries; otherwise,
2250  * retrieve only "interesting" entries (local mods and/or
2251  * out of date).
2252  *
2253  * - If @a update is set, contact the repository and augment the
2254  * status structures with information about out-of-dateness (with
2255  * respect to @a revision). Also, if @a result_rev is not @c NULL,
2256  * set @a *result_rev to the actual revision against which the
2257  * working copy was compared (@a *result_rev is not meaningful unless
2258  * @a update is set).
2259  *
2260  * If @a no_ignore is @c FALSE, don't report any file or directory (or
2261  * recurse into any directory) that is found by recursion (as opposed to
2262  * being the explicit target @a path) and whose name matches the
2263  * svn:ignore property on its parent directory or the global-ignores
2264  * list in @a ctx->config. If @a no_ignore is @c TRUE, report each such
2265  * file or directory with the status code #svn_wc_status_ignored.
2266  *
2267  * If @a ignore_externals is not set, then recurse into externals
2268  * definitions (if any exist) after handling the main target. This
2269  * calls the client notification function (in @a ctx) with the
2270  * #svn_wc_notify_status_external action before handling each externals
2271  * definition, and with #svn_wc_notify_status_completed
2272  * after each.
2273  *
2274  * If @a depth_as_sticky is set and @a depth is not
2275  * #svn_depth_unknown, then the status is calculated as if depth_is_sticky
2276  * was passed to an equivalent update command.
2277  *
2278  * @a changelists is an array of <tt>const char *</tt> changelist
2279  * names, used as a restrictive filter on items whose statuses are
2280  * reported; that is, don't report status about any item unless
2281  * it's a member of one of those changelists. If @a changelists is
2282  * empty (or altogether @c NULL), no changelist filtering occurs.
2283  *
2284  * If @a path is an absolute path then the @c path parameter passed in each
2285  * call to @a status_func will be an absolute path.
2286  *
2287  * All temporary allocations are performed in @a scratch_pool.
2288  *
2289  * @since New in 1.7.
2290  */
2291 svn_error_t *
2292 svn_client_status5(svn_revnum_t *result_rev,
2293  svn_client_ctx_t *ctx,
2294  const char *path,
2295  const svn_opt_revision_t *revision,
2296  svn_depth_t depth,
2297  svn_boolean_t get_all,
2298  svn_boolean_t update,
2299  svn_boolean_t no_ignore,
2300  svn_boolean_t ignore_externals,
2301  svn_boolean_t depth_as_sticky,
2302  const apr_array_header_t *changelists,
2303  svn_client_status_func_t status_func,
2304  void *status_baton,
2305  apr_pool_t *scratch_pool);
2306 
2307 /**
2308  * Same as svn_client_status5(), but using #svn_wc_status_func3_t
2309  * instead of #svn_client_status_func_t and depth_as_sticky set to TRUE.
2310  *
2311  * @since New in 1.6.
2312  * @deprecated Provided for backward compatibility with the 1.6 API.
2313  */
2315 svn_error_t *
2316 svn_client_status4(svn_revnum_t *result_rev,
2317  const char *path,
2318  const svn_opt_revision_t *revision,
2319  svn_wc_status_func3_t status_func,
2320  void *status_baton,
2321  svn_depth_t depth,
2322  svn_boolean_t get_all,
2323  svn_boolean_t update,
2324  svn_boolean_t no_ignore,
2325  svn_boolean_t ignore_externals,
2326  const apr_array_header_t *changelists,
2327  svn_client_ctx_t *ctx,
2328  apr_pool_t *pool);
2329 
2330 /**
2331  * Same as svn_client_status4(), but using an #svn_wc_status_func2_t
2332  * instead of an #svn_wc_status_func3_t.
2333  *
2334  * @since New in 1.5.
2335  * @deprecated Provided for backward compatibility with the 1.5 API.
2336  */
2338 svn_error_t *
2339 svn_client_status3(svn_revnum_t *result_rev,
2340  const char *path,
2341  const svn_opt_revision_t *revision,
2342  svn_wc_status_func2_t status_func,
2343  void *status_baton,
2344  svn_depth_t depth,
2345  svn_boolean_t get_all,
2346  svn_boolean_t update,
2347  svn_boolean_t no_ignore,
2348  svn_boolean_t ignore_externals,
2349  const apr_array_header_t *changelists,
2350  svn_client_ctx_t *ctx,
2351  apr_pool_t *pool);
2352 
2353 /**
2354  * Like svn_client_status3(), except with @a changelists passed as @c
2355  * NULL, and with @a recurse instead of @a depth. If @a recurse is
2356  * TRUE, behave as if for #svn_depth_infinity; else if @a recurse is
2357  * FALSE, behave as if for #svn_depth_immediates.
2358  *
2359  * @since New in 1.2.
2360  * @deprecated Provided for backward compatibility with the 1.4 API.
2361  */
2363 svn_error_t *
2364 svn_client_status2(svn_revnum_t *result_rev,
2365  const char *path,
2366  const svn_opt_revision_t *revision,
2367  svn_wc_status_func2_t status_func,
2368  void *status_baton,
2369  svn_boolean_t recurse,
2370  svn_boolean_t get_all,
2371  svn_boolean_t update,
2372  svn_boolean_t no_ignore,
2373  svn_boolean_t ignore_externals,
2374  svn_client_ctx_t *ctx,
2375  apr_pool_t *pool);
2376 
2377 
2378 /**
2379  * Similar to svn_client_status2(), but with @a ignore_externals
2380  * always set to FALSE, taking the #svn_wc_status_func_t type
2381  * instead of the #svn_wc_status_func2_t type for @a status_func,
2382  * and requiring @a *revision to be non-const even though it is
2383  * treated as constant.
2384  *
2385  * @deprecated Provided for backward compatibility with the 1.1 API.
2386  */
2388 svn_error_t *
2389 svn_client_status(svn_revnum_t *result_rev,
2390  const char *path,
2391  svn_opt_revision_t *revision,
2392  svn_wc_status_func_t status_func,
2393  void *status_baton,
2394  svn_boolean_t recurse,
2395  svn_boolean_t get_all,
2396  svn_boolean_t update,
2397  svn_boolean_t no_ignore,
2398  svn_client_ctx_t *ctx,
2399  apr_pool_t *pool);
2400 
2401 /** @} */
2402 
2403 /**
2404  * @defgroup Log View information about previous revisions of an object.
2405  *
2406  * @{
2407  */
2408 
2409 /**
2410  * Invoke @a receiver with @a receiver_baton on each log message from
2411  * each (#svn_opt_revision_range_t *) range in @a revision_ranges in turn,
2412  * inclusive (but never invoke @a receiver on a given log message more
2413  * than once).
2414  *
2415  * @a targets contains either a URL followed by zero or more relative
2416  * paths, or 1 working copy path, as <tt>const char *</tt>, for which log
2417  * messages are desired. @a receiver is invoked only on messages whose
2418  * revisions involved a change to some path in @a targets. @a peg_revision
2419  * indicates in which revision @a targets are valid. If @a peg_revision is
2420  * #svn_opt_revision_unspecified, it defaults to #svn_opt_revision_head
2421  * for URLs or #svn_opt_revision_working for WC paths.
2422  *
2423  * If @a limit is non-zero only invoke @a receiver on the first @a limit
2424  * logs.
2425  *
2426  * If @a discover_changed_paths is set, then the `@a changed_paths' argument
2427  * to @a receiver will be passed on each invocation.
2428  *
2429  * If @a strict_node_history is set, copy history (if any exists) will
2430  * not be traversed while harvesting revision logs for each target.
2431  *
2432  * If @a include_merged_revisions is set, log information for revisions
2433  * which have been merged to @a targets will also be returned.
2434  *
2435  * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
2436  * revprops named in the array (i.e. retrieve none if the array is empty).
2437  *
2438  * Use @a pool for any temporary allocation.
2439  *
2440  * @par Important:
2441  * A special case for the revision range HEAD:1, which was present
2442  * in svn_client_log(), has been removed from svn_client_log2(). Instead, it
2443  * is expected that callers will specify the range HEAD:0, to avoid a
2444  * #SVN_ERR_FS_NO_SUCH_REVISION error when invoked against an empty repository
2445  * (i.e. one not containing a revision 1).
2446  *
2447  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2/baton2
2448  * with a 'skip' signal on any unversioned targets.
2449  *
2450  * @since New in 1.6.
2451  */
2452 svn_error_t *
2453 svn_client_log5(const apr_array_header_t *targets,
2454  const svn_opt_revision_t *peg_revision,
2455  const apr_array_header_t *revision_ranges,
2456  int limit,
2457  svn_boolean_t discover_changed_paths,
2458  svn_boolean_t strict_node_history,
2459  svn_boolean_t include_merged_revisions,
2460  const apr_array_header_t *revprops,
2461  svn_log_entry_receiver_t receiver,
2462  void *receiver_baton,
2463  svn_client_ctx_t *ctx,
2464  apr_pool_t *pool);
2465 
2466 /**
2467  * Similar to svn_client_log5(), but takes explicit start and end parameters
2468  * instead of an array of revision ranges.
2469  *
2470  * @deprecated Provided for compatibility with the 1.5 API.
2471  * @since New in 1.5.
2472  */
2474 svn_error_t *
2475 svn_client_log4(const apr_array_header_t *targets,
2476  const svn_opt_revision_t *peg_revision,
2477  const svn_opt_revision_t *start,
2478  const svn_opt_revision_t *end,
2479  int limit,
2480  svn_boolean_t discover_changed_paths,
2481  svn_boolean_t strict_node_history,
2482  svn_boolean_t include_merged_revisions,
2483  const apr_array_header_t *revprops,
2484  svn_log_entry_receiver_t receiver,
2485  void *receiver_baton,
2486  svn_client_ctx_t *ctx,
2487  apr_pool_t *pool);
2488 
2489 /**
2490  * Similar to svn_client_log4(), but using #svn_log_message_receiver_t
2491  * instead of #svn_log_entry_receiver_t. Also, @a
2492  * include_merged_revisions is set to @c FALSE and @a revprops is
2493  * svn:author, svn:date, and svn:log.
2494  *
2495  * @deprecated Provided for compatibility with the 1.4 API.
2496  * @since New in 1.4.
2497  */
2499 svn_error_t *
2500 svn_client_log3(const apr_array_header_t *targets,
2501  const svn_opt_revision_t *peg_revision,
2502  const svn_opt_revision_t *start,
2503  const svn_opt_revision_t *end,
2504  int limit,
2505  svn_boolean_t discover_changed_paths,
2506  svn_boolean_t strict_node_history,
2507  svn_log_message_receiver_t receiver,
2508  void *receiver_baton,
2509  svn_client_ctx_t *ctx,
2510  apr_pool_t *pool);
2511 
2512 
2513 /**
2514  * Similar to svn_client_log3(), but with the @c kind field of
2515  * @a peg_revision set to #svn_opt_revision_unspecified.
2516  *
2517  * @deprecated Provided for compatibility with the 1.3 API.
2518  * @since New in 1.2.
2519  */
2521 svn_error_t *
2522 svn_client_log2(const apr_array_header_t *targets,
2523  const svn_opt_revision_t *start,
2524  const svn_opt_revision_t *end,
2525  int limit,
2526  svn_boolean_t discover_changed_paths,
2527  svn_boolean_t strict_node_history,
2528  svn_log_message_receiver_t receiver,
2529  void *receiver_baton,
2530  svn_client_ctx_t *ctx,
2531  apr_pool_t *pool);
2532 
2533 
2534 /**
2535  * Similar to svn_client_log2(), but with @a limit set to 0, and the
2536  * following special case:
2537  *
2538  * Special case for repositories at revision 0:
2539  *
2540  * If @a start->kind is #svn_opt_revision_head, and @a end->kind is
2541  * #svn_opt_revision_number && @a end->number is @c 1, then handle an
2542  * empty (no revisions) repository specially: instead of erroring
2543  * because requested revision 1 when the highest revision is 0, just
2544  * invoke @a receiver on revision 0, passing @c NULL for changed paths and
2545  * empty strings for the author and date. This is because that
2546  * particular combination of @a start and @a end usually indicates the
2547  * common case of log invocation -- the user wants to see all log
2548  * messages from youngest to oldest, where the oldest commit is
2549  * revision 1. That works fine, except when there are no commits in
2550  * the repository, hence this special case.
2551  *
2552  * @deprecated Provided for backward compatibility with the 1.1 API.
2553  */
2555 svn_error_t *
2556 svn_client_log(const apr_array_header_t *targets,
2557  const svn_opt_revision_t *start,
2558  const svn_opt_revision_t *end,
2559  svn_boolean_t discover_changed_paths,
2560  svn_boolean_t strict_node_history,
2561  svn_log_message_receiver_t receiver,
2562  void *receiver_baton,
2563  svn_client_ctx_t *ctx,
2564  apr_pool_t *pool);
2565 
2566 /** @} */
2567 
2568 /**
2569  * @defgroup Blame Show modification information about lines in a file.
2570  *
2571  * @{
2572  */
2573 
2574 /**
2575  * Invoke @a receiver with @a receiver_baton on each line-blame item
2576  * associated with revision @a end of @a path_or_url, using @a start
2577  * as the default source of all blame. @a peg_revision indicates in
2578  * which revision @a path_or_url is valid. If @a peg_revision->kind
2579  * is #svn_opt_revision_unspecified, then it defaults to
2580  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
2581  * WC targets.
2582  *
2583  * If @a start->kind or @a end->kind is #svn_opt_revision_unspecified,
2584  * return the error #SVN_ERR_CLIENT_BAD_REVISION. If either are
2585  * #svn_opt_revision_working, return the error
2586  * #SVN_ERR_UNSUPPORTED_FEATURE. If any of the revisions of @a
2587  * path_or_url have a binary mime-type, return the error
2588  * #SVN_ERR_CLIENT_IS_BINARY_FILE, unless @a ignore_mime_type is TRUE,
2589  * in which case blame information will be generated regardless of the
2590  * MIME types of the revisions.
2591  *
2592  * Use @a diff_options to determine how to compare different revisions of the
2593  * target.
2594  *
2595  * If @a include_merged_revisions is TRUE, also return data based upon
2596  * revisions which have been merged to @a path_or_url.
2597  *
2598  * Use @a pool for any temporary allocation.
2599  *
2600  * @since New in 1.7.
2601  */
2602 svn_error_t *
2603 svn_client_blame5(const char *path_or_url,
2604  const svn_opt_revision_t *peg_revision,
2605  const svn_opt_revision_t *start,
2606  const svn_opt_revision_t *end,
2607  const svn_diff_file_options_t *diff_options,
2608  svn_boolean_t ignore_mime_type,
2609  svn_boolean_t include_merged_revisions,
2611  void *receiver_baton,
2612  svn_client_ctx_t *ctx,
2613  apr_pool_t *pool);
2614 
2615 
2616 /**
2617  * Similar to svn_client_blame5(), but with #svn_client_blame_receiver3_t
2618  * as the receiver.
2619  *
2620  * @deprecated Provided for backwards compatibility with the 1.6 API.
2621  *
2622  * @since New in 1.5.
2623  */
2625 svn_error_t *
2626 svn_client_blame4(const char *path_or_url,
2627  const svn_opt_revision_t *peg_revision,
2628  const svn_opt_revision_t *start,
2629  const svn_opt_revision_t *end,
2630  const svn_diff_file_options_t *diff_options,
2631  svn_boolean_t ignore_mime_type,
2632  svn_boolean_t include_merged_revisions,
2634  void *receiver_baton,
2635  svn_client_ctx_t *ctx,
2636  apr_pool_t *pool);
2637 
2638 /**
2639  * Similar to svn_client_blame4(), but with @a include_merged_revisions set
2640  * to FALSE, and using a #svn_client_blame_receiver2_t as the receiver.
2641  *
2642  * @deprecated Provided for backwards compatibility with the 1.4 API.
2643  *
2644  * @since New in 1.4.
2645  */
2647 svn_error_t *
2648 svn_client_blame3(const char *path_or_url,
2649  const svn_opt_revision_t *peg_revision,
2650  const svn_opt_revision_t *start,
2651  const svn_opt_revision_t *end,
2652  const svn_diff_file_options_t *diff_options,
2653  svn_boolean_t ignore_mime_type,
2654  svn_client_blame_receiver_t receiver,
2655  void *receiver_baton,
2656  svn_client_ctx_t *ctx,
2657  apr_pool_t *pool);
2658 
2659 /**
2660  * Similar to svn_client_blame3(), but with @a diff_options set to
2661  * default options as returned by svn_diff_file_options_parse() and
2662  * @a ignore_mime_type set to FALSE.
2663  *
2664  * @deprecated Provided for backwards compatibility with the 1.3 API.
2665  *
2666  * @since New in 1.2.
2667  */
2669 svn_error_t *
2670 svn_client_blame2(const char *path_or_url,
2671  const svn_opt_revision_t *peg_revision,
2672  const svn_opt_revision_t *start,
2673  const svn_opt_revision_t *end,
2674  svn_client_blame_receiver_t receiver,
2675  void *receiver_baton,
2676  svn_client_ctx_t *ctx,
2677  apr_pool_t *pool);
2678 
2679 /**
2680  * Similar to svn_client_blame2() except that @a peg_revision is always
2681  * the same as @a end.
2682  *
2683  * @deprecated Provided for backward compatibility with the 1.1 API.
2684  */
2686 svn_error_t *
2687 svn_client_blame(const char *path_or_url,
2688  const svn_opt_revision_t *start,
2689  const svn_opt_revision_t *end,
2690  svn_client_blame_receiver_t receiver,
2691  void *receiver_baton,
2692  svn_client_ctx_t *ctx,
2693  apr_pool_t *pool);
2694 
2695 /** @} */
2696 
2697 /**
2698  * @defgroup Diff Generate differences between paths.
2699  *
2700  * @{
2701  */
2702 
2703 /**
2704  * Produce diff output which describes the delta between
2705  * @a path1/@a revision1 and @a path2/@a revision2. Print the output
2706  * of the diff to @a outfile, and any errors to @a errfile. @a path1
2707  * and @a path2 can be either working-copy paths or URLs.
2708  *
2709  * If @a relative_to_dir is not @c NULL, the @a original_path and
2710  * @a modified_path will have the @a relative_to_dir stripped from the
2711  * front of the respective paths. If @a relative_to_dir is @c NULL,
2712  * paths will not be modified. If @a relative_to_dir is not
2713  * @c NULL but @a relative_to_dir is not a parent path of the target,
2714  * an error is returned. Finally, if @a relative_to_dir is a URL, an
2715  * error will be returned.
2716  *
2717  * If either @a revision1 or @a revision2 has an `unspecified' or
2718  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
2719  *
2720  * @a path1 and @a path2 must both represent the same node kind -- that
2721  * is, if @a path1 is a directory, @a path2 must also be, and if @a path1
2722  * is a file, @a path2 must also be.
2723  *
2724  * If @a depth is #svn_depth_infinity, diff fully recursively.
2725  * Else if it is #svn_depth_immediates, diff the named paths and
2726  * their file children (if any), and diff properties of
2727  * subdirectories, but do not descend further into the subdirectories.
2728  * Else if #svn_depth_files, behave as if for #svn_depth_immediates
2729  * except don't diff properties of subdirectories. If
2730  * #svn_depth_empty, diff exactly the named paths but nothing
2731  * underneath them.
2732  *
2733  * Use @a ignore_ancestry to control whether or not items being
2734  * diffed will be checked for relatedness first. Unrelated items
2735  * are typically transmitted to the editor as a deletion of one thing
2736  * and the addition of another, but if this flag is TRUE, unrelated
2737  * items will be diffed as if they were related.
2738  *
2739  * If @a no_diff_deleted is TRUE, then no diff output will be
2740  * generated on deleted files.
2741  *
2742  * If @a show_copies_as_adds is TRUE, then copied files will not be diffed
2743  * against their copyfrom source, and will appear in the diff output
2744  * in their entirety, as if they were newly added.
2745  *
2746  * If @a use_git_diff_format is TRUE, then the git's extended diff format
2747  * will be used.
2748  * ### Do we need to say more about the format? A reference perhaps?
2749  *
2750  * Generated headers are encoded using @a header_encoding.
2751  *
2752  * Diff output will not be generated for binary files, unless @a
2753  * ignore_content_type is TRUE, in which case diffs will be shown
2754  * regardless of the content types.
2755  *
2756  * @a diff_options (an array of <tt>const char *</tt>) is used to pass
2757  * additional command line options to the diff processes invoked to compare
2758  * files. @a diff_options is allowed to be @c NULL, in which case a value
2759  * for this option might still be obtained from the Subversion configuration
2760  * file via client context @a ctx.
2761  *
2762  * The authentication baton cached in @a ctx is used to communicate with
2763  * the repository.
2764  *
2765  * @a changelists is an array of <tt>const char *</tt> changelist
2766  * names, used as a restrictive filter on items whose differences are
2767  * reported; that is, don't generate diffs about any item unless
2768  * it's a member of one of those changelists. If @a changelists is
2769  * empty (or altogether @c NULL), no changelist filtering occurs.
2770  *
2771  * @note Changelist filtering only applies to diffs in which at least
2772  * one side of the diff represents working copy data.
2773  *
2774  * @note @a header_encoding doesn't affect headers generated by external
2775  * diff programs.
2776  *
2777  * @note @a relative_to_dir doesn't affect the path index generated by
2778  * external diff programs.
2779  *
2780  * @since New in 1.7.
2781  */
2782 svn_error_t *
2783 svn_client_diff5(const apr_array_header_t *diff_options,
2784  const char *path1,
2785  const svn_opt_revision_t *revision1,
2786  const char *path2,
2787  const svn_opt_revision_t *revision2,
2788  const char *relative_to_dir,
2789  svn_depth_t depth,
2790  svn_boolean_t ignore_ancestry,
2791  svn_boolean_t no_diff_deleted,
2792  svn_boolean_t show_copies_as_adds,
2793  svn_boolean_t ignore_content_type,
2794  svn_boolean_t use_git_diff_format,
2795  const char *header_encoding,
2796  apr_file_t *outfile,
2797  apr_file_t *errfile,
2798  const apr_array_header_t *changelists,
2799  svn_client_ctx_t *ctx,
2800  apr_pool_t *pool);
2801 
2802 /**
2803  * Similar to svn_client_diff5(), but with @a show_copies_as_adds set to
2804  * @c FALSE and @a use_git_diff_format set to @c FALSE.
2805  *
2806  * @deprecated Provided for backward compatibility with the 1.6 API.
2807  * @since New in 1.5.
2808  */
2810 svn_error_t *
2811 svn_client_diff4(const apr_array_header_t *diff_options,
2812  const char *path1,
2813  const svn_opt_revision_t *revision1,
2814  const char *path2,
2815  const svn_opt_revision_t *revision2,
2816  const char *relative_to_dir,
2817  svn_depth_t depth,
2818  svn_boolean_t ignore_ancestry,
2819  svn_boolean_t no_diff_deleted,
2820  svn_boolean_t ignore_content_type,
2821  const char *header_encoding,
2822  apr_file_t *outfile,
2823  apr_file_t *errfile,
2824  const apr_array_header_t *changelists,
2825  svn_client_ctx_t *ctx,
2826  apr_pool_t *pool);
2827 
2828 /**
2829  * Similar to svn_client_diff4(), but with @a changelists passed as @c
2830  * NULL, and @a depth set according to @a recurse: if @a recurse is
2831  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
2832  * FALSE, set @a depth to #svn_depth_empty.
2833  *
2834  * @deprecated Provided for backward compatibility with the 1.4 API.
2835  * @since New in 1.3.
2836  */
2838 svn_error_t *
2839 svn_client_diff3(const apr_array_header_t *diff_options,
2840  const char *path1,
2841  const svn_opt_revision_t *revision1,
2842  const char *path2,
2843  const svn_opt_revision_t *revision2,
2844  svn_boolean_t recurse,
2845  svn_boolean_t ignore_ancestry,
2846  svn_boolean_t no_diff_deleted,
2847  svn_boolean_t ignore_content_type,
2848  const char *header_encoding,
2849  apr_file_t *outfile,
2850  apr_file_t *errfile,
2851  svn_client_ctx_t *ctx,
2852  apr_pool_t *pool);
2853 
2854 
2855 /**
2856  * Similar to svn_client_diff3(), but with @a header_encoding set to
2857  * @c APR_LOCALE_CHARSET.
2858  *
2859  * @deprecated Provided for backward compatibility with the 1.2 API.
2860  * @since New in 1.2.
2861  */
2863 svn_error_t *
2864 svn_client_diff2(const apr_array_header_t *diff_options,
2865  const char *path1,
2866  const svn_opt_revision_t *revision1,
2867  const char *path2,
2868  const svn_opt_revision_t *revision2,
2869  svn_boolean_t recurse,
2870  svn_boolean_t ignore_ancestry,
2871  svn_boolean_t no_diff_deleted,
2872  svn_boolean_t ignore_content_type,
2873  apr_file_t *outfile,
2874  apr_file_t *errfile,
2875  svn_client_ctx_t *ctx,
2876  apr_pool_t *pool);
2877 
2878 /**
2879  * Similar to svn_client_diff2(), but with @a ignore_content_type
2880  * always set to FALSE.
2881  *
2882  * @deprecated Provided for backward compatibility with the 1.1 API.
2883  */
2885 svn_error_t *
2886 svn_client_diff(const apr_array_header_t *diff_options,
2887  const char *path1,
2888  const svn_opt_revision_t *revision1,
2889  const char *path2,
2890  const svn_opt_revision_t *revision2,
2891  svn_boolean_t recurse,
2892  svn_boolean_t ignore_ancestry,
2893  svn_boolean_t no_diff_deleted,
2894  apr_file_t *outfile,
2895  apr_file_t *errfile,
2896  svn_client_ctx_t *ctx,
2897  apr_pool_t *pool);
2898 
2899 /**
2900  * Produce diff output which describes the delta between the
2901  * filesystem object @a path in peg revision @a peg_revision, as it
2902  * changed between @a start_revision and @a end_revision. @a path can
2903  * be either a working-copy path or URL.
2904  *
2905  * If @a peg_revision is #svn_opt_revision_unspecified, behave
2906  * identically to svn_client_diff5(), using @a path for both of that
2907  * function's @a path1 and @a path2 arguments.
2908  *
2909  * All other options are handled identically to svn_client_diff5().
2910  *
2911  * @since New in 1.7.
2912  */
2913 svn_error_t *
2914 svn_client_diff_peg5(const apr_array_header_t *diff_options,
2915  const char *path,
2916  const svn_opt_revision_t *peg_revision,
2917  const svn_opt_revision_t *start_revision,
2918  const svn_opt_revision_t *end_revision,
2919  const char *relative_to_dir,
2920  svn_depth_t depth,
2921  svn_boolean_t ignore_ancestry,
2922  svn_boolean_t no_diff_deleted,
2923  svn_boolean_t show_copies_as_adds,
2924  svn_boolean_t ignore_content_type,
2925  svn_boolean_t use_git_diff_format,
2926  const char *header_encoding,
2927  apr_file_t *outfile,
2928  apr_file_t *errfile,
2929  const apr_array_header_t *changelists,
2930  svn_client_ctx_t *ctx,
2931  apr_pool_t *pool);
2932 
2933 /**
2934  * Similar to svn_client_diff_peg5(), but with @a show_copies_as_adds set to
2935  * @c FALSE and @a use_git_diff_format set to @c FALSE.
2936  *
2937  * @since New in 1.5.
2938  * @deprecated Provided for backward compatibility with the 1.6 API.
2939  */
2941 svn_error_t *
2942 svn_client_diff_peg4(const apr_array_header_t *diff_options,
2943  const char *path,
2944  const svn_opt_revision_t *peg_revision,
2945  const svn_opt_revision_t *start_revision,
2946  const svn_opt_revision_t *end_revision,
2947  const char *relative_to_dir,
2948  svn_depth_t depth,
2949  svn_boolean_t ignore_ancestry,
2950  svn_boolean_t no_diff_deleted,
2951  svn_boolean_t ignore_content_type,
2952  const char *header_encoding,
2953  apr_file_t *outfile,
2954  apr_file_t *errfile,
2955  const apr_array_header_t *changelists,
2956  svn_client_ctx_t *ctx,
2957  apr_pool_t *pool);
2958 
2959 /**
2960  * Similar to svn_client_diff_peg4(), but with @a changelists passed
2961  * as @c NULL, and @a depth set according to @a recurse: if @a recurse
2962  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
2963  * FALSE, set @a depth to #svn_depth_files.
2964  *
2965  * @deprecated Provided for backward compatibility with the 1.4 API.
2966  * @since New in 1.3.
2967  */
2969 svn_error_t *
2970 svn_client_diff_peg3(const apr_array_header_t *diff_options,
2971  const char *path,
2972  const svn_opt_revision_t *peg_revision,
2973  const svn_opt_revision_t *start_revision,
2974  const svn_opt_revision_t *end_revision,
2975  svn_boolean_t recurse,
2976  svn_boolean_t ignore_ancestry,
2977  svn_boolean_t no_diff_deleted,
2978  svn_boolean_t ignore_content_type,
2979  const char *header_encoding,
2980  apr_file_t *outfile,
2981  apr_file_t *errfile,
2982  svn_client_ctx_t *ctx,
2983  apr_pool_t *pool);
2984 
2985 /**
2986  * Similar to svn_client_diff_peg3(), but with @a header_encoding set to
2987  * @c APR_LOCALE_CHARSET.
2988  *
2989  * @deprecated Provided for backward compatibility with the 1.2 API.
2990  * @since New in 1.2.
2991  */
2993 svn_error_t *
2994 svn_client_diff_peg2(const apr_array_header_t *diff_options,
2995  const char *path,
2996  const svn_opt_revision_t *peg_revision,
2997  const svn_opt_revision_t *start_revision,
2998  const svn_opt_revision_t *end_revision,
2999  svn_boolean_t recurse,
3000  svn_boolean_t ignore_ancestry,
3001  svn_boolean_t no_diff_deleted,
3002  svn_boolean_t ignore_content_type,
3003  apr_file_t *outfile,
3004  apr_file_t *errfile,
3005  svn_client_ctx_t *ctx,
3006  apr_pool_t *pool);
3007 
3008 /**
3009  * Similar to svn_client_diff_peg2(), but with @a ignore_content_type
3010  * always set to FALSE.
3011  *
3012  * @since New in 1.1.
3013  * @deprecated Provided for backward compatibility with the 1.1 API.
3014  */
3016 svn_error_t *
3017 svn_client_diff_peg(const apr_array_header_t *diff_options,
3018  const char *path,
3019  const svn_opt_revision_t *peg_revision,
3020  const svn_opt_revision_t *start_revision,
3021  const svn_opt_revision_t *end_revision,
3022  svn_boolean_t recurse,
3023  svn_boolean_t ignore_ancestry,
3024  svn_boolean_t no_diff_deleted,
3025  apr_file_t *outfile,
3026  apr_file_t *errfile,
3027  svn_client_ctx_t *ctx,
3028  apr_pool_t *pool);
3029 
3030 /**
3031  * Produce a diff summary which lists the changed items between
3032  * @a path1/@a revision1 and @a path2/@a revision2 without creating text
3033  * deltas. @a path1 and @a path2 can be either working-copy paths or URLs.
3034  *
3035  * The function may report false positives if @a ignore_ancestry is false,
3036  * since a file might have been modified between two revisions, but still
3037  * have the same contents.
3038  *
3039  * Calls @a summarize_func with @a summarize_baton for each difference
3040  * with a #svn_client_diff_summarize_t structure describing the difference.
3041  *
3042  * See svn_client_diff5() for a description of the other parameters.
3043  *
3044  * @since New in 1.5.
3045  */
3046 svn_error_t *
3047 svn_client_diff_summarize2(const char *path1,
3048  const svn_opt_revision_t *revision1,
3049  const char *path2,
3050  const svn_opt_revision_t *revision2,
3051  svn_depth_t depth,
3052  svn_boolean_t ignore_ancestry,
3053  const apr_array_header_t *changelists,
3054  svn_client_diff_summarize_func_t summarize_func,
3055  void *summarize_baton,
3056  svn_client_ctx_t *ctx,
3057  apr_pool_t *pool);
3058 
3059 /**
3060  * Similar to svn_client_diff_summarize2(), but with @a changelists
3061  * passed as @c NULL, and @a depth set according to @a recurse: if @a
3062  * recurse is TRUE, set @a depth to #svn_depth_infinity, if @a
3063  * recurse is FALSE, set @a depth to #svn_depth_files.
3064  *
3065  * @deprecated Provided for backward compatibility with the 1.4 API.
3066  *
3067  * @since New in 1.4.
3068  */
3070 svn_error_t *
3071 svn_client_diff_summarize(const char *path1,
3072  const svn_opt_revision_t *revision1,
3073  const char *path2,
3074  const svn_opt_revision_t *revision2,
3075  svn_boolean_t recurse,
3076  svn_boolean_t ignore_ancestry,
3077  svn_client_diff_summarize_func_t summarize_func,
3078  void *summarize_baton,
3079  svn_client_ctx_t *ctx,
3080  apr_pool_t *pool);
3081 
3082 /**
3083  * Produce a diff summary which lists the changed items between the
3084  * filesystem object @a path in peg revision @a peg_revision, as it
3085  * changed between @a start_revision and @a end_revision. @a path can
3086  * be either a working-copy path or URL.
3087  *
3088  * If @a peg_revision is #svn_opt_revision_unspecified, behave
3089  * identically to svn_client_diff_summarize2(), using @a path for both
3090  * of that function's @a path1 and @a path2 arguments.
3091  *
3092  * The function may report false positives if @a ignore_ancestry is false,
3093  * as described in the documentation for svn_client_diff_summarize2().
3094  *
3095  * Call @a summarize_func with @a summarize_baton for each difference
3096  * with a #svn_client_diff_summarize_t structure describing the difference.
3097  *
3098  * See svn_client_diff_peg5() for a description of the other parameters.
3099  *
3100  * @since New in 1.5.
3101  */
3102 svn_error_t *
3103 svn_client_diff_summarize_peg2(const char *path,
3104  const svn_opt_revision_t *peg_revision,
3105  const svn_opt_revision_t *start_revision,
3106  const svn_opt_revision_t *end_revision,
3107  svn_depth_t depth,
3108  svn_boolean_t ignore_ancestry,
3109  const apr_array_header_t *changelists,
3110  svn_client_diff_summarize_func_t summarize_func,
3111  void *summarize_baton,
3112  svn_client_ctx_t *ctx,
3113  apr_pool_t *pool);
3114 
3115 /**
3116  * Similar to svn_client_diff_summarize_peg2(), but with @a
3117  * changelists passed as @c NULL, and @a depth set according to @a
3118  * recurse: if @a recurse is TRUE, set @a depth to
3119  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
3120  * #svn_depth_files.
3121  *
3122  * @deprecated Provided for backward compatibility with the 1.4 API.
3123  *
3124  * @since New in 1.4.
3125  */
3127 svn_error_t *
3128 svn_client_diff_summarize_peg(const char *path,
3129  const svn_opt_revision_t *peg_revision,
3130  const svn_opt_revision_t *start_revision,
3131  const svn_opt_revision_t *end_revision,
3132  svn_boolean_t recurse,
3133  svn_boolean_t ignore_ancestry,
3134  svn_client_diff_summarize_func_t summarize_func,
3135  void *summarize_baton,
3136  svn_client_ctx_t *ctx,
3137  apr_pool_t *pool);
3138 
3139 /** @} */
3140 
3141 /**
3142  * @defgroup Merge Merge changes between branches.
3143  *
3144  * @{
3145  */
3146 
3147 /** Merge changes from @a source1/@a revision1 to @a source2/@a revision2 into
3148  * the working-copy path @a target_wcpath.
3149  *
3150  * @a source1 and @a source2 are either URLs that refer to entries in the
3151  * repository, or paths to entries in the working copy.
3152  *
3153  * By "merging", we mean: apply file differences using
3154  * svn_wc_merge(), and schedule additions & deletions when appropriate.
3155  *
3156  * @a source1 and @a source2 must both represent the same node kind -- that
3157  * is, if @a source1 is a directory, @a source2 must also be, and if @a source1
3158  * is a file, @a source2 must also be.
3159  *
3160  * If either @a revision1 or @a revision2 has an `unspecified' or
3161  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3162  *
3163  * If @a depth is #svn_depth_infinity, merge fully recursively.
3164  * Else if #svn_depth_immediates, merge changes at most to files
3165  * that are immediate children of @a target_wcpath and to directory
3166  * properties of @a target_wcpath and its immediate subdirectory children.
3167  * Else if #svn_depth_files, merge at most to immediate file
3168  * children of @a target_wcpath and to @a target_wcpath itself.
3169  * Else if #svn_depth_empty, apply changes only to @a target_wcpath
3170  * (i.e., directory property changes only)
3171  *
3172  * If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
3173  *
3174  * Use @a ignore_ancestry to control whether or not items being
3175  * diffed will be checked for relatedness first. Unrelated items
3176  * are typically transmitted to the editor as a deletion of one thing
3177  * and the addition of another, but if this flag is TRUE, unrelated
3178  * items will be diffed as if they were related.
3179  *
3180  * If @a force is false and the merge involves deleting a file whose
3181  * content differs from the source-left version, or a locally modified
3182  * directory, or an unversioned item, then the operation will fail. If
3183  * @a force is true then all such items will be deleted.
3184  *
3185  * @a merge_options (an array of <tt>const char *</tt>), if non-NULL,
3186  * is used to pass additional command line arguments to the merge
3187  * processes (internal or external). @see
3188  * svn_diff_file_options_parse().
3189  *
3190  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with @a
3191  * ctx->notify_baton2 once for each merged target, passing the target's local
3192  * path.
3193  *
3194  * If @a record_only is TRUE, the merge is performed, but is limited only to
3195  * mergeinfo property changes on existing paths in @a target_wcpath.
3196  *
3197  * If @a dry_run is TRUE, the merge is carried out, and full notification
3198  * feedback is provided, but the working copy is not modified.
3199  *
3200  * If allow_mixed_rev is @c FALSE, and @a merge_target is a mixed-revision
3201  * working copy, raise @c SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED.
3202  * Because users rarely intend to merge into mixed-revision working copies,
3203  * it is recommended to set this parameter to FALSE by default unless the
3204  * user has explicitly requested a merge into a mixed-revision working copy.
3205  *
3206  * The authentication baton cached in @a ctx is used to communicate with the
3207  * repository.
3208  *
3209  * @since New in 1.7.
3210  */
3211 svn_error_t *
3212 svn_client_merge4(const char *source1,
3213  const svn_opt_revision_t *revision1,
3214  const char *source2,
3215  const svn_opt_revision_t *revision2,
3216  const char *target_wcpath,
3217  svn_depth_t depth,
3218  svn_boolean_t ignore_ancestry,
3219  svn_boolean_t force,
3220  svn_boolean_t record_only,
3221  svn_boolean_t dry_run,
3222  svn_boolean_t allow_mixed_rev,
3223  const apr_array_header_t *merge_options,
3224  svn_client_ctx_t *ctx,
3225  apr_pool_t *pool);
3226 
3227 /**
3228  * Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
3229  * @c TRUE.
3230  *
3231  * @deprecated Provided for backward compatibility with the 1.6 API.
3232  *
3233  * @since New in 1.5.
3234  */
3236 svn_error_t *
3237 svn_client_merge3(const char *source1,
3238  const svn_opt_revision_t *revision1,
3239  const char *source2,
3240  const svn_opt_revision_t *revision2,
3241  const char *target_wcpath,
3242  svn_depth_t depth,
3243  svn_boolean_t ignore_ancestry,
3244  svn_boolean_t force,
3245  svn_boolean_t record_only,
3246  svn_boolean_t dry_run,
3247  const apr_array_header_t *merge_options,
3248  svn_client_ctx_t *ctx,
3249  apr_pool_t *pool);
3250 
3251 /**
3252  * Similar to svn_client_merge3(), but with @a record_only set to @c
3253  * FALSE, and @a depth set according to @a recurse: if @a recurse is
3254  * TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3255  * FALSE, set @a depth to #svn_depth_files.
3256  *
3257  * @deprecated Provided for backward compatibility with the 1.4 API.
3258  *
3259  * @since New in 1.4.
3260  */
3262 svn_error_t *
3263 svn_client_merge2(const char *source1,
3264  const svn_opt_revision_t *revision1,
3265  const char *source2,
3266  const svn_opt_revision_t *revision2,
3267  const char *target_wcpath,
3268  svn_boolean_t recurse,
3269  svn_boolean_t ignore_ancestry,
3270  svn_boolean_t force,
3271  svn_boolean_t dry_run,
3272  const apr_array_header_t *merge_options,
3273  svn_client_ctx_t *ctx,
3274  apr_pool_t *pool);
3275 
3276 
3277 /**
3278  * Similar to svn_client_merge2(), but with @a merge_options set to NULL.
3279  *
3280  * @deprecated Provided for backwards compatibility with the 1.3 API.
3281  */
3283 svn_error_t *
3284 svn_client_merge(const char *source1,
3285  const svn_opt_revision_t *revision1,
3286  const char *source2,
3287  const svn_opt_revision_t *revision2,
3288  const char *target_wcpath,
3289  svn_boolean_t recurse,
3290  svn_boolean_t ignore_ancestry,
3291  svn_boolean_t force,
3292  svn_boolean_t dry_run,
3293  svn_client_ctx_t *ctx,
3294  apr_pool_t *pool);
3295 
3296 
3297 
3298 /**
3299  * Perform a reintegration merge of @a source at @a peg_revision
3300  * into @a target_wcpath.
3301  * @a target_wcpath must be a single-revision, #svn_depth_infinity,
3302  * pristine, unswitched working copy -- in other words, it must
3303  * reflect a single revision tree, the "target". The mergeinfo on @a
3304  * source must reflect that all of the target has been merged into it.
3305  * Then this behaves like a merge with svn_client_merge3() from the
3306  * target's URL to the source.
3307  *
3308  * All other options are handled identically to svn_client_merge3().
3309  * The depth of the merge is always #svn_depth_infinity.
3310  *
3311  * @since New in 1.5.
3312  */
3313 svn_error_t *
3314 svn_client_merge_reintegrate(const char *source,
3315  const svn_opt_revision_t *peg_revision,
3316  const char *target_wcpath,
3317  svn_boolean_t dry_run,
3318  const apr_array_header_t *merge_options,
3319  svn_client_ctx_t *ctx,
3320  apr_pool_t *pool);
3321 
3322 /**
3323  * Merge the changes between the filesystem object @a source in peg
3324  * revision @a peg_revision, as it changed between the ranges described
3325  * in @a ranges_to_merge.
3326  *
3327  * @a ranges_to_merge is an array of <tt>svn_opt_revision_range_t
3328  * *</tt> ranges. These ranges may describe additive and/or
3329  * subtractive merge ranges, they may overlap fully or partially,
3330  * and/or they may partially or fully negate each other. This
3331  * rangelist is not required to be sorted. If any revision in the
3332  * list of provided ranges has an `unspecified' or unrecognized
3333  * `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
3334  *
3335  * All other options are handled identically to svn_client_merge4().
3336  *
3337  * @since New in 1.7.
3338  */
3339 svn_error_t *
3340 svn_client_merge_peg4(const char *source,
3341  const apr_array_header_t *ranges_to_merge,
3342  const svn_opt_revision_t *peg_revision,
3343  const char *target_wcpath,
3344  svn_depth_t depth,
3345  svn_boolean_t ignore_ancestry,
3346  svn_boolean_t force,
3347  svn_boolean_t record_only,
3348  svn_boolean_t dry_run,
3349  svn_boolean_t allow_mixed_rev,
3350  const apr_array_header_t *merge_options,
3351  svn_client_ctx_t *ctx,
3352  apr_pool_t *pool);
3353 
3354 /**
3355  * Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
3356  * @c TRUE.
3357  *
3358  * @deprecated Provided for backward compatibility with the 1.6 API.
3359  *
3360  * @since New in 1.5.
3361  */
3363 svn_error_t *
3364 svn_client_merge_peg3(const char *source,
3365  const apr_array_header_t *ranges_to_merge,
3366  const svn_opt_revision_t *peg_revision,
3367  const char *target_wcpath,
3368  svn_depth_t depth,
3369  svn_boolean_t ignore_ancestry,
3370  svn_boolean_t force,
3371  svn_boolean_t record_only,
3372  svn_boolean_t dry_run,
3373  const apr_array_header_t *merge_options,
3374  svn_client_ctx_t *ctx,
3375  apr_pool_t *pool);
3376 
3377 /**
3378  * Similar to svn_client_merge_peg3(), but with @a record_only set to
3379  * @c FALSE, and @a depth set according to @a recurse: if @a recurse
3380  * is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
3381  * FALSE, set @a depth to #svn_depth_files.
3382  *
3383  * @deprecated Provided for backwards compatibility with the 1.4 API.
3384  *
3385  * @since New in 1.4.
3386  */
3388 svn_error_t *
3389 svn_client_merge_peg2(const char *source,
3390  const svn_opt_revision_t *revision1,
3391  const svn_opt_revision_t *revision2,
3392  const svn_opt_revision_t *peg_revision,
3393  const char *target_wcpath,
3394  svn_boolean_t recurse,
3395  svn_boolean_t ignore_ancestry,
3396  svn_boolean_t force,
3397  svn_boolean_t dry_run,
3398  const apr_array_header_t *merge_options,
3399  svn_client_ctx_t *ctx,
3400  apr_pool_t *pool);
3401 
3402 /**
3403  * Similar to svn_client_merge_peg2(), but with @a merge_options set to
3404  * NULL.
3405  *
3406  * @deprecated Provided for backwards compatibility with the 1.3 API.
3407  *
3408  * @since New in 1.1.
3409  */
3411 svn_error_t *
3412 svn_client_merge_peg(const char *source,
3413  const svn_opt_revision_t *revision1,
3414  const svn_opt_revision_t *revision2,
3415  const svn_opt_revision_t *peg_revision,
3416  const char *target_wcpath,
3417  svn_boolean_t recurse,
3418  svn_boolean_t ignore_ancestry,
3419  svn_boolean_t force,
3420  svn_boolean_t dry_run,
3421  svn_client_ctx_t *ctx,
3422  apr_pool_t *pool);
3423 
3424 
3425 /** Set @a suggestions to an ordered array of @c const char *
3426  * potential merge sources (expressed as full repository URLs) for @a
3427  * path_or_url at @a peg_revision. @a path_or_url is a working copy
3428  * path or repository URL. @a ctx is a context used for
3429  * authentication in the repository case. Use @a pool for all
3430  * allocations.
3431  *
3432  * @since New in 1.5.
3433  */
3434 svn_error_t *
3435 svn_client_suggest_merge_sources(apr_array_header_t **suggestions,
3436  const char *path_or_url,
3437  const svn_opt_revision_t *peg_revision,
3438  svn_client_ctx_t *ctx,
3439  apr_pool_t *pool);
3440 
3441 
3442 /**
3443  * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge
3444  * source URLs to <tt>apr_array_header_t *</tt> rangelists (arrays of
3445  * <tt>svn_merge_range_t *</tt> ranges) describing the ranges which
3446  * have been merged into @a path_or_url as of @a peg_revision, per
3447  * @a path_or_url's explicit mergeinfo or inherited mergeinfo if no
3448  * explicit mergeinfo if found. If no explicit or inherited mergeinfo
3449  * is found, then set @a *mergeinfo to NULL.
3450  *
3451  * Use @a pool for all necessary allocations.
3452  *
3453  * If the server doesn't support retrieval of mergeinfo (which will
3454  * never happen for file:// URLs), return an
3455  * #SVN_ERR_UNSUPPORTED_FEATURE error.
3456  *
3457  * @note Unlike most APIs which deal with mergeinfo, this one returns
3458  * data where the keys of the hash are absolute repository URLs rather
3459  * than repository filesystem paths.
3460  *
3461  * @since New in 1.5.
3462  */
3463 svn_error_t *
3464 svn_client_mergeinfo_get_merged(apr_hash_t **mergeinfo,
3465  const char *path_or_url,
3466  const svn_opt_revision_t *peg_revision,
3467  svn_client_ctx_t *ctx,
3468  apr_pool_t *pool);
3469 
3470 
3471 /**
3472  * If @a finding_merged is TRUE, then drive log entry callbacks
3473  * @a receiver / @a receiver_baton with the revisions merged from
3474  * @a merge_source_path_or_url (as of @a src_peg_revision) into
3475  * @a path_or_url (as of @a peg_revision). If @a finding_merged is FALSE
3476  * then find the revisions eligible for merging.
3477  *
3478  * If @a depth is #svn_depth_empty consider only the explicit or
3479  * inherited mergeinfo on @a path_or_url when calculating merged revisions
3480  * from @a merge_source_path_or_url. If @a depth is #svn_depth_infinity
3481  * then also consider the explicit subtree mergeinfo under @a path_or_url.
3482  * If a depth other than #svn_depth_empty or #svn_depth_infinity is
3483  * requested then return a #SVN_ERR_UNSUPPORTED_FEATURE error.
3484  *
3485  * @a discover_changed_paths and @a revprops are the same as for
3486  * svn_client_log5(). Use @a scratch_pool for all temporary allocations.
3487  *
3488  * @a ctx is a context used for authentication.
3489  *
3490  * If the server doesn't support retrieval of mergeinfo, return an
3491  * #SVN_ERR_UNSUPPORTED_FEATURE error.
3492  *
3493  * @since New in 1.7.
3494  */
3495 svn_error_t *
3497  const char *path_or_url,
3498  const svn_opt_revision_t *peg_revision,
3499  const char *merge_source_path_or_url,
3500  const svn_opt_revision_t *src_peg_revision,
3501  svn_log_entry_receiver_t receiver,
3502  void *receiver_baton,
3503  svn_boolean_t discover_changed_paths,
3504  svn_depth_t depth,
3505  const apr_array_header_t *revprops,
3506  svn_client_ctx_t *ctx,
3507  apr_pool_t *scratch_pool);
3508 
3509 /**
3510  * Similar to svn_client_mergeinfo_log(), but finds only merged revisions
3511  * and always operates at @a depth #svn_depth_empty.
3512  *
3513  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
3514  * svn_client_mergeinfo_log() instead.
3515  * @since New in 1.5.
3516  */
3518 svn_error_t *
3519 svn_client_mergeinfo_log_merged(const char *path_or_url,
3520  const svn_opt_revision_t *peg_revision,
3521  const char *merge_source_path_or_url,
3522  const svn_opt_revision_t *src_peg_revision,
3523  svn_log_entry_receiver_t receiver,
3524  void *receiver_baton,
3525  svn_boolean_t discover_changed_paths,
3526  const apr_array_header_t *revprops,
3527  svn_client_ctx_t *ctx,
3528  apr_pool_t *pool);
3529 
3530 /**
3531  * Similar to svn_client_mergeinfo_log(), but finds only eligible revisions
3532  * and always operates at @a depth #svn_depth_empty.
3533  *
3534  * @deprecated Provided for backwards compatibility with the 1.6 API. Use
3535  * svn_client_mergeinfo_log() instead.
3536  * @since New in 1.5.
3537  */
3539 svn_error_t *
3540 svn_client_mergeinfo_log_eligible(const char *path_or_url,
3541  const svn_opt_revision_t *peg_revision,
3542  const char *merge_source_path_or_url,
3543  const svn_opt_revision_t *src_peg_revision,
3544  svn_log_entry_receiver_t receiver,
3545  void *receiver_baton,
3546  svn_boolean_t discover_changed_paths,
3547  const apr_array_header_t *revprops,
3548  svn_client_ctx_t *ctx,
3549  apr_pool_t *pool);
3550 
3551 /** @} */
3552 
3553 /**
3554  * @defgroup Cleanup Cleanup an abnormally terminated working copy.
3555  *
3556  * @{
3557  */
3558 
3559 /** Recursively cleanup a working copy directory @a dir, finishing any
3560  * incomplete operations, removing lockfiles, etc.
3561  *
3562  * If @a ctx->cancel_func is non-NULL, invoke it with @a
3563  * ctx->cancel_baton at various points during the operation. If it
3564  * returns an error (typically #SVN_ERR_CANCELLED), return that error
3565  * immediately.
3566  *
3567  * Use @a scratch_pool for any temporary allocations.
3568  */
3569 svn_error_t *
3570 svn_client_cleanup(const char *dir,
3571  svn_client_ctx_t *ctx,
3572  apr_pool_t *scratch_pool);
3573 
3574 
3575 /** @} */
3576 
3577 /**
3578  * @defgroup Upgrade Upgrade a working copy.
3579  *
3580  * @{
3581  */
3582 
3583 /** Recursively upgrade a working copy from any older format to the current
3584  * WC metadata storage format. @a wcroot_dir is the path to the WC root.
3585  *
3586  * Use @a scratch_pool for any temporary allocations.
3587  *
3588  * @since New in 1.7.
3589  */
3590 svn_error_t *
3591 svn_client_upgrade(const char *wcroot_dir,
3592  svn_client_ctx_t *ctx,
3593  apr_pool_t *scratch_pool);
3594 
3595 
3596 /** @} */
3597 
3598 /**
3599  * @defgroup Relocate Switch a working copy to a different repository.
3600  *
3601  * @{
3602  */
3603 
3604 /**
3605  * Recursively modify a working copy rooted at @a wcroot_dir, changing
3606  * any repository URLs that begin with @a from_prefix to begin with @a
3607  * to_prefix instead.
3608  *
3609  * @param wcroot_dir Working copy root directory
3610  * @param from_prefix Original URL
3611  * @param to_prefix New URL
3612  * @param ignore_externals If not set, recurse into external working
3613  * copies after relocating the primary working copy
3614  * @param ctx svn_client_ctx_t
3615  * @param pool The pool from which to perform memory allocations
3616  *
3617  * @since New in 1.7
3618  */
3619 svn_error_t *
3620 svn_client_relocate2(const char *wcroot_dir,
3621  const char *from_prefix,
3622  const char *to_prefix,
3623  svn_boolean_t ignore_externals,
3624  svn_client_ctx_t *ctx,
3625  apr_pool_t *pool);
3626 
3627 /**
3628  * Similar to svn_client_relocate2(), but with @a ignore_externals
3629  * always TRUE.
3630  *
3631  * @note As of the 1.7 API, @a dir is required to be a working copy
3632  * root directory, and @a recurse is required to be TRUE.
3633  *
3634  * @deprecated Provided for limited backwards compatibility with the
3635  * 1.6 API.
3636  */
3638 svn_error_t *
3639 svn_client_relocate(const char *dir,
3640  const char *from_prefix,
3641  const char *to_prefix,
3642  svn_boolean_t recurse,
3643  svn_client_ctx_t *ctx,
3644  apr_pool_t *pool);
3645 
3646 /** @} */
3647 
3648 /**
3649  * @defgroup Revert Remove local changes in a repository.
3650  *
3651  * @{
3652  */
3653 
3654 /**
3655  * Restore the pristine version of a working copy @a paths,
3656  * effectively undoing any local mods. For each path in @a paths,
3657  * revert it if it is a file. Else if it is a directory, revert
3658  * according to @a depth:
3659  *
3660  * If @a depth is #svn_depth_empty, revert just the properties on
3661  * the directory; else if #svn_depth_files, revert the properties
3662  * and any files immediately under the directory; else if
3663  * #svn_depth_immediates, revert all of the preceding plus
3664  * properties on immediate subdirectories; else if #svn_depth_infinity,
3665  * revert path and everything under it fully recursively.
3666  *
3667  * @a changelists is an array of <tt>const char *</tt> changelist
3668  * names, used as a restrictive filter on items reverted; that is,
3669  * don't revert any item unless it's a member of one of those
3670  * changelists. If @a changelists is empty (or altogether @c NULL),
3671  * no changelist filtering occurs.
3672  *
3673  * If @a ctx->notify_func2 is non-NULL, then for each item reverted,
3674  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of
3675  * the reverted item.
3676  *
3677  * If an item specified for reversion is not under version control,
3678  * then do not error, just invoke @a ctx->notify_func2 with @a
3679  * ctx->notify_baton2, using notification code #svn_wc_notify_skip.
3680  *
3681  * @since New in 1.5.
3682  */
3683 svn_error_t *
3684 svn_client_revert2(const apr_array_header_t *paths,
3685  svn_depth_t depth,
3686  const apr_array_header_t *changelists,
3687  svn_client_ctx_t *ctx,
3688  apr_pool_t *pool);
3689 
3690 
3691 /**
3692  * Similar to svn_client_revert2(), but with @a changelists passed as
3693  * @c NULL, and @a depth set according to @a recurse: if @a recurse is
3694  * TRUE, @a depth is #svn_depth_infinity, else if @a recurse is
3695  * FALSE, @a depth is #svn_depth_empty.
3696  *
3697  * @note Most APIs map @a recurse==FALSE to @a depth==svn_depth_files;
3698  * revert is deliberately different.
3699  *
3700  * @deprecated Provided for backwards compatibility with the 1.0 API.
3701  */
3703 svn_error_t *
3704 svn_client_revert(const apr_array_header_t *paths,
3705  svn_boolean_t recursive,
3706  svn_client_ctx_t *ctx,
3707  apr_pool_t *pool);
3708 
3709 
3710 /** @} */
3711 
3712 /**
3713  * @defgroup Resolved Mark conflicted paths as resolved.
3714  *
3715  * @{
3716  */
3717 
3718 /**
3719  * Similar to svn_client_resolve(), but without automatic conflict
3720  * resolution support.
3721  *
3722  * @deprecated Provided for backward compatibility with the 1.4 API.
3723  * Use svn_client_resolve() with @a conflict_choice == @c
3724  * svn_wc_conflict_choose_merged instead.
3725  */
3727 svn_error_t *
3728 svn_client_resolved(const char *path,
3729  svn_boolean_t recursive,
3730  svn_client_ctx_t *ctx,
3731  apr_pool_t *pool);
3732 
3733 /** Perform automatic conflict resolution on a working copy @a path.
3734  *
3735  * If @a depth is #svn_depth_empty, act only on @a path; if
3736  * #svn_depth_files, resolve @a path and its conflicted file
3737  * children (if any); if #svn_depth_immediates, resolve @a path and
3738  * all its immediate conflicted children (both files and directories,
3739  * if any); if #svn_depth_infinity, resolve @a path and every
3740  * conflicted file or directory anywhere beneath it.
3741  * Note that this operation will try to lock the parent directory of
3742  * @a path in order to be able to resolve tree-conflicts on @a path.
3743  *
3744  * If @a conflict_choice is #svn_wc_conflict_choose_base, resolve the
3745  * conflict with the old file contents; if
3746  * #svn_wc_conflict_choose_mine_full, use the original working contents;
3747  * if #svn_wc_conflict_choose_theirs_full, the new contents; and if
3748  * #svn_wc_conflict_choose_merged, don't change the contents at all,
3749  * just remove the conflict status, which is the pre-1.5 behavior.
3750  *
3751  * #svn_wc_conflict_choose_theirs_conflict and
3752  * #svn_wc_conflict_choose_mine_conflict are not legal for binary
3753  * files or properties.
3754  *
3755  * If @a path is not in a state of conflict to begin with, do nothing.
3756  * If @a path's conflict state is removed and @a ctx->notify_func2 is non-NULL,
3757  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and @a path.
3758  *
3759  * @since New in 1.5.
3760  */
3761 svn_error_t *
3762 svn_client_resolve(const char *path,
3763  svn_depth_t depth,
3764  svn_wc_conflict_choice_t conflict_choice,
3765  svn_client_ctx_t *ctx,
3766  apr_pool_t *pool);
3767 
3768 
3769 /** @} */
3770 
3771 /**
3772  * @defgroup Copy Copy paths in the working copy and repository.
3773  *
3774  * @{
3775  */
3776 
3777 /**
3778  * A structure which describes the source of a copy operation--its path,
3779  * revision, and peg revision.
3780  *
3781  * @since New in 1.5.
3782  */
3784 {
3785  /** The source path or URL. */
3786  const char *path;
3787 
3788  /** The source operational revision. */
3790 
3791  /** The source peg revision. */
3794 
3795 /** Copy each @a src in @a sources to @a dst_path.
3796  *
3797  * If multiple @a sources are given, @a dst_path must be a directory,
3798  * and @a sources will be copied as children of @a dst_path.
3799  *
3800  * @a sources must be an array of elements of type
3801  * <tt>svn_client_copy_source_t *</tt>.
3802  *
3803  * Each @a src in @a sources must be files or directories under version control,
3804  * or URLs of a versioned item in the repository. If @a sources has multiple
3805  * items, the @a src members must be all repository URLs or all working copy
3806  * paths.
3807  *
3808  * The parent of @a dst_path must already exist.
3809  *
3810  * If @a sources has only one item, attempt to copy it to @a dst_path. If
3811  * @a copy_as_child is TRUE and @a dst_path already exists, attempt to copy the
3812  * item as a child of @a dst_path. If @a copy_as_child is FALSE and
3813  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
3814  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
3815  * URL.
3816  *
3817  * If @a sources has multiple items, and @a copy_as_child is TRUE, all
3818  * @a sources are copied as children of @a dst_path. If any child of
3819  * @a dst_path already exists with the same name any item in @a sources,
3820  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
3821  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
3822  *
3823  * If @a sources has multiple items, and @a copy_as_child is FALSE, fail
3824  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
3825  *
3826  * If @a dst_path is a URL, use the authentication baton
3827  * in @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to immediately
3828  * attempt to commit the copy action in the repository.
3829  *
3830  * If @a dst_path is not a URL, then this is just a variant of
3831  * svn_client_add(), where the @a sources are scheduled for addition
3832  * as copies. No changes will happen to the repository until a commit occurs.
3833  * This scheduling can be removed with svn_client_revert2().
3834  *
3835  * If @a make_parents is TRUE, create any non-existent parent directories
3836  * also.
3837  *
3838  * If @a ignore_externals is set, don't process externals definitions
3839  * as part of this operation.
3840  *
3841  * If non-NULL, @a revprop_table is a hash table holding additional,
3842  * custom revision properties (<tt>const char *</tt> names mapped to
3843  * <tt>svn_string_t *</tt> values) to be set on the new revision in
3844  * the event that this is a committing operation. This table cannot
3845  * contain any standard Subversion properties.
3846  *
3847  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo
3848  * that this function can use to query for a commit log message when one is
3849  * needed.
3850  *
3851  * If @a ctx->notify_func2 is non-NULL, invoke it with @a ctx->notify_baton2
3852  * for each item added at the new location, passing the new, relative path of
3853  * the added item.
3854  *
3855  * If @a commit_callback is non-NULL, then for each successful commit, call
3856  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
3857  * the commit.
3858  *
3859  * @since New in 1.7.
3860  */
3861 svn_error_t *
3862 svn_client_copy6(const apr_array_header_t *sources,
3863  const char *dst_path,
3864  svn_boolean_t copy_as_child,
3865  svn_boolean_t make_parents,
3866  svn_boolean_t ignore_externals,
3867  const apr_hash_t *revprop_table,
3868  svn_commit_callback2_t commit_callback,
3869  void *commit_baton,
3870  svn_client_ctx_t *ctx,
3871  apr_pool_t *pool);
3872 
3873 /**
3874  * Similar to svn_client_copy6(), but returns the commit info in
3875  * @a *commit_info_p rather than through a callback function.
3876  *
3877  * @since New in 1.6.
3878  * @deprecated Provided for backward compatibility with the 1.6 API.
3879  */
3881 svn_error_t *
3882 svn_client_copy5(svn_commit_info_t **commit_info_p,
3883  const apr_array_header_t *sources,
3884  const char *dst_path,
3885  svn_boolean_t copy_as_child,
3886  svn_boolean_t make_parents,
3887  svn_boolean_t ignore_externals,
3888  const apr_hash_t *revprop_table,
3889  svn_client_ctx_t *ctx,
3890  apr_pool_t *pool);
3891 
3892 /**
3893  * Similar to svn_client_copy5(), with @a ignore_externals set to @c FALSE.
3894  *
3895  * @since New in 1.5.
3896  *
3897  * @deprecated Provided for backward compatibility with the 1.5 API.
3898  */
3900 svn_error_t *
3901 svn_client_copy4(svn_commit_info_t **commit_info_p,
3902  const apr_array_header_t *sources,
3903  const char *dst_path,
3904  svn_boolean_t copy_as_child,
3905  svn_boolean_t make_parents,
3906  const apr_hash_t *revprop_table,
3907  svn_client_ctx_t *ctx,
3908  apr_pool_t *pool);
3909 
3910 /**
3911  * Similar to svn_client_copy4(), with only one @a src_path, @a
3912  * copy_as_child set to @c FALSE, @a revprop_table passed as NULL, and
3913  * @a make_parents set to @c FALSE. Also, use @a src_revision as both
3914  * the operational and peg revision.
3915  *
3916  * @since New in 1.4.
3917  *
3918  * @deprecated Provided for backward compatibility with the 1.4 API.
3919  */
3921 svn_error_t *
3922 svn_client_copy3(svn_commit_info_t **commit_info_p,
3923  const char *src_path,
3924  const svn_opt_revision_t *src_revision,
3925  const char *dst_path,
3926  svn_client_ctx_t *ctx,
3927  apr_pool_t *pool);
3928 
3929 
3930 /**
3931  * Similar to svn_client_copy3(), with the difference that if @a dst_path
3932  * already exists and is a directory, copy the item into that directory,
3933  * keeping its name (the last component of @a src_path).
3934  *
3935  * @since New in 1.3.
3936  *
3937  * @deprecated Provided for backward compatibility with the 1.3 API.
3938  */
3940 svn_error_t *
3941 svn_client_copy2(svn_commit_info_t **commit_info_p,
3942  const char *src_path,
3943  const svn_opt_revision_t *src_revision,
3944  const char *dst_path,
3945  svn_client_ctx_t *ctx,
3946  apr_pool_t *pool);
3947 
3948 
3949 /**
3950  * Similar to svn_client_copy2(), but uses #svn_client_commit_info_t
3951  * for @a commit_info_p.
3952  *
3953  * @deprecated Provided for backward compatibility with the 1.2 API.
3954  */
3956 svn_error_t *
3958  const char *src_path,
3959  const svn_opt_revision_t *src_revision,
3960  const char *dst_path,
3961  svn_client_ctx_t *ctx,
3962  apr_pool_t *pool);
3963 
3964 
3965 /** @} */
3966 
3967 /**
3968  * @defgroup Move Move paths in the working copy or repository.
3969  *
3970  * @{
3971  */
3972 
3973 /**
3974  * Move @a src_paths to @a dst_path.
3975  *
3976  * @a src_paths must be files or directories under version control, or
3977  * URLs of versioned items in the repository. All @a src_paths must be of
3978  * the same type. If multiple @a src_paths are given, @a dst_path must be
3979  * a directory and @a src_paths will be moved as children of @a dst_path.
3980  *
3981  * If @a src_paths are repository URLs:
3982  *
3983  * - @a dst_path must also be a repository URL.
3984  *
3985  * - The authentication baton in @a ctx and @a ctx->log_msg_func/@a
3986  * ctx->log_msg_baton are used to commit the move.
3987  *
3988  * - The move operation will be immediately committed.
3989  *
3990  * If @a src_paths are working copy paths:
3991  *
3992  * - @a dst_path must also be a working copy path.
3993  *
3994  * - @a ctx->log_msg_func3 and @a ctx->log_msg_baton3 are ignored.
3995  *
3996  * - This is a scheduling operation. No changes will happen to the
3997  * repository until a commit occurs. This scheduling can be removed
3998  * with svn_client_revert2(). If one of @a src_paths is a file it is
3999  * removed from the working copy immediately. If one of @a src_path
4000  * is a directory it will remain in the working copy but all the files,
4001  * and unversioned items, it contains will be removed.
4002  *
4003  * The parent of @a dst_path must already exist.
4004  *
4005  * If @a src_paths has only one item, attempt to move it to @a dst_path. If
4006  * @a move_as_child is TRUE and @a dst_path already exists, attempt to move the
4007  * item as a child of @a dst_path. If @a move_as_child is FALSE and
4008  * @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path
4009  * is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a
4010  * URL.
4011  *
4012  * If @a src_paths has multiple items, and @a move_as_child is TRUE, all
4013  * @a src_paths are moved as children of @a dst_path. If any child of
4014  * @a dst_path already exists with the same name any item in @a src_paths,
4015  * fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and
4016  * #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
4017  *
4018  * If @a src_paths has multiple items, and @a move_as_child is FALSE, fail
4019  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
4020  *
4021  * If @a make_parents is TRUE, create any non-existent parent directories
4022  * also.
4023  *
4024  * If non-NULL, @a revprop_table is a hash table holding additional,
4025  * custom revision properties (<tt>const char *</tt> names mapped to
4026  * <tt>svn_string_t *</tt> values) to be set on the new revision in
4027  * the event that this is a committing operation. This table cannot
4028  * contain any standard Subversion properties.
4029  *
4030  * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo that
4031  * this function can use to query for a commit log message when one is needed.
4032  *
4033  * If @a ctx->notify_func2 is non-NULL, then for each item moved, call
4034  * @a ctx->notify_func2 with the @a ctx->notify_baton2 twice, once to indicate
4035  * the deletion of the moved thing, and once to indicate the addition of
4036  * the new location of the thing.
4037  *
4038  * ### Is this really true? What about svn_wc_notify_commit_replaced()? ###
4039  *
4040  * If @a commit_callback is non-NULL, then for each successful commit, call
4041  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
4042  * the commit.
4043  *
4044  * @since New in 1.7.
4045  */
4046 svn_error_t *
4047 svn_client_move6(const apr_array_header_t *src_paths,
4048  const char *dst_path,
4049  svn_boolean_t move_as_child,
4050  svn_boolean_t make_parents,
4051  const apr_hash_t *revprop_table,
4052  svn_commit_callback2_t commit_callback,
4053  void *commit_baton,
4054  svn_client_ctx_t *ctx,
4055  apr_pool_t *pool);
4056 
4057 /**
4058  * Similar to svn_client_move6(), but returns the commit info in
4059  * @a *commit_info_p rather than through a callback function.
4060  *
4061  * A WC-to-WC move will include any modified and/or unversioned children.
4062  * @a force is ignored.
4063  *
4064  * @since New in 1.5.
4065  * @deprecated Provided for backward compatibility with the 1.6 API.
4066  */
4068 svn_error_t *
4069 svn_client_move5(svn_commit_info_t **commit_info_p,
4070  const apr_array_header_t *src_paths,
4071  const char *dst_path,
4072  svn_boolean_t force,
4073  svn_boolean_t move_as_child,
4074  svn_boolean_t make_parents,
4075  const apr_hash_t *revprop_table,
4076  svn_client_ctx_t *ctx,
4077  apr_pool_t *pool);
4078 
4079 /**
4080  * Similar to svn_client_move5(), with only one @a src_path, @a
4081  * move_as_child set to @c FALSE, @a revprop_table passed as NULL, and
4082  * @a make_parents set to @c FALSE.
4083  *
4084  * Note: The behaviour of @a force changed in 1.5 (r860885 and r861421), when
4085  * the 'move' semantics were improved to just move the source including any
4086  * modified and/or unversioned items in it. Before that, @a force
4087  * controlled what happened to such items, but now @a force is ignored.
4088  *
4089  * @since New in 1.4.
4090  *
4091  * @deprecated Provided for backward compatibility with the 1.4 API.
4092  */
4094 svn_error_t *
4095 svn_client_move4(svn_commit_info_t **commit_info_p,
4096  const char *src_path,
4097  const char *dst_path,
4098  svn_boolean_t force,
4099  svn_client_ctx_t *ctx,
4100  apr_pool_t *pool);
4101 
4102 /**
4103  * Similar to svn_client_move4(), with the difference that if @a dst_path
4104  * already exists and is a directory, move the item into that directory,
4105  * keeping its name (the last component of @a src_path).
4106  *
4107  * @since New in 1.3.
4108  *
4109  * @deprecated Provided for backward compatibility with the 1.3 API.
4110  */
4112 svn_error_t *
4113 svn_client_move3(svn_commit_info_t **commit_info_p,
4114  const char *src_path,
4115  const char *dst_path,
4116  svn_boolean_t force,
4117  svn_client_ctx_t *ctx,
4118  apr_pool_t *pool);
4119 
4120 /**
4121  * Similar to svn_client_move3(), but uses #svn_client_commit_info_t
4122  * for @a commit_info_p.
4123  *
4124  * @deprecated Provided for backward compatibility with the 1.2 API.
4125  *
4126  * @since New in 1.2.
4127  */
4129 svn_error_t *
4131  const char *src_path,
4132  const char *dst_path,
4133  svn_boolean_t force,
4134  svn_client_ctx_t *ctx,
4135  apr_pool_t *pool);
4136 
4137 /**
4138  * Similar to svn_client_move2(), but an extra argument @a src_revision
4139  * must be passed. This has no effect, but must be of kind
4140  * #svn_opt_revision_unspecified or #svn_opt_revision_head,
4141  * otherwise error #SVN_ERR_UNSUPPORTED_FEATURE is returned.
4142  *
4143  * @deprecated Provided for backward compatibility with the 1.1 API.
4144  */
4146 svn_error_t *
4148  const char *src_path,
4149  const svn_opt_revision_t *src_revision,
4150  const char *dst_path,
4151  svn_boolean_t force,
4152  svn_client_ctx_t *ctx,
4153  apr_pool_t *pool);
4154 
4155 /** @} */
4156 
4157 
4158 /** Properties
4159  *
4160  * Note that certain svn-controlled properties must always have their
4161  * values set and stored in UTF8 with LF line endings. When
4162  * retrieving these properties, callers must convert the values back
4163  * to native locale and native line-endings before displaying them to
4164  * the user. For help with this task, see
4165  * svn_prop_needs_translation(), svn_subst_translate_string(), and
4166  * svn_subst_detranslate_string().
4167  *
4168  * @defgroup svn_client_prop_funcs Property functions
4169  * @{
4170  */
4171 
4172 
4173 /**
4174  * Set @a propname to @a propval on @a url. A @a propval of @c NULL will
4175  * delete the property.
4176  *
4177  * Immediately attempt to commit the property change in the repository,
4178  * using the authentication baton in @a ctx and @a
4179  * ctx->log_msg_func3/@a ctx->log_msg_baton3.
4180  *
4181  * If the property has changed on @a url since revision
4182  * @a base_revision_for_url (which must not be #SVN_INVALID_REVNUM), no
4183  * change will be made and an error will be returned.
4184  *
4185  * If non-NULL, @a revprop_table is a hash table holding additional,
4186  * custom revision properties (<tt>const char *</tt> names mapped to
4187  * <tt>svn_string_t *</tt> values) to be set on the new revision. This
4188  * table cannot contain any standard Subversion properties.
4189  *
4190  * If @a commit_callback is non-NULL, then call @a commit_callback with
4191  * @a commit_baton and a #svn_commit_info_t for the commit.
4192  *
4193  * If @a propname is an svn-controlled property (i.e. prefixed with
4194  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
4195  * the value is UTF8-encoded and uses LF line-endings.
4196  *
4197  * If @a skip_checks is TRUE, do no validity checking. But if @a
4198  * skip_checks is FALSE, and @a propname is not a valid property for @a
4199  * url, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the property is
4200  * not appropriate for @a url), or * #SVN_ERR_BAD_MIME_TYPE (if @a propname
4201  * is "svn:mime-type", but @a propval is not a valid mime-type).
4202  *
4203  * Use @a scratch_pool for all memory allocation.
4204  *
4205  * @since New in 1.7.
4206  */
4207 svn_error_t *
4208 svn_client_propset_remote(const char *propname,
4209  const svn_string_t *propval,
4210  const char *url,
4211  svn_boolean_t skip_checks,
4212  svn_revnum_t base_revision_for_url,
4213  const apr_hash_t *revprop_table,
4214  svn_commit_callback2_t commit_callback,
4215  void *commit_baton,
4216  svn_client_ctx_t *ctx,
4217  apr_pool_t *scratch_pool);
4218 
4219 /**
4220  * Set @a propname to @a propval on each (const char *) target in @a
4221  * targets. The targets must be all working copy paths. A @a propval
4222  * of @c NULL will delete the property.
4223  *
4224  * If @a depth is #svn_depth_empty, set the property on each member of
4225  * @a targets only; if #svn_depth_files, set it on @a targets and their
4226  * file children (if any); if #svn_depth_immediates, on @a targets and all
4227  * of their immediate children (both files and directories); if
4228  * #svn_depth_infinity, on @a targets and everything beneath them.
4229  *
4230  * @a changelists is an array of <tt>const char *</tt> changelist
4231  * names, used as a restrictive filter on items whose properties are
4232  * set; that is, don't set properties on any item unless it's a member
4233  * of one of those changelists. If @a changelists is empty (or
4234  * altogether @c NULL), no changelist filtering occurs.
4235  *
4236  * If @a propname is an svn-controlled property (i.e. prefixed with
4237  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
4238  * the value is UTF8-encoded and uses LF line-endings.
4239  *
4240  * If @a skip_checks is TRUE, do no validity checking. But if @a
4241  * skip_checks is FALSE, and @a propname is not a valid property for @a
4242  * targets, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the
4243  * property is not appropriate for @a targets), or
4244  * #SVN_ERR_BAD_MIME_TYPE (if @a propname is "svn:mime-type", but @a
4245  * propval is not a valid mime-type).
4246  *
4247  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
4248  * ctx->cancel_baton at various places during the operation.
4249  *
4250  * Use @a scratch_pool for all memory allocation.
4251  *
4252  * @since New in 1.7.
4253  */
4254 svn_error_t *
4255 svn_client_propset_local(const char *propname,
4256  const svn_string_t *propval,
4257  const apr_array_header_t *targets,
4258  svn_depth_t depth,
4259  svn_boolean_t skip_checks,
4260  const apr_array_header_t *changelists,
4261  svn_client_ctx_t *ctx,
4262  apr_pool_t *scratch_pool);
4263 
4264 /**
4265  * An amalgamation of svn_client_propset_local() and
4266  * svn_client_propset_remote() that takes only a single target, and
4267  * returns the commit info in @a *commit_info_p rather than through a
4268  * callback function.
4269  *
4270  * @since New in 1.5.
4271  * @deprecated Provided for backward compatibility with the 1.6 API.
4272  */
4274 svn_error_t *
4275 svn_client_propset3(svn_commit_info_t **commit_info_p,
4276  const char *propname,
4277  const svn_string_t *propval,
4278  const char *target,
4279  svn_depth_t depth,
4280  svn_boolean_t skip_checks,
4281  svn_revnum_t base_revision_for_url,
4282  const apr_array_header_t *changelists,
4283  const apr_hash_t *revprop_table,
4284  svn_client_ctx_t *ctx,
4285  apr_pool_t *pool);
4286 
4287 /**
4288  * Like svn_client_propset3(), but with @a base_revision_for_url
4289  * always #SVN_INVALID_REVNUM; @a commit_info_p always @c NULL; @a
4290  * changelists always @c NULL; @a revprop_table always @c NULL; and @a
4291  * depth set according to @a recurse: if @a recurse is TRUE, @a depth
4292  * is #svn_depth_infinity, else #svn_depth_empty.
4293  *
4294  * @deprecated Provided for backward compatibility with the 1.4 API.
4295  */
4297 svn_error_t *
4298 svn_client_propset2(const char *propname,
4299  const svn_string_t *propval,
4300  const char *target,
4301  svn_boolean_t recurse,
4302  svn_boolean_t skip_checks,
4303  svn_client_ctx_t *ctx,
4304  apr_pool_t *pool);
4305 
4306 /**
4307  * Like svn_client_propset2(), but with @a skip_checks always FALSE and a
4308  * newly created @a ctx.
4309  *
4310  * @deprecated Provided for backward compatibility with the 1.1 API.
4311  */
4313 svn_error_t *
4314 svn_client_propset(const char *propname,
4315  const svn_string_t *propval,
4316  const char *target,
4317  svn_boolean_t recurse,
4318  apr_pool_t *pool);
4319 
4320 /** Set @a propname to @a propval on revision @a revision in the repository
4321  * represented by @a URL. Use the authentication baton in @a ctx for
4322  * authentication, and @a pool for all memory allocation. Return the actual
4323  * rev affected in @a *set_rev. A @a propval of @c NULL will delete the
4324  * property.
4325  *
4326  * If @a original_propval is non-NULL, then just before setting the
4327  * new value, check that the old value matches @a original_propval;
4328  * if they do not match, return the error #SVN_ERR_RA_OUT_OF_DATE.
4329  * This is to help clients support interactive editing of revprops:
4330  * without this check, the window during which the property may change
4331  * underneath the user is as wide as the amount of time the user
4332  * spends editing the property. With this check, the window is
4333  * reduced to a small, constant amount of time right before we set the
4334  * new value. (To check that an old value is still non-existent, set
4335  * @a original_propval->data to NULL, and @a original_propval->len is
4336  * ignored.)
4337  * If the server advertises #SVN_RA_CAPABILITY_ATOMIC_REVPROPS, the
4338  * check of @a original_propval is done atomically.
4339  *
4340  * Note: the representation of "property is not set" in @a
4341  * original_propval differs from the representation in other APIs
4342  * (such as svn_fs_change_rev_prop2() and svn_ra_change_rev_prop2()).
4343  *
4344  * If @a force is TRUE, allow newlines in the author property.
4345  *
4346  * If @a propname is an svn-controlled property (i.e. prefixed with
4347  * #SVN_PROP_PREFIX), then the caller is responsible for ensuring that
4348  * the value UTF8-encoded and uses LF line-endings.
4349  *
4350  * Note that unlike its cousin svn_client_propset3(), this routine
4351  * doesn't affect the working copy at all; it's a pure network
4352  * operation that changes an *unversioned* property attached to a
4353  * revision. This can be used to tweak log messages, dates, authors,
4354  * and the like. Be careful: it's a lossy operation.
4355 
4356  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
4357  * functions and baton which are called upon successful setting of the
4358  * property.
4359  *
4360  * Also note that unless the administrator creates a
4361  * pre-revprop-change hook in the repository, this feature will fail.
4362  *
4363  * @since New in 1.6.
4364  */
4365 svn_error_t *
4366 svn_client_revprop_set2(const char *propname,
4367  const svn_string_t *propval,
4368  const svn_string_t *original_propval,
4369  const char *URL,
4370  const svn_opt_revision_t *revision,
4371  svn_revnum_t *set_rev,
4372  svn_boolean_t force,
4373  svn_client_ctx_t *ctx,
4374  apr_pool_t *pool);
4375 
4376 /**
4377  * Similar to svn_client_revprop_set2(), but with @a original_propval
4378  * always @c NULL.
4379  *
4380  * @deprecated Provided for backward compatibility with the 1.5 API.
4381  */
4383 svn_error_t *
4384 svn_client_revprop_set(const char *propname,
4385  const svn_string_t *propval,
4386  const char *URL,
4387  const svn_opt_revision_t *revision,
4388  svn_revnum_t *set_rev,
4389  svn_boolean_t force,
4390  svn_client_ctx_t *ctx,
4391  apr_pool_t *pool);
4392 
4393 /**
4394  * Set @a *props to a hash table whose keys are absolute paths or URLs
4395  * of items on which property @a propname is set, and whose values are
4396  * `#svn_string_t *' representing the property value for @a propname
4397  * at that path.
4398  *
4399  * Allocate @a *props, its keys, and its values in @a pool, use
4400  * @a scratch_pool for temporary allocations.
4401  *
4402  * Don't store any path, not even @a target, if it does not have a
4403  * property named @a propname.
4404  *
4405  * If @a revision->kind is #svn_opt_revision_unspecified, then: get
4406  * properties from the working copy if @a target is a working copy
4407  * path, or from the repository head if @a target is a URL. Else get
4408  * the properties as of @a revision. The actual node revision
4409  * selected is determined by the path as it exists in @a peg_revision.
4410  * If @a peg_revision->kind is #svn_opt_revision_unspecified, then
4411  * it defaults to #svn_opt_revision_head for URLs or
4412  * #svn_opt_revision_working for WC targets. Use the authentication
4413  * baton in @a ctx for authentication if contacting the repository.
4414  * If @a actual_revnum is not @c NULL, the actual revision number used
4415  * for the fetch is stored in @a *actual_revnum.
4416  *
4417  * If @a depth is #svn_depth_empty, fetch the property from
4418  * @a target only; if #svn_depth_files, fetch from @a target and its
4419  * file children (if any); if #svn_depth_immediates, from @a target
4420  * and all of its immediate children (both files and directories); if
4421  * #svn_depth_infinity, from @a target and everything beneath it.
4422  *
4423  * @a changelists is an array of <tt>const char *</tt> changelist
4424  * names, used as a restrictive filter on items whose properties are
4425  * gotten; that is, don't get @a propname on any item unless it's a member
4426  * of one of those changelists. If @a changelists is empty (or
4427  * altogether @c NULL), no changelist filtering occurs.
4428  *
4429  * If error, don't touch @a *props, otherwise @a *props is a hash table
4430  * even if empty.
4431  *
4432  * This function returns SVN_ERR_UNVERSIONED_RESOURCE when it is called on
4433  * unversioned nodes.
4434  *
4435  * @since New in 1.7.
4436  */
4437 svn_error_t *
4438 svn_client_propget4(apr_hash_t **props,
4439  const char *propname,
4440  const char *target,
4441  const svn_opt_revision_t *peg_revision,
4442  const svn_opt_revision_t *revision,
4443  svn_revnum_t *actual_revnum,
4444  svn_depth_t depth,
4445  const apr_array_header_t *changelists,
4446  svn_client_ctx_t *ctx,
4447  apr_pool_t *result_pool,
4448  apr_pool_t *scratch_pool);
4449 
4450 /**
4451  * Similar to svn_client_propget4(), but with the following change to the
4452  * output hash keys: keys are `<tt>char *</tt>' paths, prefixed by
4453  * @a target, which is a working copy path or a URL.
4454  *
4455  * This function returns SVN_ERR_ENTRY_NOT_FOUND where svn_client_propget4
4456  * would return SVN_ERR_UNVERSIONED_RESOURCE.
4457  *
4458  * @since New in 1.5.
4459  * @deprecated Provided for backward compatibility with the 1.6 API.
4460  */
4462 svn_error_t *
4463 svn_client_propget3(apr_hash_t **props,
4464  const char *propname,
4465  const char *target,
4466  const svn_opt_revision_t *peg_revision,
4467  const svn_opt_revision_t *revision,
4468  svn_revnum_t *actual_revnum,
4469  svn_depth_t depth,
4470  const apr_array_header_t *changelists,
4471  svn_client_ctx_t *ctx,
4472  apr_pool_t *pool);
4473 
4474 /**
4475  * Similar to svn_client_propget3(), except that @a actual_revnum and
4476  * @a changelists are always @c NULL, and @a depth is set according to
4477  * @a recurse: if @a recurse is TRUE, then @a depth is
4478  * #svn_depth_infinity, else #svn_depth_empty.
4479  *
4480  * @deprecated Provided for backward compatibility with the 1.4 API.
4481  */
4483 svn_error_t *
4484 svn_client_propget2(apr_hash_t **props,
4485  const char *propname,
4486  const char *target,
4487  const svn_opt_revision_t *peg_revision,
4488  const svn_opt_revision_t *revision,
4489  svn_boolean_t recurse,
4490  svn_client_ctx_t *ctx,
4491  apr_pool_t *pool);
4492 
4493 /**
4494  * Similar to svn_client_propget2(), except that @a peg_revision is
4495  * always the same as @a revision.
4496  *
4497  * @deprecated Provided for backward compatibility with the 1.1 API.
4498  */
4500 svn_error_t *
4501 svn_client_propget(apr_hash_t **props,
4502  const char *propname,
4503  const char *target,
4504  const svn_opt_revision_t *revision,
4505  svn_boolean_t recurse,
4506  svn_client_ctx_t *ctx,
4507  apr_pool_t *pool);
4508 
4509 /** Set @a *propval to the value of @a propname on revision @a revision
4510  * in the repository represented by @a URL. Use the authentication baton
4511  * in @a ctx for authentication, and @a pool for all memory allocation.
4512  * Return the actual rev queried in @a *set_rev.
4513  *
4514  * Note that unlike its cousin svn_client_propget(), this routine
4515  * doesn't affect the working copy at all; it's a pure network
4516  * operation that queries an *unversioned* property attached to a
4517  * revision. This can query log messages, dates, authors, and the
4518  * like.
4519  */
4520 svn_error_t *
4521 svn_client_revprop_get(const char *propname,
4522  svn_string_t **propval,
4523  const char *URL,
4524  const svn_opt_revision_t *revision,
4525  svn_revnum_t *set_rev,
4526  svn_client_ctx_t *ctx,
4527  apr_pool_t *pool);
4528 
4529 /**
4530  * Invoke @a receiver with @a receiver_baton to return the regular properties
4531  * of @a target, a URL or working copy path. @a receiver will be called
4532  * for each path encountered.
4533  *
4534  * If @a revision->kind is #svn_opt_revision_unspecified, then get
4535  * properties from the working copy, if @a target is a working copy
4536  * path, or from the repository head if @a target is a URL. Else get
4537  * the properties as of @a revision. The actual node revision
4538  * selected is determined by the path as it exists in @a peg_revision.
4539  * If @a peg_revision->kind is #svn_opt_revision_unspecified, then it
4540  * defaults to #svn_opt_revision_head for URLs or
4541  * #svn_opt_revision_working for WC targets. Use the authentication
4542  * baton cached in @a ctx for authentication if contacting the
4543  * repository.
4544  *
4545  * If @a depth is #svn_depth_empty, list only the properties of
4546  * @a target itself. If @a depth is #svn_depth_files, and
4547  * @a target is a directory, list the properties of @a target
4548  * and its file entries. If #svn_depth_immediates, list the properties
4549  * of its immediate file and directory entries. If #svn_depth_infinity,
4550  * list the properties of its file entries and recurse (with
4551  * #svn_depth_infinity) on directory entries. #svn_depth_unknown is
4552  * equivalent to #svn_depth_empty. All other values produce undefined
4553  * results.
4554  *
4555  * @a changelists is an array of <tt>const char *</tt> changelist
4556  * names, used as a restrictive filter on items whose properties are
4557  * listed; that is, don't list properties on any item unless it's a member
4558  * of one of those changelists. If @a changelists is empty (or
4559  * altogether @c NULL), no changelist filtering occurs.
4560  *
4561  * If @a target is not found, return the error #SVN_ERR_ENTRY_NOT_FOUND.
4562  *
4563  * @since New in 1.5.
4564  */
4565 svn_error_t *
4566 svn_client_proplist3(const char *target,
4567  const svn_opt_revision_t *peg_revision,
4568  const svn_opt_revision_t *revision,
4569  svn_depth_t depth,
4570  const apr_array_header_t *changelists,
4571  svn_proplist_receiver_t receiver,
4572  void *receiver_baton,
4573  svn_client_ctx_t *ctx,
4574  apr_pool_t *pool);
4575 
4576 /**
4577  * Similar to svn_client_proplist3(), except the properties are
4578  * returned as an array of #svn_client_proplist_item_t * structures
4579  * instead of by invoking the receiver function, there's no support
4580  * for @a changelists filtering, and @a recurse is used instead of a
4581  * #svn_depth_t parameter (FALSE corresponds to #svn_depth_empty,
4582  * and TRUE to #svn_depth_infinity).
4583  *
4584  * @since New in 1.2.
4585  *
4586  * @deprecated Provided for backward compatibility with the 1.4 API.
4587  */
4589 svn_error_t *
4590 svn_client_proplist2(apr_array_header_t **props,
4591  const char *target,
4592  const svn_opt_revision_t *peg_revision,
4593  const svn_opt_revision_t *revision,
4594  svn_boolean_t recurse,
4595  svn_client_ctx_t *ctx,
4596  apr_pool_t *pool);
4597 
4598 /**
4599  * Similar to svn_client_proplist2(), except that @a peg_revision is
4600  * always the same as @a revision.
4601  *
4602  * @deprecated Provided for backward compatibility with the 1.1 API.
4603  */
4605 svn_error_t *
4606 svn_client_proplist(apr_array_header_t **props,
4607  const char *target,
4608  const svn_opt_revision_t *revision,
4609  svn_boolean_t recurse,
4610  svn_client_ctx_t *ctx,
4611  apr_pool_t *pool);
4612 
4613 /** Set @a *props to a hash of the revision props attached to @a revision in
4614  * the repository represented by @a URL. Use the authentication baton cached
4615  * in @a ctx for authentication, and @a pool for all memory allocation.
4616  * Return the actual rev queried in @a *set_rev.
4617  *
4618  * The allocated hash maps (<tt>const char *</tt>) property names to
4619  * (#svn_string_t *) property values.
4620  *
4621  * Note that unlike its cousin svn_client_proplist(), this routine
4622  * doesn't read a working copy at all; it's a pure network operation
4623  * that reads *unversioned* properties attached to a revision.
4624  */
4625 svn_error_t *
4626 svn_client_revprop_list(apr_hash_t **props,
4627  const char *URL,
4628  const svn_opt_revision_t *revision,
4629  svn_revnum_t *set_rev,
4630  svn_client_ctx_t *ctx,
4631  apr_pool_t *pool);
4632 /** @} */
4633 
4634 
4635 /**
4636  * @defgroup Export Export a tree from version control.
4637  *
4638  * @{
4639  */
4640 
4641 /**
4642  * Export the contents of either a subversion repository or a
4643  * subversion working copy into a 'clean' directory (meaning a
4644  * directory with no administrative directories). If @a result_rev
4645  * is not @c NULL and the path being exported is a repository URL, set
4646  * @a *result_rev to the value of the revision actually exported (set
4647  * it to #SVN_INVALID_REVNUM for local exports).
4648  *
4649  * @a from_path_or_url is either the path the working copy on disk, or
4650  * a URL to the repository you wish to export.
4651  *
4652  * When exporting a directory, @a to_path is the path to the directory
4653  * where you wish to create the exported tree; when exporting a file, it
4654  * is the path of the file that will be created. If @a to_path is the
4655  * empty path, then the basename of the export file/directory in the repository
4656  * will be used. If @a to_path represents an existing directory, and a
4657  * file is being exported, then a file with the that basename will be
4658  * created under that directory (as with 'copy' operations).
4659  *
4660  * @a peg_revision is the revision where the path is first looked up
4661  * when exporting from a repository. If @a peg_revision->kind is
4662  * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
4663  * for URLs or #svn_opt_revision_working for WC targets.
4664  *
4665  * @a revision is the revision that should be exported, which is only used
4666  * when exporting from a repository.
4667  *
4668  * @a peg_revision and @a revision must not be @c NULL.
4669  *
4670  * @a ctx->notify_func2 and @a ctx->notify_baton2 are the notification
4671  * functions and baton which are passed to svn_client_checkout() when
4672  * exporting from a repository.
4673  *
4674  * @a ctx is a context used for authentication in the repository case.
4675  *
4676  * @a overwrite if TRUE will cause the export to overwrite files or
4677  * directories.
4678  *
4679  * If @a ignore_externals is set, don't process externals definitions
4680  * as part of this operation.
4681  *
4682  * If @a ignore_keywords is set, don't expand keywords as part of this
4683  * operation.
4684  *
4685  * @a native_eol allows you to override the standard eol marker on the
4686  * platform you are running on. Can be either "LF", "CR" or "CRLF" or
4687  * NULL. If NULL will use the standard eol marker. Any other value
4688  * will cause the #SVN_ERR_IO_UNKNOWN_EOL error to be returned.
4689  *
4690  * If @a depth is #svn_depth_infinity, export fully recursively. Else
4691  * if it is #svn_depth_immediates, export @a from_path_or_url and its
4692  * immediate children (if any), but with subdirectories empty and at
4693  * #svn_depth_empty. Else if #svn_depth_files, export @a
4694  * from_path_or_url and its immediate file children (if any) only. If
4695  * @a depth is #svn_depth_empty, then export exactly @a
4696  * from_path_or_url and none of its children.
4697  *
4698  * All allocations are done in @a pool.
4699  *
4700  * @since New in 1.7.
4701  */
4702 svn_error_t *
4703 svn_client_export5(svn_revnum_t *result_rev,
4704  const char *from_path_or_url,
4705  const char *to_path,
4706  const svn_opt_revision_t *peg_revision,
4707  const svn_opt_revision_t *revision,
4708  svn_boolean_t overwrite,
4709  svn_boolean_t ignore_externals,
4710  svn_boolean_t ignore_keywords,
4711  svn_depth_t depth,
4712  const char *native_eol,
4713  svn_client_ctx_t *ctx,
4714  apr_pool_t *pool);
4715 
4716 /**
4717  * Similar to svn_client_export5(), but with @a ignore_keywords set
4718  * to FALSE.
4719  *
4720  * @deprecated Provided for backward compatibility with the 1.6 API.
4721  * @since New in 1.5.
4722  */
4724 svn_error_t *
4725 svn_client_export4(svn_revnum_t *result_rev,
4726  const char *from_path_or_url,
4727  const char *to_path,
4728  const svn_opt_revision_t *peg_revision,
4729  const svn_opt_revision_t *revision,
4730  svn_boolean_t overwrite,
4731  svn_boolean_t ignore_externals,
4732  svn_depth_t depth,
4733  const char *native_eol,
4734  svn_client_ctx_t *ctx,
4735  apr_pool_t *pool);
4736 
4737 
4738 /**
4739  * Similar to svn_client_export4(), but with @a depth set according to
4740  * @a recurse: if @a recurse is TRUE, set @a depth to
4741  * #svn_depth_infinity, if @a recurse is FALSE, set @a depth to
4742  * #svn_depth_files.
4743  *
4744  * @deprecated Provided for backward compatibility with the 1.4 API.
4745  *
4746  * @since New in 1.2.
4747  */
4749 svn_error_t *
4750 svn_client_export3(svn_revnum_t *result_rev,
4751  const char *from_path_or_url,
4752  const char *to_path,
4753  const svn_opt_revision_t *peg_revision,
4754  const svn_opt_revision_t *revision,
4755  svn_boolean_t overwrite,
4756  svn_boolean_t ignore_externals,
4757  svn_boolean_t recurse,
4758  const char *native_eol,
4759  svn_client_ctx_t *ctx,
4760  apr_pool_t *pool);
4761 
4762 
4763 /**
4764  * Similar to svn_client_export3(), but with @a peg_revision
4765  * always set to #svn_opt_revision_unspecified, @a overwrite set to
4766  * the value of @a force, @a ignore_externals always FALSE, and
4767  * @a recurse always TRUE.
4768  *
4769  * @since New in 1.1.
4770  * @deprecated Provided for backward compatibility with the 1.1 API.
4771  */
4773 svn_error_t *
4774 svn_client_export2(svn_revnum_t *result_rev,
4775  const char *from_path_or_url,
4776  const char *to_path,
4777  svn_opt_revision_t *revision,
4778  svn_boolean_t force,
4779  const char *native_eol,
4780  svn_client_ctx_t *ctx,
4781  apr_pool_t *pool);
4782 
4783 
4784 /**
4785  * Similar to svn_client_export2(), but with @a native_eol always set
4786  * to NULL.
4787  *
4788  * @deprecated Provided for backward compatibility with the 1.0 API.
4789  */
4791 svn_error_t *
4792 svn_client_export(svn_revnum_t *result_rev,
4793  const char *from_path_or_url,
4794  const char *to_path,
4795  svn_opt_revision_t *revision,
4796  svn_boolean_t force,
4797  svn_client_ctx_t *ctx,
4798  apr_pool_t *pool);
4799 
4800 /** @} */
4801 
4802 /**
4803  * @defgroup List List / ls
4804  *
4805  * @{
4806  */
4807 
4808 /** The type of function invoked by svn_client_list2() to report the details
4809  * of each directory entry being listed.
4810  *
4811  * @a baton is the baton that was passed to the caller. @a path is the
4812  * entry's path relative to @a abs_path; it is the empty path when reporting
4813  * the top node of the list operation. @a dirent contains some or all of
4814  * the directory entry's details, as determined by the caller. @a lock is
4815  * the entry's lock, if it is locked and if lock information is being
4816  * reported by the caller; otherwise @a lock is NULL. @a abs_path is the
4817  * repository path of the top node of the list operation; it is relative to
4818  * the repository root and begins with "/". @a pool may be used for
4819  * temporary allocations.
4820  *
4821  * @since New in 1.4.
4822  */
4823 typedef svn_error_t *(*svn_client_list_func_t)(void *baton,
4824  const char *path,
4825  const svn_dirent_t *dirent,
4826  const svn_lock_t *lock,
4827  const char *abs_path,
4828  apr_pool_t *pool);
4829 
4830 /**
4831  * Report the directory entry, and possibly children, for @a
4832  * path_or_url at @a revision. The actual node revision selected is
4833  * determined by the path as it exists in @a peg_revision. If @a
4834  * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
4835  * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
4836  * for WC targets.
4837  *
4838  * Report directory entries by invoking @a list_func/@a baton with @a path
4839  * relative to @a path_or_url. The dirent for @a path_or_url is reported
4840  * using an empty @a path. If @a path_or_url is a directory, also report
4841  * its children. If @a path_or_url is non-existent, return
4842  * #SVN_ERR_FS_NOT_FOUND.
4843  *
4844  * If @a fetch_locks is TRUE, include locks when reporting directory entries.
4845  *
4846  * Use @a pool for temporary allocations.
4847  *
4848  * Use authentication baton cached in @a ctx to authenticate against the
4849  * repository.
4850  *
4851  * If @a depth is #svn_depth_empty, list just @a path_or_url itself.
4852  * If @a depth is #svn_depth_files, list @a path_or_url and its file
4853  * entries. If #svn_depth_immediates, list its immediate file and
4854  * directory entries. If #svn_depth_infinity, list file entries and
4855  * recurse (with #svn_depth_infinity) on directory entries.
4856  *
4857  * @a dirent_fields controls which fields in the #svn_dirent_t's are
4858  * filled in. To have them totally filled in use #SVN_DIRENT_ALL,
4859  * otherwise simply bitwise OR together the combination of @c SVN_DIRENT_
4860  * fields you care about.
4861  *
4862  * @since New in 1.5.
4863  */
4864 svn_error_t *
4865 svn_client_list2(const char *path_or_url,
4866  const svn_opt_revision_t *peg_revision,
4867  const svn_opt_revision_t *revision,
4868  svn_depth_t depth,
4869  apr_uint32_t dirent_fields,
4870  svn_boolean_t fetch_locks,
4871  svn_client_list_func_t list_func,
4872  void *baton,
4873  svn_client_ctx_t *ctx,
4874  apr_pool_t *pool);
4875 
4876 /**
4877  * Similar to svn_client_list2(), but with @a recurse instead of @a depth.
4878  * If @a recurse is TRUE, pass #svn_depth_files for @a depth; else
4879  * pass #svn_depth_infinity.
4880  *
4881  * @since New in 1.4.
4882  *
4883  * @deprecated Provided for backward compatibility with the 1.4 API.
4884  */
4886 svn_error_t *
4887 svn_client_list(const char *path_or_url,
4888  const svn_opt_revision_t *peg_revision,
4889  const svn_opt_revision_t *revision,
4890  svn_boolean_t recurse,
4891  apr_uint32_t dirent_fields,
4892  svn_boolean_t fetch_locks,
4893  svn_client_list_func_t list_func,
4894  void *baton,
4895  svn_client_ctx_t *ctx,
4896  apr_pool_t *pool);
4897 
4898 /**
4899  * Same as svn_client_list(), but always passes #SVN_DIRENT_ALL for
4900  * the @a dirent_fields argument and returns all information in two
4901  * hash tables instead of invoking a callback.
4902  *
4903  * Set @a *dirents to a newly allocated hash of directory entries.
4904  * The @a dirents hash maps entry names (<tt>const char *</tt>) to
4905  * #svn_dirent_t *'s.
4906  *
4907  * If @a locks is not @c NULL, set @a *locks to a hash table mapping
4908  * entry names (<tt>const char *</tt>) to #svn_lock_t *'s.
4909  *
4910  * @since New in 1.3.
4911  *
4912  * @deprecated Provided for backward compatibility with the 1.3 API.
4913  * Use svn_client_list2() instead.
4914  */
4916 svn_error_t *
4917 svn_client_ls3(apr_hash_t **dirents,
4918  apr_hash_t **locks,
4919  const char *path_or_url,
4920  const svn_opt_revision_t *peg_revision,
4921  const svn_opt_revision_t *revision,
4922  svn_boolean_t recurse,
4923  svn_client_ctx_t *ctx,
4924  apr_pool_t *pool);
4925 
4926 /**
4927  * Same as svn_client_ls3(), but without the ability to get locks.
4928  *
4929  * @since New in 1.2.
4930  *
4931  * @deprecated Provided for backward compatibility with the 1.2 API.
4932  * Use svn_client_list2() instead.
4933  */
4935 svn_error_t *
4936 svn_client_ls2(apr_hash_t **dirents,
4937  const char *path_or_url,
4938  const svn_opt_revision_t *peg_revision,
4939  const svn_opt_revision_t *revision,
4940  svn_boolean_t recurse,
4941  svn_client_ctx_t *ctx,
4942  apr_pool_t *pool);
4943 
4944 /**
4945  * Similar to svn_client_ls2() except that @a peg_revision is always
4946  * the same as @a revision.
4947  *
4948  * @deprecated Provided for backward compatibility with the 1.1 API.
4949  * Use svn_client_list2() instead.
4950  */
4952 svn_error_t *
4953 svn_client_ls(apr_hash_t **dirents,
4954  const char *path_or_url,
4955  svn_opt_revision_t *revision,
4956  svn_boolean_t recurse,
4957  svn_client_ctx_t *ctx,
4958  apr_pool_t *pool);
4959 
4960 
4961 /** @} */
4962 
4963 /**
4964  * @defgroup Cat View the contents of a file in the repository.
4965  *
4966  * @{
4967  */
4968 
4969 /**
4970  * Output the content of a file.
4971  *
4972  * @param[in] out The stream to which the content will be written.
4973  * @param[in] path_or_url The path or URL of the file.
4974  * @param[in] peg_revision The peg revision.
4975  * @param[in] revision The operative revision.
4976  * @param[in] ctx The standard client context, used for possible
4977  * authentication.
4978  * @param[in] pool Used for any temporary allocation.
4979  *
4980  * @todo Add an expansion/translation flag?
4981  *
4982  * @return A pointer to an #svn_error_t of the type (this list is not
4983  * exhaustive): <br>
4984  * An unspecified error if @a revision is of kind
4985  * #svn_opt_revision_previous (or some other kind that requires
4986  * a local path), because the desired revision cannot be
4987  * determined. <br>
4988  * If no error occurred, return #SVN_NO_ERROR.
4989  *
4990  * @since New in 1.2.
4991  *
4992  * @see #svn_client_ctx_t <br> @ref clnt_revisions for
4993  * a discussion of operative and peg revisions.
4994  */
4995 svn_error_t *
4997  const char *path_or_url,
4998  const svn_opt_revision_t *peg_revision,
4999  const svn_opt_revision_t *revision,
5000  svn_client_ctx_t *ctx,
5001  apr_pool_t *pool);
5002 
5003 
5004 /**
5005  * Similar to svn_client_cat2() except that the peg revision is always
5006  * the same as @a revision.
5007  *
5008  * @deprecated Provided for backward compatibility with the 1.1 API.
5009  */
5011 svn_error_t *
5013  const char *path_or_url,
5014  const svn_opt_revision_t *revision,
5015  svn_client_ctx_t *ctx,
5016  apr_pool_t *pool);
5017 
5018 /** @} end group: cat */
5019 
5020 
5021 
5022 /** Changelist commands
5023  *
5024  * @defgroup svn_client_changelist_funcs Client Changelist Functions
5025  * @{
5026  */
5027 
5028 /** Implementation note:
5029  *
5030  * For now, changelists are implemented by scattering the
5031  * associations across multiple .svn/entries files in a working copy.
5032  * However, this client API was written so that we have the option of
5033  * changing the underlying implementation -- we may someday want to
5034  * store changelist definitions in a centralized database.
5035  */
5036 
5037 /**
5038  * Add each path in @a paths (recursing to @a depth as necessary) to
5039  * @a changelist. If a path is already a member of another
5040  * changelist, then remove it from the other changelist and add it to
5041  * @a changelist. (For now, a path cannot belong to two changelists
5042  * at once.)
5043  *
5044  * @a changelists is an array of <tt>const char *</tt> changelist
5045  * names, used as a restrictive filter on items whose changelist
5046  * assignments are adjusted; that is, don't tweak the changeset of any
5047  * item unless it's currently a member of one of those changelists.
5048  * If @a changelists is empty (or altogether @c NULL), no changelist
5049  * filtering occurs.
5050  *
5051  * @note This metadata is purely a client-side "bookkeeping"
5052  * convenience, and is entirely managed by the working copy.
5053  *
5054  * @since New in 1.5.
5055  */
5056 svn_error_t *
5057 svn_client_add_to_changelist(const apr_array_header_t *paths,
5058  const char *changelist,
5059  svn_depth_t depth,
5060  const apr_array_header_t *changelists,
5061  svn_client_ctx_t *ctx,
5062  apr_pool_t *pool);
5063 
5064 /**
5065  * Remove each path in @a paths (recursing to @a depth as necessary)
5066  * from changelists to which they are currently assigned.
5067  *
5068  * @a changelists is an array of <tt>const char *</tt> changelist
5069  * names, used as a restrictive filter on items whose changelist
5070  * assignments are removed; that is, don't remove from a changeset any
5071  * item unless it's currently a member of one of those changelists.
5072  * If @a changelists is empty (or altogether @c NULL), all changelist
5073  * assignments in and under each path in @a paths (to @a depth) will
5074  * be removed.
5075  *
5076  * @note This metadata is purely a client-side "bookkeeping"
5077  * convenience, and is entirely managed by the working copy.
5078  *
5079  * @since New in 1.5.
5080  */
5081 svn_error_t *
5082 svn_client_remove_from_changelists(const apr_array_header_t *paths,
5083  svn_depth_t depth,
5084  const apr_array_header_t *changelists,
5085  svn_client_ctx_t *ctx,
5086  apr_pool_t *pool);
5087 
5088 
5089 /**
5090  * Beginning at @a path, crawl to @a depth to discover every path in
5091  * or under @a path which belongs to one of the changelists in @a
5092  * changelists (an array of <tt>const char *</tt> changelist names).
5093  * If @a changelists is @c NULL, discover paths with any changelist.
5094  * Call @a callback_func (with @a callback_baton) each time a
5095  * changelist-having path is discovered.
5096  *
5097  * If @a ctx->cancel_func is not @c NULL, invoke it passing @a
5098  * ctx->cancel_baton during the recursive walk.
5099  *
5100  * @since New in 1.5.
5101  */
5102 svn_error_t *
5103 svn_client_get_changelists(const char *path,
5104  const apr_array_header_t *changelists,
5105  svn_depth_t depth,
5106  svn_changelist_receiver_t callback_func,
5107  void *callback_baton,
5108  svn_client_ctx_t *ctx,
5109  apr_pool_t *pool);
5110 
5111 /** @} */
5112 
5113 
5114 
5115 /** Locking commands
5116  *
5117  * @defgroup svn_client_locking_funcs Client Locking Functions
5118  * @{
5119  */
5120 
5121 /**
5122  * Lock @a targets in the repository. @a targets is an array of
5123  * <tt>const char *</tt> paths - either all working copy paths or URLs. All
5124  * @a targets must be in the same repository.
5125  *
5126  * If a target is already locked in the repository, no lock will be
5127  * acquired unless @a steal_lock is TRUE, in which case the locks are
5128  * stolen. @a comment, if non-NULL, is an xml-escapable description
5129  * stored with each lock in the repository. Each acquired lock will
5130  * be stored in the working copy if the targets are WC paths.
5131  *
5132  * For each target @a ctx->notify_func2/notify_baton2 will be used to indicate
5133  * whether it was locked. An action of #svn_wc_notify_locked
5134  * means that the path was locked. If the path was not locked because
5135  * it was out of date or there was already a lock in the repository,
5136  * the notification function will be called with
5137  * #svn_wc_notify_failed_lock, and the error passed in the notification
5138  * structure.
5139  *
5140  * Use @a pool for temporary allocations.
5141  *
5142  * @since New in 1.2.
5143  */
5144 svn_error_t *
5145 svn_client_lock(const apr_array_header_t *targets,
5146  const char *comment,
5147  svn_boolean_t steal_lock,
5148  svn_client_ctx_t *ctx,
5149  apr_pool_t *pool);
5150 
5151 /**
5152  * Unlock @a targets in the repository. @a targets is an array of
5153  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
5154  * All @a targets must be in the same repository.
5155  *
5156  * If the targets are WC paths, and @a break_lock is FALSE, the working
5157  * copy must contain a locks for each target.
5158  * If this is not the case, or the working copy lock doesn't match the
5159  * lock token in the repository, an error will be signaled.
5160  *
5161  * If the targets are URLs, the locks may be broken even if @a break_lock
5162  * is FALSE, but only if the lock owner is the same as the
5163  * authenticated user.
5164  *
5165  * If @a break_lock is TRUE, the locks will be broken in the
5166  * repository. In both cases, the locks, if any, will be removed from
5167  * the working copy if the targets are WC paths.
5168  *
5169  * The notification functions in @a ctx will be called for each
5170  * target. If the target was successfully unlocked,
5171  * #svn_wc_notify_unlocked will be used. Else, if the error is
5172  * directly related to unlocking the path (see
5173  * #SVN_ERR_IS_UNLOCK_ERROR), #svn_wc_notify_failed_unlock will be
5174  * used and the error will be passed in the notification structure.
5175 
5176  * Use @a pool for temporary allocations.
5177  *
5178  * @since New in 1.2.
5179  */
5180 svn_error_t *
5181 svn_client_unlock(const apr_array_header_t *targets,
5182  svn_boolean_t break_lock,
5183  svn_client_ctx_t *ctx,
5184  apr_pool_t *pool);
5185 
5186 /** @} */
5187 
5188 /**
5189  * @defgroup Info Show repository information about a working copy.
5190  *
5191  * @{
5192  */
5193 
5194 /** The size of the file is unknown.
5195  * Used as value in fields of type @c apr_size_t in #svn_info_t.
5196  *
5197  * @since New in 1.5
5198  * @deprecated Provided for backward compatibility with the 1.6 API.
5199  */
5200 #define SVN_INFO_SIZE_UNKNOWN ((apr_size_t) -1)
5201 
5202 /**
5203  * A structure which describes various system-generated metadata about
5204  * a working-copy path or URL.
5205  *
5206  * @note Fields may be added to the end of this structure in future
5207  * versions. Therefore, users shouldn't allocate structures of this
5208  * type, to preserve binary compatibility.
5209  *
5210  * @since New in 1.2.
5211  * @deprecated Provided for backward compatibility with the 1.6 API. The new
5212  * API is #svn_client_info2_t.
5213  */
5214 typedef struct svn_info_t
5215 {
5216  /** Where the item lives in the repository. */
5217  const char *URL;
5218 
5219  /** The revision of the object. If path_or_url is a working-copy
5220  * path, then this is its current working revnum. If path_or_url
5221  * is a URL, then this is the repos revision that path_or_url lives in. */
5223 
5224  /** The node's kind. */
5226 
5227  /** The root URL of the repository. */
5228  const char *repos_root_URL;
5229 
5230  /** The repository's UUID. */
5231  const char *repos_UUID;
5232 
5233  /** The last revision in which this object changed. */
5235 
5236  /** The date of the last_changed_rev. */
5237  apr_time_t last_changed_date;
5238 
5239  /** The author of the last_changed_rev. */
5240  const char *last_changed_author;
5241 
5242  /** An exclusive lock, if present. Could be either local or remote. */
5244 
5245  /** Whether or not to ignore the next 10 wc-specific fields. */
5247 
5248  /**
5249  * @name Working-copy path fields
5250  * These things only apply to a working-copy path.
5251  * See svn_wc_entry_t for explanations.
5252  * @{
5253  */
5254  svn_wc_schedule_t schedule;
5255  const char *copyfrom_url;
5256  svn_revnum_t copyfrom_rev;
5257  apr_time_t text_time;
5258  apr_time_t prop_time; /* will always be 0 for svn 1.4 and later */
5259  const char *checksum;
5260  const char *conflict_old;
5261  const char *conflict_new;
5262  const char *conflict_wrk;
5263  const char *prejfile;
5264  /** @since New in 1.5. */
5265  const char *changelist;
5266  /** @since New in 1.5. */
5268 
5269  /**
5270  * Similar to working_size64, but will be #SVN_INFO_SIZE_UNKNOWN when
5271  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
5272  *
5273  * @deprecated Provided for backward compatibility with the 1.5 API.
5274  */
5275  apr_size_t working_size;
5276 
5277  /** @} */
5278 
5279  /**
5280  * Similar to size64, but size will be #SVN_INFO_SIZE_UNKNOWN when
5281  * its value would overflow apr_size_t (so when size >= 4 GB - 1 byte).
5282  *
5283  * @deprecated Provided for backward compatibility with the 1.5 API.
5284  */
5285  apr_size_t size;
5286 
5287  /**
5288  * The size of the file in the repository (untranslated,
5289  * e.g. without adjustment of line endings and keyword
5290  * expansion). Only applicable for file -- not directory -- URLs.
5291  * For working copy paths, size64 will be #SVN_INVALID_FILESIZE.
5292  * @since New in 1.6.
5293  */
5295 
5296  /**
5297  * The size of the file after being translated into its local
5298  * representation, or #SVN_INVALID_FILESIZE if unknown.
5299  * Not applicable for directories.
5300  * @since New in 1.6.
5301  * @name Working-copy path fields
5302  * @{
5303  */
5304  svn_filesize_t working_size64;
5305 
5306  /**
5307  * Info on any tree conflict of which this node is a victim. Otherwise NULL.
5308  * @since New in 1.6.
5309  */
5311 
5312  /** @} */
5313 
5314 } svn_info_t;
5315 
5316 
5317 /**
5318  * The callback invoked by svn_client_info2(). Each invocation
5319  * describes @a path with the information present in @a info. Note
5320  * that any fields within @a info may be NULL if information is
5321  * unavailable. Use @a pool for all temporary allocation.
5322  *
5323  * @since New in 1.2.
5324  * @deprecated Provided for backward compatibility with the 1.6 API. The new
5325  * API is #svn_client_info_receiver2_t.
5326  */
5327 typedef svn_error_t *(*svn_info_receiver_t)(
5328  void *baton,
5329  const char *path,
5330  const svn_info_t *info,
5331  apr_pool_t *pool);
5332 
5333 /**
5334  * Return a duplicate of @a info, allocated in @a pool. No part of the new
5335  * structure will be shared with @a info.
5336  *
5337  * @since New in 1.3.
5338  * @deprecated Provided for backward compatibility with the 1.6 API. The new
5339  * API is #svn_client_info2_dup().
5340  */
5342 svn_info_t *
5343 svn_info_dup(const svn_info_t *info,
5344  apr_pool_t *pool);
5345 
5346 /**
5347  * A structure which describes various system-generated metadata about
5348  * a working-copy path or URL.
5349  *
5350  * @note Fields may be added to the end of this structure in future
5351  * versions. Therefore, users shouldn't allocate structures of this
5352  * type, to preserve binary compatibility.
5353  *
5354  * @since New in 1.7.
5355  */
5356 typedef struct svn_client_info2_t
5357 {
5358  /** Where the item lives in the repository. */
5359  const char *URL;
5360 
5361  /** The revision of the object. If the target is a working-copy
5362  * path, then this is its current working revnum. If the target
5363  * is a URL, then this is the repos revision that it lives in. */
5365 
5366  /** The root URL of the repository. */
5367  const char *repos_root_URL;
5368 
5369  /** The repository's UUID. */
5370  const char *repos_UUID;
5371 
5372  /** The node's kind. */
5374 
5375  /** The size of the file in the repository (untranslated,
5376  * e.g. without adjustment of line endings and keyword
5377  * expansion). Only applicable for file -- not directory -- URLs.
5378  * For working copy paths, @a size will be #SVN_INVALID_FILESIZE. */
5380 
5381  /** The last revision in which this object changed. */
5383 
5384  /** The date of the last_changed_rev. */
5385  apr_time_t last_changed_date;
5386 
5387  /** The author of the last_changed_rev. */
5388  const char *last_changed_author;
5389 
5390  /** An exclusive lock, if present. Could be either local or remote. */
5392 
5393  /** Possible information about the working copy, NULL if not valid. */
5395 
5397 
5398 /**
5399  * Return a duplicate of @a info, allocated in @a pool. No part of the new
5400  * structure will be shared with @a info.
5401  *
5402  * @since New in 1.7.
5403  */
5406  apr_pool_t *pool);
5407 
5408 /**
5409  * The callback invoked by info retrievers. Each invocation
5410  * describes @a abspath_or_url with the information present in @a info.
5411  * Use @a scratch_pool for all temporary allocation.
5412  *
5413  * @since New in 1.7.
5414  */
5415 typedef svn_error_t *(*svn_client_info_receiver2_t)(
5416  void *baton,
5417  const char *abspath_or_url,
5418  const svn_client_info2_t *info,
5419  apr_pool_t *scratch_pool);
5420 
5421 /**
5422  * Invoke @a receiver with @a receiver_baton to return information
5423  * about @a abspath_or_url in @a revision. The information returned is
5424  * system-generated metadata, not the sort of "property" metadata
5425  * created by users. See #svn_client_info2_t.
5426  *
5427  * If both revision arguments are either #svn_opt_revision_unspecified
5428  * or @c NULL, then information will be pulled solely from the working copy;
5429  * no network connections will be made.
5430  *
5431  * Otherwise, information will be pulled from a repository. The
5432  * actual node revision selected is determined by the @a abspath_or_url
5433  * as it exists in @a peg_revision. If @a peg_revision->kind is
5434  * #svn_opt_revision_unspecified, then it defaults to
5435  * #svn_opt_revision_head for URLs or #svn_opt_revision_working for
5436  * WC targets.
5437  *
5438  * If @a abspath_or_url is not a local path, then if @a revision is of
5439  * kind #svn_opt_revision_previous (or some other kind that requires
5440  * a local path), an error will be returned, because the desired
5441  * revision cannot be determined.
5442  *
5443  * Use the authentication baton cached in @a ctx to authenticate
5444  * against the repository.
5445  *
5446  * If @a abspath_or_url is a file, just invoke @a receiver on it. If it
5447  * is a directory, then descend according to @a depth. If @a depth is
5448  * #svn_depth_empty, invoke @a receiver on @a abspath_or_url and
5449  * nothing else; if #svn_depth_files, on @a abspath_or_url and its
5450  * immediate file children; if #svn_depth_immediates, the preceding
5451  * plus on each immediate subdirectory; if #svn_depth_infinity, then
5452  * recurse fully, invoking @a receiver on @a abspath_or_url and
5453  * everything beneath it.
5454  *
5455  * If @a fetch_excluded is TRUE, also also send excluded nodes in the working
5456  * copy to @a receiver, otherwise these are skipped. If @a fetch_actual_only
5457  * is TRUE also send nodes that don't exist as versioned but are still
5458  * tree conflicted.
5459  *
5460  * @a changelists is an array of <tt>const char *</tt> changelist
5461  * names, used as a restrictive filter on items whose info is
5462  * reported; that is, don't report info about any item unless
5463  * it's a member of one of those changelists. If @a changelists is
5464  * empty (or altogether @c NULL), no changelist filtering occurs.
5465  *
5466  * @since New in 1.7.
5467  */
5468 svn_error_t *
5469 svn_client_info3(const char *abspath_or_url,
5470  const svn_opt_revision_t *peg_revision,
5471  const svn_opt_revision_t *revision,
5472  svn_depth_t depth,
5473  svn_boolean_t fetch_excluded,
5474  svn_boolean_t fetch_actual_only,
5475  const apr_array_header_t *changelists,
5476  svn_client_info_receiver2_t receiver,
5477  void *receiver_baton,
5478  svn_client_ctx_t *ctx,
5479  apr_pool_t *scratch_pool);
5480 
5481 /** Similar to svn_client_info3, but uses an svn_info_receiver_t instead of
5482  * a #svn_client_info_receiver2_t, and @a path_or_url may be a relative path.
5483  *
5484  * @since New in 1.5.
5485  * @deprecated Provided for backward compatibility with the 1.6 API.
5486  */
5488 svn_error_t *
5489 svn_client_info2(const char *path_or_url,
5490  const svn_opt_revision_t *peg_revision,
5491  const svn_opt_revision_t *revision,
5492  svn_info_receiver_t receiver,
5493  void *receiver_baton,
5494  svn_depth_t depth,
5495  const apr_array_header_t *changelists,
5496  svn_client_ctx_t *ctx,
5497  apr_pool_t *pool);
5498 
5499 /**
5500  * Similar to svn_client_info2() but with @a changelists passed as @c
5501  * NULL, and @a depth set according to @a recurse: if @a recurse is
5502  * TRUE, @a depth is #svn_depth_infinity, else #svn_depth_empty.
5503  *
5504  * @deprecated Provided for backward compatibility with the 1.4 API.
5505  */
5507 svn_error_t *
5508 svn_client_info(const char *path_or_url,
5509  const svn_opt_revision_t *peg_revision,
5510  const svn_opt_revision_t *revision,
5511  svn_info_receiver_t receiver,
5512  void *receiver_baton,
5513  svn_boolean_t recurse,
5514  svn_client_ctx_t *ctx,
5515  apr_pool_t *pool);
5516 
5517 /**
5518  * Set @a *wcroot_abspath to the local abspath of the root of the
5519  * working copy in which @a local_abspath resides.
5520  *
5521  * @since New in 1.7.
5522  */
5523 svn_error_t *
5524 svn_client_get_wc_root(const char **wcroot_abspath,
5525  const char *local_abspath,
5526  svn_client_ctx_t *ctx,
5527  apr_pool_t *result_pool,
5528  apr_pool_t *scratch_pool);
5529 
5530 /**
5531  * Set @a *min_revision and @a *max_revision to the lowest and highest
5532  * revision numbers found within @a local_abspath. If @a committed is
5533  * TRUE, set @a *min_revision and @a *max_revision to the lowest and
5534  * highest comitted (i.e. "last changed") revision numbers,
5535  * respectively. NULL may be passed for either of @a min_revision and
5536  * @a max_revision to indicate the caller's lack of interest in the
5537  * value. Use @a scratch_pool for temporary allocations.
5538  *
5539  * @since New in 1.7.
5540  */
5541 svn_error_t *
5543  svn_revnum_t *max_revision,
5544  const char *local_abspath,
5545  svn_boolean_t committed,
5546  svn_client_ctx_t *ctx,
5547  apr_pool_t *scratch_pool);
5548 
5549 /** @} */
5550 
5551 
5552 /**
5553  * @defgroup Patch Apply a patch to the working copy
5554  *
5555  * @{
5556  */
5557 
5558 /**
5559  * The callback invoked by svn_client_patch() before attempting to patch
5560  * the target file at @a canon_path_from_patchfile (the path as parsed from
5561  * the patch file, but in canonicalized form). The callback can set
5562  * @a *filtered to @c TRUE to prevent the file from being patched, or else
5563  * must set it to @c FALSE.
5564  *
5565  * The callback is also provided with @a patch_abspath, the path of a
5566  * temporary file containing the patched result, and with @a reject_abspath,
5567  * the path to a temporary file containing the diff text of any hunks
5568  * which were rejected during patching.
5569  *
5570  * Because the callback is invoked before the patching attempt is made,
5571  * there is no guarantee that the target file will actually be patched
5572  * successfully. Client implementations must pay attention to notification
5573  * feedback provided by svn_client_patch() to find out which paths were
5574  * patched successfully.
5575  *
5576  * Note also that the files at @a patch_abspath and @a reject_abspath are
5577  * guaranteed to remain on disk after patching only if the
5578  * @a remove_tempfiles parameter for svn_client_patch() is @c FALSE.
5579  *
5580  * The const char * parameters may be allocated in @a scratch_pool which
5581  * will be cleared after each invocation.
5582  *
5583  * @since New in 1.7.
5584  */
5585 typedef svn_error_t *(*svn_client_patch_func_t)(
5586  void *baton,
5587  svn_boolean_t *filtered,
5588  const char *canon_path_from_patchfile,
5589  const char *patch_abspath,
5590  const char *reject_abspath,
5591  apr_pool_t *scratch_pool);
5592 
5593 /**
5594  * Apply a unidiff patch that's located at absolute path
5595  * @a patch_abspath to the working copy directory at @a wc_dir_abspath.
5596  *
5597  * This function makes a best-effort attempt at applying the patch.
5598  * It might skip patch targets which cannot be patched (e.g. targets
5599  * that are outside of the working copy). It will also reject hunks
5600  * which cannot be applied to a target in case the hunk's context
5601  * does not match anywhere in the patch target.
5602  *
5603  * If @a dry_run is TRUE, the patching process is carried out, and full
5604  * notification feedback is provided, but the working copy is not modified.
5605  *
5606  * @a strip_count specifies how many leading path components should be
5607  * stripped from paths obtained from the patch. It is an error if a
5608  * negative strip count is passed.
5609  *
5610  * If @a reverse is @c TRUE, apply patches in reverse, deleting lines
5611  * the patch would add and adding lines the patch would delete.
5612  *
5613  * If @a ignore_whitespace is TRUE, allow patches to be applied if they
5614  * only differ from the target by whitespace.
5615  *
5616  * If @a remove_tempfiles is TRUE, lifetimes of temporary files created
5617  * during patching will be managed internally. Otherwise, the caller should
5618  * take ownership of these files, the names of which can be obtained by
5619  * passing a @a patch_func callback.
5620  *
5621  * If @a patch_func is non-NULL, invoke @a patch_func with @a patch_baton
5622  * for each patch target processed.
5623  *
5624  * If @a ctx->notify_func2 is non-NULL, invoke @a ctx->notify_func2 with
5625  * @a ctx->notify_baton2 as patching progresses.
5626  *
5627  * If @a ctx->cancel_func is non-NULL, invoke it passing @a
5628  * ctx->cancel_baton at various places during the operation.
5629  *
5630  * Use @a scratch_pool for temporary allocations.
5631  *
5632  * @since New in 1.7.
5633  */
5634 svn_error_t *
5635 svn_client_patch(const char *patch_abspath,
5636  const char *wc_dir_abspath,
5637  svn_boolean_t dry_run,
5638  int strip_count,
5639  svn_boolean_t reverse,
5640  svn_boolean_t ignore_whitespace,
5641  svn_boolean_t remove_tempfiles,
5642  svn_client_patch_func_t patch_func,
5643  void *patch_baton,
5644  svn_client_ctx_t *ctx,
5645  apr_pool_t *scratch_pool);
5646 
5647 /** @} */
5648 
5649 /** @} end group: Client working copy management */
5650 
5651 /**
5652  *
5653  * @defgroup clnt_sessions Client session related functions
5654  *
5655  * @{
5656  *
5657  */
5658 
5659 
5660 /* Converting paths to URLs. */
5661 
5662 /** Set @a *url to the URL for @a path_or_url allocated in result_pool.
5663  *
5664  * If @a path_or_url is already a URL, set @a *url to @a path_or_url.
5665  *
5666  * If @a path_or_url is a versioned item, set @a *url to @a
5667  * path_or_url's entry URL. If @a path_or_url is unversioned (has
5668  * no entry), set @a *url to NULL.
5669  *
5670  * Use @a ctx->wc_ctx to retrieve the information. Use
5671  ** @a scratch_pool for temporary allocations.
5672  *
5673  * @since New in 1.7.
5674  */
5675 svn_error_t *
5676 svn_client_url_from_path2(const char **url,
5677  const char *path_or_url,
5678  svn_client_ctx_t *ctx,
5679  apr_pool_t *result_pool,
5680  apr_pool_t *scratch_pool);
5681 
5682 /** Similar to svn_client_url_from_path2(), but without a context argument.
5683  *
5684  * @since New in 1.5.
5685  * @deprecated Provided for backward compatibility with the 1.6 API.
5686  */
5688 svn_error_t *
5689 svn_client_url_from_path(const char **url,
5690  const char *path_or_url,
5691  apr_pool_t *pool);
5692 
5693 
5694 /** Set @a *url to the repository root URL of the repository in which
5695  * @a path_or_url is versioned (or scheduled to be versioned),
5696  * allocated in @a pool. @a ctx is required for possible repository
5697  * authentication.
5698  *
5699  * @since New in 1.5.
5700  */
5701 svn_error_t *
5702 svn_client_root_url_from_path(const char **url,
5703  const char *path_or_url,
5704  svn_client_ctx_t *ctx,
5705  apr_pool_t *pool);
5706 
5707 
5708 
5709 /* Fetching repository UUIDs. */
5710 
5711 /** Get repository @a uuid for @a url.
5712  *
5713  * Use a @a pool to open a temporary RA session to @a url, discover the
5714  * repository uuid, and free the session. Return the uuid in @a uuid,
5715  * allocated in @a pool. @a ctx is required for possible repository
5716  * authentication.
5717  */
5718 svn_error_t *
5719 svn_client_uuid_from_url(const char **uuid,
5720  const char *url,
5721  svn_client_ctx_t *ctx,
5722  apr_pool_t *pool);
5723 
5724 
5725 /** Return the repository @a uuid for working-copy @a local_abspath,
5726  * allocated in @a result_pool. Use @a ctx->wc_ctx to retrieve the
5727  * information.
5728  *
5729  * Use @a scratch_pool for temporary allocations.
5730  *
5731  * @since New in 1.7.
5732  */
5733 svn_error_t *
5734 svn_client_uuid_from_path2(const char **uuid,
5735  const char *local_abspath,
5736  svn_client_ctx_t *ctx,
5737  apr_pool_t *result_pool,
5738  apr_pool_t *scratch_pool);
5739 
5740 /** Similar to svn_client_uuid_from_path2(), but with a relative path and
5741  * an access baton.
5742  *
5743  * @deprecated Provided for backward compatibility with the 1.6 API.
5744  */
5746 svn_error_t *
5747 svn_client_uuid_from_path(const char **uuid,
5748  const char *path,
5749  svn_wc_adm_access_t *adm_access,
5750  svn_client_ctx_t *ctx,
5751  apr_pool_t *pool);
5752 
5753 
5754 /* Opening RA sessions. */
5755 
5756 /** Open an RA session rooted at @a url, and return it in @a *session.
5757  *
5758  * Use the authentication baton stored in @a ctx for authentication.
5759  * @a *session is allocated in @a pool.
5760  *
5761  * @since New in 1.3.
5762  *
5763  * @note This function is similar to svn_ra_open3(), but the caller avoids
5764  * having to providing its own callback functions.
5765  */
5766 svn_error_t *
5768  const char *url,
5769  svn_client_ctx_t *ctx,
5770  apr_pool_t *pool);
5771 
5772 
5773 /** @} end group: Client session related functions */
5774 
5775 /** @} */
5776 
5777 #ifdef __cplusplus
5778 }
5779 #endif /* __cplusplus */
5780 
5781 #endif /* SVN_CLIENT_H */
Options to control the behaviour of the file diff routines.
Definition: svn_diff.h:445
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...
enum svn_wc_status_kind text_status
The status of the text of the node, not including restructuring changes.
Definition: svn_client.h:2100
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:5234
svn_node_kind_t kind
The node's kind.
Definition: svn_client.h:5225
svn_client_get_commit_log2_t log_msg_func2
Log message callback function.
Definition: svn_client.h:918
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...
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:885
Counted-length strings for Subversion, plus some C string goodies.
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)
Copy each src in sources to dst_path.
svn_error_t * svn_client_merge_peg4(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, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
Merge the changes between the filesystem object source in peg revision peg_revision, as it changed between the ranges described in ranges_to_merge.
svn_wc_context_t * wc_ctx
A working copy context for the client operation to use.
Definition: svn_client.h:966
svn_wc_conflict_choice_t
The way in which the conflict callback chooses a course of action.
Definition: svn_wc.h:1981
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:2237
apr_byte_t state_flags
state flags
Definition: svn_client.h:509
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:426
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)
Report the directory entry, and possibly children, for path_or_url at revision.
svn_depth_t
The concept of depth for directories.
Definition: svn_types.h:397
const char * changed_author
Last commit author of this item.
Definition: svn_client.h:2135
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:3906
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:2123
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.
const char * path
absolute working-copy path of item
Definition: svn_client.h:431
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:1465
Information about commits passed back to client from this module.
Definition: svn_client.h:388
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:5240
apr_hash_t * mimetypes_map
MIME types map.
Definition: svn_client.h:944
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
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.
This struct contains information about a working copy node.
Definition: svn_wc.h:3042
svn_auth_baton_t * auth_baton
main authentication baton.
Definition: svn_client.h:868
An item with text modifications.
Definition: svn_client.h:787
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:3894
svn_boolean_t prop_changed
Properties changed? For consistency with 'svn status' output, this should be false if summarize_kind ...
Definition: svn_client.h:814
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_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
void * notify_baton2
notification baton for notify_func2().
Definition: svn_client.h:913
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_changelist_receiver_t)(void *baton, const char *path, const char *changelist, apr_pool_t *pool)
The callback type used by svn_client_get_changelists().
Definition: svn_wc.h:7689
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_wc_conflict_resolver_func_t conflict_func
Conflict resolution callback and baton, if available.
Definition: svn_client.h:948
All information about a commit.
Definition: svn_types.h:661
svn_client_commit_item3_t * svn_client_commit_item3_create(apr_pool_t *pool)
Return a new commit item object, allocated in pool.
svn_revnum_t changed_rev
Last revision this was changed.
Definition: svn_client.h:2129
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_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:5327
const char * local_abspath
The absolute path to the node.
Definition: svn_client.h:2080
svn_boolean_t switched
a file or directory can be 'switched' if the switch command has been used.
Definition: svn_client.h:2140
svn_error_t * svn_client_create_context(svn_client_ctx_t **ctx, apr_pool_t *pool)
Initialize a client context.
const char * changelist
Which changelist this item is part of, or NULL if not part of any.
Definition: svn_client.h:2153
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:2126
apr_time_t changed_date
Date of last commit.
Definition: svn_client.h:2132
const svn_opt_revision_t * revision
The source operational revision.
Definition: svn_client.h:3789
svn_boolean_t conflicted
Set to TRUE if the node is the victim of some kind of conflict.
Definition: svn_client.h:2091
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)
Invoke receiver with receiver_baton to return information about abspath_or_url in revision...
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:3792
svn_revnum_t revision
revision of textbase
Definition: svn_client.h:500
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...
const char * client_name
Custom client name string, or NULL.
Definition: svn_client.h:953
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:437
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:778
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:5246
const char * author
author of the commit.
Definition: svn_client.h:397
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:755
apr_hash_t * config
a hash mapping of const char * configuration file names to svn_config_t *'s.
Definition: svn_client.h:897
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_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:5294
enum svn_wc_status_kind node_status
The status of the node, based on the restructuring changes and if the node has no restructuring chang...
Definition: svn_client.h:2095
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)
Commit files or directories into repository, authenticating with the authentication baton cached in c...
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:841
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:434
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_proplist_receiver_t)(void *baton, const char *path, apr_hash_t *prop_hash, apr_pool_t *pool)
The callback invoked by svn_client_proplist3().
Definition: svn_client.h:365
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:904
svn_error_t * svn_client_mkdir4(const apr_array_header_t *paths, svn_boolean_t make_parents, const apr_hash_t *revprop_table, svn_commit_callback2_t commit_callback, void *commit_baton, svn_client_ctx_t *ctx, apr_pool_t *pool)
Create a directory, either in a repository or a working copy.
svn_error_t * svn_client_merge_reintegrate(const char *source, const svn_opt_revision_t *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 at peg_revision into target_wcpath.
Structure for holding the "status" of a working copy item.
Definition: svn_client.h:2074
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...
const char * session_relpath
When processing the commit this contains the relative path for the commit session.
Definition: svn_client.h:481
svn_node_kind_t kind
The node's kind.
Definition: svn_client.h:5373
svn_error_t * svn_client_cleanup(const char *dir, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
Recursively cleanup a working copy directory dir, finishing any incomplete operations, removing lockfiles, etc.
const char * repos_uuid
The UUID of the repository.
Definition: svn_client.h:2120
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:901
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's internal use; this value is only to be used for libsvn_client backwards ...
Definition: svn_client.h:2206
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.
A lock object, for client & server to share.
Definition: svn_types.h:1073
svn_depth_t depth
Definition: svn_client.h:5267
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)
Implementation note:
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:5385
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:521
Subversion's authentication system.
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 'copied' if it's scheduled for addition-with-history (or part of a subtree...
Definition: svn_client.h:2114
const char * url
commit URL for this item
Definition: svn_client.h:497
svn_node_kind_t
The various types of nodes in the Subversion filesystem.
Definition: svn_types.h:202
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.
const char * repos_root_URL
The root URL of the repository.
Definition: svn_client.h:5228
const svn_lock_t * repos_lock
The node's lock in the repository, if any.
Definition: svn_client.h:2185
const svn_version_t * svn_client_version(void)
Get libsvn_client version information.
svn_boolean_t wc_is_locked
a node can be 'locked' if a working copy update is in progress or was interrupted.
Definition: svn_client.h:2109
apr_array_header_t * outgoing_prop_changes
An array of svn_prop_t *'s, which are outgoing changes to make to properties in the repository...
Definition: svn_client.h:475
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)
Produce diff output which describes the delta between the filesystem object path in peg revision peg_...
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)
Set *mergeinfo to a hash mapping const char * merge source URLs to apr_array_header_t * rangelists (a...
svn_node_kind_t kind
The kind of node as recorded in the working copy.
Definition: svn_client.h:2077
svn_filesize_t filesize
The actual size of the working file on disk, or SVN_INVALID_FILESIZE if unknown (or if the item isn't...
Definition: svn_client.h:2084
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.
enum svn_wc_status_kind repos_prop_status
The node's property status in the repository.
Definition: svn_client.h:2182
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:613
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.
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:202
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_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_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:396
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:2189
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:5217
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_filesize_t size
The size of the file in the repository (untranslated, e.g.
Definition: svn_client.h:5379
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:544
svn_error_t * svn_client_diff_summarize_peg2(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_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 in peg revisi...
Repository Access.
svn_boolean_t versioned
If the path is under version control, versioned is TRUE, otherwise FALSE.
Definition: svn_client.h:2088
const char * copyfrom_url
copyfrom-url or NULL if not a copied item
Definition: svn_client.h:443
Subversion error object.
Definition: svn_types.h:90
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:2146
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)
Produce diff output which describes the delta between path1/revision1 and path2/revision2.
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:2192
svn_revnum_t rev
The revision of the object.
Definition: svn_client.h:5364
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:449
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)
Import file or directory path into repository directory url at head, authenticating with the authenti...
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:353
svn_wc_notify_func2_t notify_func2
notification function, defaulting to a function that forwards to notify_func().
Definition: svn_client.h:909
svn_wc_schedule_t
The schedule states an entry can be in.
Definition: svn_wc.h:2666
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:2089
void * log_msg_baton3
The callback baton for log_msg_func3.
Definition: svn_client.h:940
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_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_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:1769
const char * path
The source path or URL.
Definition: svn_client.h:3786
struct svn_client_status_t svn_client_status_t
Structure for holding the "status" of a working copy item.
svn_error_t * svn_client_proplist(apr_array_header_t **props, const char *target, const svn_opt_revision_t *revision, svn_boolean_t recurse, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_proplist2(), except that peg_revision is always the same as revision...
svn_error_t * svn_client_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, 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...
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:1455
struct svn_client_commit_item3_t svn_client_commit_item3_t
The commit candidate structure.
const char * last_changed_author
The author of the last_changed_rev.
Definition: svn_client.h:5388
svn_node_kind_t kind
node kind (dir, file)
Definition: svn_client.h:527
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...
Subversion'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)
Schedule a working copy path for addition to the repository.
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
enum svn_wc_status_kind repos_node_status
The status of the node, based on the text status if the node has no restructuring changes...
Definition: svn_client.h:2176
apr_array_header_t * wcprop_changes
Analogous to the svn_client_commit_item3_t.incoming_prop_changes field.
Definition: svn_client.h:514
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_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_...
svn_error_t * svn_client_export5(svn_revnum_t *result_rev, const char *from_path_or_url, const char *to_path, const svn_opt_revision_t *peg_revision, const svn_opt_revision_t *revision, svn_boolean_t overwrite, svn_boolean_t ignore_externals, svn_boolean_t ignore_keywords, svn_depth_t depth, const char *native_eol, svn_client_ctx_t *ctx, apr_pool_t *pool)
Export the contents of either a subversion repository or a subversion working copy into a 'clean' dir...
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:5275
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...
const char * repos_root_url
The URL of the repository root.
Definition: svn_client.h:2117
svn_wc_conflict_resolver_func2_t conflict_func2
Conflict resolution callback and baton, if available.
Definition: svn_client.h:958
svn_error_t * svn_client_cat(svn_stream_t *out, const char *path_or_url, const svn_opt_revision_t *revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_cat2() except that the peg revision is always the same as revision.
svn_error_t * svn_client_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)
Set *props to a hash table whose keys are absolute paths or URLs of items on which property propname ...
svn_client_get_commit_log3_t log_msg_func3
Log message callback function.
Definition: svn_client.h:936
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:506
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...
Version information.
Definition: svn_version.h:150
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:2157
const char * changelist
Definition: svn_client.h:5265
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'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:5285
struct svn_stream_t svn_stream_t
An abstract stream of bytes–either incoming or outgoing or both.
Definition: svn_io.h:743
Subversion's data types.
const svn_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:5391
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
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:3915
A struct that describes the diff of an item.
Definition: svn_client.h:803
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:817
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_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.
enum svn_wc_status_kind repos_text_status
The node's text status in the repository.
Definition: svn_client.h:2179
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)
Given path to a working copy directory (or single file), call status_func/status_baton with a set of ...
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_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:948
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...
const char * path
Path relative to the target.
Definition: svn_client.h:807
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:927
enum svn_wc_status_kind prop_status
The status of the node's properties.
Definition: svn_client.h:2105
A structure which describes various system-generated metadata about a working-copy path or URL...
Definition: svn_client.h:5214
#define SVN_DEPRECATED
Macro used to mark deprecated functions.
Definition: svn_types.h:58
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:5394
svn_wc_conflict_description_t * tree_conflict
Info on any tree conflict of which this node is a victim.
Definition: svn_client.h:5310
A structure which describes various system-generated metadata about a working-copy path or URL...
Definition: svn_client.h:5356
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:2074
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.
const svn_lock_t * lock
The locally present lock.
Definition: svn_client.h:2150
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:391
const char * date
server-side date of the commit.
Definition: svn_client.h:394
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)
The type of function invoked by svn_client_list2() to report the details of each directory entry bein...
Definition: svn_client.h:4823
apr_time_t last_changed_date
The date of the last_changed_rev.
Definition: svn_client.h:5237
svn_revnum_t last_changed_rev
The last revision in which this object changed.
Definition: svn_client.h:5382
const char * copyfrom_url
copyfrom-url
Definition: svn_client.h:536
const char * url
commit URL for this item
Definition: svn_client.h:530
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_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:937
svn_revnum_t revision
revision (copyfrom-rev if _IS_COPY)
Definition: svn_client.h:533
A structure which describes the source of a copy operation–its path, revision, and peg revision...
Definition: svn_client.h:3783
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.
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...
svn_error_t * svn_client_remove_from_changelists(const apr_array_header_t *paths, svn_depth_t depth, const apr_array_header_t *changelists, svn_client_ctx_t *ctx, apr_pool_t *pool)
Remove each path in paths (recursing to depth as necessary) from changelists to which they are curren...
svn_error_t *(* svn_client_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:731
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:543
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:2199
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:874
struct svn_ra_session_t svn_ra_session_t
A repository access session.
Definition: svn_ra.h:580
const char * URL
Where the item lives in the repository.
Definition: svn_client.h:5359
void * progress_baton
Callback baton for progress_func.
Definition: svn_client.h:931
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:1050
long int svn_revnum_t
About Special Files in Subversion.
Definition: svn_types.h:307
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...
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's UUID.
Definition: svn_client.h:5231
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_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:667
svn_error_t * svn_client_diff_summarize2(const char *path1, const svn_opt_revision_t *revision1, const char *path2, 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 path1/revision1 and path2/revision2 with...
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:503
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:494
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:5222
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_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)
Move src_paths to dst_path.
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_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:708
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_revnum_t revision
revision of textbase
Definition: svn_client.h:440
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:5585
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:488
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_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:966
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)
Invoke receiver with receiver_baton to return the regular properties of target, a URL or working copy...
const char * path
absolute working-copy path of item
Definition: svn_client.h:524
svn_error_t *(* svn_auth_username_prompt_func_t)(svn_auth_cred_username_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool)
Set *cred by prompting the user, allocating *cred in pool.
Definition: svn_auth.h:396
svn_error_t *(* svn_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:5415
void * notify_baton
notification callback baton for notify_func()
Definition: svn_client.h:879
An item with no text modifications.
Definition: svn_client.h:781
int svn_boolean_t
YABT: Yet Another Boolean Type.
Definition: svn_types.h:370
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)
Restore the pristine version of a working copy paths, effectively undoing any local mods...
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:5367
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:539
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_wc_status_kind
The type of status for the working copy.
Definition: svn_wc.h:3445
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:890
A client context structure, which holds client specific callbacks, batons, serves as a cache for conf...
Definition: svn_client.h:865
svn_error_t * svn_client_status(svn_revnum_t *result_rev, const char *path, svn_opt_revision_t *revision, svn_wc_status_func_t status_func, void *status_baton, svn_boolean_t recurse, svn_boolean_t get_all, svn_boolean_t update, svn_boolean_t no_ignore, svn_client_ctx_t *ctx, apr_pool_t *pool)
Similar to svn_client_status2(), but with ignore_externals always set to FALSE, taking the svn_wc_sta...
svn_error_t * svn_client_mergeinfo_log(svn_boolean_t finding_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, svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)
If finding_merged is TRUE, then drive log entry callbacks receiver / receiver_baton with the revision...
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:491
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...
const char * repos_UUID
The repository's UUID.
Definition: svn_client.h:5370
void * log_msg_baton2
callback baton for log_msg_func2
Definition: svn_client.h:922
svn_revnum_t copyfrom_rev
copyfrom-rev, valid when copyfrom_url != NULL
Definition: svn_client.h:446
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_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)
Output the content of a file.
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)
Open an RA session rooted at url, and return it in *session.
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_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_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:2172
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 *'s, which are incoming changes from the repository to WC properties.
Definition: svn_client.h:464
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_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_lock_t * lock
An exclusive lock, if present.
Definition: svn_client.h:5243
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:640
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:810