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