You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2012/05/16 22:32:54 UTC

svn commit: r1339349 [4/37] - in /subversion/branches/fix-rdump-editor: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ build/win32/ contrib/client-side/emacs/ contrib/client-side/vim/ contrib/server-side/ notes/ notes/api-errata...

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_hash.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_hash.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_hash.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_hash.h Wed May 16 20:32:43 2012
@@ -240,48 +240,6 @@ svn_hash_from_cstring_keys(apr_hash_t **
                            const apr_array_header_t *keys,
                            apr_pool_t *pool);
 
-/**
- * Clear any key/value pairs in the hash table.  A wrapper for a
- * apr_hash_clear(), which isn't available until APR 1.3.0.
- *
- * @since New in 1.5.
- */
-svn_error_t *
-svn_hash__clear(apr_hash_t *hash, apr_pool_t *pool);
-
-/** @} */
-
-
-/**
- * @defgroup svn_hash_getters Specialized getter APIs for hashes
- * @{
- */
-
-/** Find the value of a @a key in @a hash, return the value.
- *
- * If @a hash is @c NULL or if the @a key cannot be found, the
- * @a default_value will be returned.
- *
- * @since New in 1.7.
- */
-const char *
-svn_hash__get_cstring(apr_hash_t *hash,
-                      const char *key,
-                      const char *default_value);
-
-/** Like svn_hash_get_cstring(), but for boolean values.
- *
- * Parses the value as a boolean value. The recognized representations
- * are 'TRUE'/'FALSE', 'yes'/'no', 'on'/'off', '1'/'0'; case does not
- * matter.
- *
- * @since New in 1.7.
- */
-svn_boolean_t
-svn_hash__get_bool(apr_hash_t *hash,
-                   const char *key,
-                   svn_boolean_t default_value);
-
 /** @} */
 
 /** @} */

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_io.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_io.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_io.h Wed May 16 20:32:43 2012
@@ -682,6 +682,39 @@ svn_io_file_lock2(const char *lock_file,
                   svn_boolean_t exclusive,
                   svn_boolean_t nonblocking,
                   apr_pool_t *pool);
+
+/**
+ * Lock the file @a lockfile_handle. If @a exclusive is TRUE,
+ * obtain exclusive lock, otherwise obtain shared lock.
+ *
+ * If @a nonblocking is TRUE, do not wait for the lock if it
+ * is not available: throw an error instead.
+ *
+ * Lock will be automatically released when @a pool is cleared or destroyed.
+ * You may also explicitly call @ref svn_io_unlock_open_file.
+ * Use @a pool for memory allocations. @a pool must be the pool that
+ * @a lockfile_handle has been created in or one of its sub-pools.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_lock_open_file(apr_file_t *lockfile_handle,
+                      svn_boolean_t exclusive,
+                      svn_boolean_t nonblocking,
+                      apr_pool_t *pool);
+
+/**
+ * Unlock the file @a lockfile_handle.
+ *
+ * Use @a pool for memory allocations. @a pool must be the pool that
+ * @a lockfile_handle has been created in or one of its sub-pools.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_unlock_open_file(apr_file_t *lockfile_handle,
+                        apr_pool_t *pool);
+
 /**
  * Flush any unwritten data from @a file to disk.  Use @a pool for
  * memory allocations.
@@ -1146,6 +1179,14 @@ svn_stream_tee(svn_stream_t *out1,
                svn_stream_t *out2,
                apr_pool_t *pool);
 
+/** Write NULL-terminated string @a str to @a stream.
+ *
+ * @since New in 1.8.
+ *
+ */
+svn_error_t *
+svn_stream_puts(svn_stream_t *stream,
+                const char *str);
 
 /** Write to @a stream using a printf-style @a fmt specifier, passed through
  * apr_psprintf() using memory from @a pool.
@@ -1288,6 +1329,36 @@ svn_string_from_stream(svn_string_t **re
                        apr_pool_t *scratch_pool);
 
 
+/** A function type provided for use as a callback from
+ * @c svn_stream_lazyopen_create().
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *
+(*svn_stream_lazyopen_func_t)(svn_stream_t **stream,
+                              void *baton,
+                              apr_pool_t *result_pool,
+                              apr_pool_t *scratch_pool);
+
+
+/** Return a generic stream which wraps another primary stream,
+ * delaying the "opening" of that stream until the first time the
+ * stream is accessed.
+ *
+ * @a open_func and @a open_baton are a callback function/baton pair
+ * invoked upon the first read of @a *stream which are used to open the
+ * "real" source stream.
+ *
+ * @note If the only "access" the returned stream gets is to close it,
+ * @a open_func will not be called.
+ *
+ * @since New in 1.8.
+ */
+svn_stream_t *
+svn_stream_lazyopen_create(svn_stream_lazyopen_func_t open_func,
+                           void *open_baton,
+                           apr_pool_t *result_pool);
+
 /** @} */
 
 /** Set @a *result to a string containing the contents of @a

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_pools.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_pools.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_pools.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_pools.h Wed May 16 20:32:43 2012
@@ -30,7 +30,7 @@
 #ifndef SVN_POOLS_H
 #define SVN_POOLS_H
 
-#include <apr_pools.h>
+#include "svn_types.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -86,6 +86,23 @@ svn_pool_create_ex_debug(pool, allocator
  */
 #define svn_pool_destroy apr_pool_destroy
 
+/** Return a new allocator.  This function limits the unused memory in the
+ * new allocator to @ref SVN_ALLOCATOR_RECOMMENDED_MAX_FREE and ensures
+ * proper synchronization if the allocator is used by multiple threads.
+ *
+ * If your application uses multiple threads, creating a separate allocator
+ * for each of these threads may not be feasible. Set the @a thread_safe
+ * parameter to @c TRUE in that case.  Pools will still not thread-safe, i.e.
+ * access to them may require explicit serialization.  Set the parameter to
+ * @c FALSE, otherwise, to maximize performance.
+ *
+ * To access the owner pool, which can also serve as the root pool for your
+ * sub-pools, call @c apr_allocator_get_owner().
+ *
+ * @since: New in 1.8
+ */
+apr_allocator_t *
+svn_pool_create_allocator(svn_boolean_t thread_safe);
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_props.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_props.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_props.h Wed May 16 20:32:43 2012
@@ -111,7 +111,7 @@ svn_prop_array_to_hash(const apr_array_h
 
 /**
  * Creates a deep copy of @a hash (keys <tt>const char *</tt> and
- * values <tt>const svn_string_t</tt>) in @a pool.
+ * values <tt>const svn_string_t *</tt>) in @a pool.
  *
  * @since New in 1.6.
  */
@@ -150,10 +150,20 @@ typedef enum svn_prop_kind
   svn_prop_regular_kind
 } svn_prop_kind_t;
 
+/** Return the property kind of a property named @a prop_name.
+ *
+ * @since New in 1.8
+ */
+svn_prop_kind_t
+svn_property_kind2(const char *prop_name);
+
 /** Return the prop kind of a property named @a prop_name, and
  * (if @a prefix_len is non-@c NULL) set @a *prefix_len to the length of
  * the prefix of @a prop_name that was sufficient to distinguish its kind.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_prop_kind_t
 svn_property_kind(int *prefix_len,
                   const char *prop_name);

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_ra.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_ra.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_ra.h Wed May 16 20:32:43 2012
@@ -120,6 +120,19 @@ typedef svn_error_t *(*svn_ra_invalidate
                                                           const char *name,
                                                           apr_pool_t *pool);
 
+/** This is a function type which allows the RA layer to fetch the
+ * cached pristine file contents whose SHA1 checksum is @a
+ * sha1_checksum, if any.  @a *contents will be a read stream
+ * containing those contents if they are found; NULL otherwise.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *
+(*svn_ra_get_wc_contents_func_t)(void *baton,
+                                 svn_stream_t **contents,
+                                 const svn_checksum_t *sha1_checksum,
+                                 apr_pool_t *pool);
+
 
 /** A function type for retrieving the youngest revision from a repos. */
 typedef svn_error_t *(*svn_ra_get_latest_revnum_func_t)(
@@ -138,6 +151,7 @@ typedef svn_error_t *(*svn_ra_get_client
                                                         apr_pool_t *pool);
 
 
+
 /**
  * A callback function type for use in @c get_file_revs.
  * @a baton is provided by the caller, @a path is the pathname of the file
@@ -516,6 +530,11 @@ typedef struct svn_ra_callbacks2_t
    */
   svn_ra_get_client_string_func_t get_client_string;
 
+  /** Working copy file content fetching function.
+   * @since New in 1.8.
+   */
+  svn_ra_get_wc_contents_func_t get_wc_contents;
+
 } svn_ra_callbacks2_t;
 
 /** Similar to svn_ra_callbacks2_t, except that the progress

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_repos.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_repos.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_repos.h Wed May 16 20:32:43 2012
@@ -1971,7 +1971,11 @@ svn_repos_fs_begin_txn_for_commit(svn_fs
  *
  * ### Someday: before a txn is created, some kind of read-hook could
  *              be called here.
+ *
+ * @note This function was never fully implemented, nor used. Ignore it.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_fs_begin_txn_for_update(svn_fs_txn_t **txn_p,
                                   svn_repos_t *repos,
@@ -1980,6 +1984,8 @@ svn_repos_fs_begin_txn_for_update(svn_fs
                                   apr_pool_t *pool);
 
 
+/** @} */
+
 /** @defgroup svn_repos_fs_locks Repository lock wrappers
  * @{
  */

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_sorts.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_sorts.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_sorts.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_sorts.h Wed May 16 20:32:43 2012
@@ -112,9 +112,9 @@ svn_sort_compare_revisions(const void *a
 
 
 /**
- * Compare two @c const char * paths, returning an integer greater
- * than, equal to, or less than 0, using the same comparison rules as
- * are used by svn_path_compare_paths().
+ * Compare two @c const char * paths, @a *a and @a *b, returning an
+ * integer greater than, equal to, or less than 0, using the same
+ * comparison rules as are used by svn_path_compare_paths().
  *
  * This function is compatible for use with qsort().
  *
@@ -125,13 +125,13 @@ svn_sort_compare_paths(const void *a,
                        const void *b);
 
 /**
- * Compare two @c svn_merge_range_t *'s, returning an integer greater
- * than, equal to, or less than 0 if the first range is greater than,
- * equal to, or less than, the second range.
+ * Compare two @c svn_merge_range_t *'s, @a *a and @a *b, returning an
+ * integer greater than, equal to, or less than 0 if the first range is
+ * greater than, equal to, or less than, the second range.
  *
  * Both @c svn_merge_range_t *'s must describe forward merge ranges.
  *
- * If @a a and @a b intersect then the range with the lower start revision
+ * If @a *a and @a *b intersect then the range with the lower start revision
  * is considered the lesser range.  If the ranges' start revisions are
  * equal then the range with the lower end revision is considered the
  * lesser range.

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_string.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_string.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_string.h Wed May 16 20:32:43 2012
@@ -200,7 +200,7 @@ svn_stringbuf_create(const char *cstring
 svn_stringbuf_t *
 svn_stringbuf_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool);
 
-/** Create a truely empty string object (length and blocksize are 0)
+/** Create a new, empty bytestring.
  * @since New in 1.8.
  */
 svn_stringbuf_t *
@@ -209,8 +209,8 @@ svn_stringbuf_create_empty(apr_pool_t *p
 /** Create a new empty bytestring with at least @a minimum_size bytes of
  * space available in the memory block.
  *
- * The allocated string buffer will be one byte larger than @a minimum_size
- * to account for a final '\\0'.
+ * The allocated string buffer will be at least one byte larger than
+ * @a minimum_size to account for a final '\\0'.
  *
  * @since New in 1.6.
  */
@@ -235,10 +235,16 @@ svn_stringbuf_t *
 svn_stringbuf_createv(apr_pool_t *pool, const char *fmt, va_list ap)
   __attribute__((format(printf, 2, 0)));
 
-/** Make sure that the string @a str has at least @a minimum_size bytes of
- * space available in the memory block.
+/** Make sure that the stringbuf @a str has at least @a minimum_size
+ * bytes of space available in the memory block.
+ *
+ * The allocated string buffer will be at least one byte larger than
+ * @a minimum_size to account for a final '\\0'.
  *
- * (@a minimum_size should include space for the terminating NULL character.)
+ * @note: Before Subversion 1.8 this function did not ensure space for
+ * one byte more than @a minimum_size.  If compatibility with pre-1.8
+ * behaviour is required callers must assume space for only
+ * @a minimum_size-1 data bytes plus a final '\\0'.
  */
 void
 svn_stringbuf_ensure(svn_stringbuf_t *str, apr_size_t minimum_size);

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_types.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_types.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_types.h Wed May 16 20:32:43 2012
@@ -910,6 +910,10 @@ typedef struct svn_log_entry_t
    * Whether @a revision should be interpreted as non-inheritable in the
    * same sense of #svn_merge_range_t.
    *
+   * Only set when this #svn_log_entry_t instance is returned by the
+   * libsvn_client mergeinfo apis. Currently always FALSE when the
+   * #svn_log_entry_t instance is reported by the ra layer.
+   *
    * @since New in 1.7.
    */
   svn_boolean_t non_inheritable;

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_wc.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_wc.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_wc.h Wed May 16 20:32:43 2012
@@ -1219,7 +1219,15 @@ typedef enum svn_wc_notify_action_t
 
   /** The operation skipped the path because it was conflicted.
    * @since New in 1.7. */
-  svn_wc_notify_skip_conflicted
+  svn_wc_notify_skip_conflicted,
+
+  /** Just the lock on a file was removed during update.
+   * @since New in 1.8. */
+  svn_wc_notify_update_broken_lock,
+
+  /** Operation failed because a node is obstructed.
+   * @since New in 1.8. */
+  svn_wc_notify_failed_obstruction
 
 } svn_wc_notify_action_t;
 
@@ -2011,7 +2019,10 @@ typedef enum svn_wc_conflict_choice_t
   svn_wc_conflict_choose_mine_full,       /**< own version */
   svn_wc_conflict_choose_theirs_conflict, /**< incoming (for conflicted hunks) */
   svn_wc_conflict_choose_mine_conflict,   /**< own (for conflicted hunks) */
-  svn_wc_conflict_choose_merged           /**< merged version */
+  svn_wc_conflict_choose_merged,          /**< merged version */
+
+  /* @since New in 1.8. */
+  svn_wc_conflict_choose_unspecified      /**< undecided */
 
 } svn_wc_conflict_choice_t;
 
@@ -2616,24 +2627,22 @@ svn_wc_has_binary_prop(svn_boolean_t *ha
  * with regard to the base revision, else set @a *modified_p to zero.
  * @a local_abspath is the absolute path to the file.
  *
- * If @a force_comparison is @c TRUE, this function will not allow
- * early return mechanisms that avoid actual content comparison.
- * Instead, if there is a text base, a full byte-by-byte comparison
- * will be done, and the entry checksum verified as well.  (This means
- * that if the text base is much longer than the working file, every
- * byte of the text base will still be examined.)
+ * This function uses some heuristics to avoid byte-by-byte comparisons
+ * against the base text (eg. file size and its modification time).
  *
  * If @a local_abspath does not exist, consider it unmodified.  If it exists
  * but is not under revision control (not even scheduled for
  * addition), return the error #SVN_ERR_ENTRY_NOT_FOUND.
  *
+ * @a unused is ignored.
+ *
  * @since New in 1.7.
  */
 svn_error_t *
 svn_wc_text_modified_p2(svn_boolean_t *modified_p,
                         svn_wc_context_t *wc_ctx,
                         const char *local_abspath,
-                        svn_boolean_t force_comparison,
+                        svn_boolean_t unused,
                         apr_pool_t *scratch_pool);
 
 /** Similar to svn_wc_text_modified_p2(), but with a relative path and
@@ -5852,23 +5861,6 @@ svn_wc_get_switch_editor(svn_revnum_t *t
  * @{
  */
 
-/* A word about the implementation of working copy property storage:
- *
- * Since properties are key/val pairs, you'd think we store them in
- * some sort of Berkeley DB-ish format, and even store pending changes
- * to them that way too.
- *
- * However, we already have libsvn_subr/hashdump.c working, and it
- * uses a human-readable format.  That will be very handy when we're
- * debugging, and presumably we will not be dealing with any huge
- * properties or property lists initially.  Therefore, we will
- * continue to use hashdump as the internal mechanism for storing and
- * reading from property lists, but note that the interface here is
- * _not_ dependent on that.  We can swap in a DB-based implementation
- * at any time and users of this library will never know the
- * difference.
- */
-
 /** Set @a *props to a hash table mapping <tt>char *</tt> names onto
  * <tt>svn_string_t *</tt> values for all the regular properties of
  * @a local_abspath.  Allocate the table, names, and values in
@@ -6588,7 +6580,7 @@ typedef enum svn_wc_merge_outcome_t
  * receive the changes, then translated back again.
  *
  * If @a target_abspath is absent, or present but not under version
- * control, then set @a *merge_outcome to #svn_wc_merge_no_merge and
+ * control, then set @a *merge_content_outcome to #svn_wc_merge_no_merge and
  * return success without merging anything.  (The reasoning is that if
  * the file is not versioned, then it is probably unrelated to the
  * changes being considered, so they should not be merged into it.
@@ -6606,8 +6598,16 @@ typedef enum svn_wc_merge_outcome_t
  * svn_diff_file_options_parse()).  @a merge_options must contain
  * <tt>const char *</tt> elements.
  *
- * The outcome of the merge is returned in @a *merge_outcome. If there
- * is a conflict and @a dry_run is @c FALSE, then attempt to call @a
+ * If @a merge_props_state is non-NULL @a propchanges is merged before
+ * merging the text. (If @a merge_props_outcome is NULL, no property changes
+*  are merged and @a prop_changes is only used to determine the merge result)
+ * The result of the property merge is stored in @a *merge_props_state. If
+ * there is a conflict and @a dry_run is @c FALSE, then attempt to call @a
+ * conflict_func with @a conflict_baton (if non-NULL).  If the conflict
+ * callback cannot resolve the conflict, then a property conflict is installed.
+ *
+ * The outcome of the text merge is returned in @a *merge_text_outcome. If
+ * there is a conflict and @a dry_run is @c FALSE, then attempt to call @a
  * conflict_func with @a conflict_baton (if non-NULL).  If the
  * conflict callback cannot resolve the conflict, then:
  *
@@ -6642,9 +6642,39 @@ typedef enum svn_wc_merge_outcome_t
  *
  * Use @a scratch_pool for any temporary allocation.
  *
+ * @since New in 1.8.
+ */ /* ### BH: Two kinds of outcome is not how it should be */
+svn_error_t *
+svn_wc_merge5(enum svn_wc_merge_outcome_t *merge_content_outcome,
+              enum svn_wc_notify_state_t *merge_props_state,
+              svn_wc_context_t *wc_ctx,
+              const char *left_abspath,
+              const char *right_abspath,
+              const char *target_abspath,
+              const char *left_label,
+              const char *right_label,
+              const char *target_label,
+              const svn_wc_conflict_version_t *left_version,
+              const svn_wc_conflict_version_t *right_version,
+              svn_boolean_t dry_run,
+              const char *diff3_cmd,
+              const apr_array_header_t *merge_options,
+              apr_hash_t *original_props,
+              const apr_array_header_t *prop_diff,
+              svn_wc_conflict_resolver_func2_t conflict_func,
+              void *conflict_baton,
+              svn_cancel_func_t cancel_func,
+              void *cancel_baton,
+              apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_merge4() but doesn't allow property changes. Instead of
+ * handling this in a single operation, a separate call to svn_wc_merge_props3()
+ * before calling svn_wc_merge4() is needed
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  */
-svn_error_t *
+SVN_DEPRECATED svn_error_t *
 svn_wc_merge4(enum svn_wc_merge_outcome_t *merge_outcome,
               svn_wc_context_t *wc_ctx,
               const char *left_abspath,
@@ -6665,6 +6695,7 @@ svn_wc_merge4(enum svn_wc_merge_outcome_
               void *cancel_baton,
               apr_pool_t *scratch_pool);
 
+
 /** Similar to svn_wc_merge4() but takes relative paths and an access
  * baton. It doesn't support a cancel function or tracking origin version
  * information.

Modified: subversion/branches/fix-rdump-editor/subversion/include/svn_xml.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/include/svn_xml.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/include/svn_xml.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/include/svn_xml.h Wed May 16 20:32:43 2012
@@ -228,7 +228,7 @@ svn_xml_signal_bailout(svn_error_t *erro
  */
 const char *
 svn_xml_get_attr_value(const char *name,
-                       const char **atts);
+                       const char *const *atts);
 
 
 

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c Wed May 16 20:32:43 2012
@@ -403,13 +403,12 @@ simple_gnome_keyring_first_creds(void **
                                  const char *realmstring,
                                  apr_pool_t *pool)
 {
-  return svn_auth__simple_first_creds_helper
-           (credentials,
-            iter_baton, provider_baton,
-            parameters, realmstring,
-            password_get_gnome_keyring,
-            SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
-            pool);
+  return svn_auth__simple_creds_cache_get(credentials,
+                                          iter_baton, provider_baton,
+                                          parameters, realmstring,
+                                          password_get_gnome_keyring,
+                                          SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
+                                          pool);
 }
 
 /* Save encrypted credentials to the simple provider's cache. */
@@ -421,13 +420,12 @@ simple_gnome_keyring_save_creds(svn_bool
                                 const char *realmstring,
                                 apr_pool_t *pool)
 {
-  return svn_auth__simple_save_creds_helper
-           (saved, credentials,
-            provider_baton, parameters,
-            realmstring,
-            password_set_gnome_keyring,
-            SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
-            pool);
+  return svn_auth__simple_creds_cache_set(saved, credentials,
+                                          provider_baton, parameters,
+                                          realmstring,
+                                          password_set_gnome_keyring,
+                                          SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
+                                          pool);
 }
 
 static void
@@ -491,13 +489,10 @@ ssl_client_cert_pw_gnome_keyring_first_c
                                              const char *realmstring,
                                              apr_pool_t *pool)
 {
-  return svn_auth__ssl_client_cert_pw_file_first_creds_helper
-           (credentials,
-            iter_baton, provider_baton,
-            parameters, realmstring,
-            password_get_gnome_keyring,
-            SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
-            pool);
+  return svn_auth__ssl_client_cert_pw_cache_get(
+             credentials, iter_baton, provider_baton, parameters, realmstring,
+             password_get_gnome_keyring, SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
+             pool);
 }
 
 /* Save encrypted credentials to the ssl client cert password provider's
@@ -510,13 +505,10 @@ ssl_client_cert_pw_gnome_keyring_save_cr
                                             const char *realmstring,
                                             apr_pool_t *pool)
 {
-  return svn_auth__ssl_client_cert_pw_file_save_creds_helper
-           (saved, credentials,
-            provider_baton, parameters,
-            realmstring,
-            password_set_gnome_keyring,
-            SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
-            pool);
+  return svn_auth__ssl_client_cert_pw_cache_set(
+             saved, credentials, provider_baton, parameters, realmstring,
+             password_set_gnome_keyring, SVN_AUTH__GNOME_KEYRING_PASSWORD_TYPE,
+             pool);
 }
 
 static const svn_auth_provider_t gnome_keyring_ssl_client_cert_pw_provider = {

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_auth_kwallet/kwallet.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_auth_kwallet/kwallet.cpp?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_auth_kwallet/kwallet.cpp (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_auth_kwallet/kwallet.cpp Wed May 16 20:32:43 2012
@@ -340,14 +340,14 @@ kwallet_simple_first_creds(void **creden
                            const char *realmstring,
                            apr_pool_t *pool)
 {
-  return svn_auth__simple_first_creds_helper(credentials,
-                                             iter_baton,
-                                             provider_baton,
-                                             parameters,
-                                             realmstring,
-                                             kwallet_password_get,
-                                             SVN_AUTH__KWALLET_PASSWORD_TYPE,
-                                             pool);
+  return svn_auth__simple_creds_cache_get(credentials,
+                                          iter_baton,
+                                          provider_baton,
+                                          parameters,
+                                          realmstring,
+                                          kwallet_password_get,
+                                          SVN_AUTH__KWALLET_PASSWORD_TYPE,
+                                          pool);
 }
 
 /* Save encrypted credentials to the simple provider's cache. */
@@ -359,13 +359,13 @@ kwallet_simple_save_creds(svn_boolean_t 
                           const char *realmstring,
                           apr_pool_t *pool)
 {
-  return svn_auth__simple_save_creds_helper(saved, credentials,
-                                            provider_baton,
-                                            parameters,
-                                            realmstring,
-                                            kwallet_password_set,
-                                            SVN_AUTH__KWALLET_PASSWORD_TYPE,
-                                            pool);
+  return svn_auth__simple_creds_cache_set(saved, credentials,
+                                          provider_baton,
+                                          parameters,
+                                          realmstring,
+                                          kwallet_password_set,
+                                          SVN_AUTH__KWALLET_PASSWORD_TYPE,
+                                          pool);
 }
 
 static const svn_auth_provider_t kwallet_simple_provider = {
@@ -405,13 +405,12 @@ kwallet_ssl_client_cert_pw_first_creds(v
                                        const char *realmstring,
                                        apr_pool_t *pool)
 {
-  return svn_auth__ssl_client_cert_pw_file_first_creds_helper
-           (credentials,
-            iter_baton, provider_baton,
-            parameters, realmstring,
-            kwallet_password_get,
-            SVN_AUTH__KWALLET_PASSWORD_TYPE,
-            pool);
+  return svn_auth__ssl_client_cert_pw_cache_get(credentials,
+                                                iter_baton, provider_baton,
+                                                parameters, realmstring,
+                                                kwallet_password_get,
+                                                SVN_AUTH__KWALLET_PASSWORD_TYPE,
+                                                pool);
 }
 
 /* Save encrypted credentials to the ssl client cert password provider's
@@ -424,13 +423,12 @@ kwallet_ssl_client_cert_pw_save_creds(sv
                                       const char *realmstring,
                                       apr_pool_t *pool)
 {
-  return svn_auth__ssl_client_cert_pw_file_save_creds_helper
-           (saved, credentials,
-            provider_baton, parameters,
-            realmstring,
-            kwallet_password_set,
-            SVN_AUTH__KWALLET_PASSWORD_TYPE,
-            pool);
+  return svn_auth__ssl_client_cert_pw_cache_set(saved, credentials,
+                                                provider_baton, parameters,
+                                                realmstring,
+                                                kwallet_password_set,
+                                                SVN_AUTH__KWALLET_PASSWORD_TYPE,
+                                                pool);
 }
 
 static const svn_auth_provider_t kwallet_ssl_client_cert_pw_provider = {

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_client/add.c?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_client/add.c (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_client/add.c Wed May 16 20:32:43 2012
@@ -898,8 +898,8 @@ mkdir_urls(const apr_array_header_t *url
 
   /* Fetch RA commit editor */
   SVN_ERR(svn_ra__register_editor_shim_callbacks(ra_session,
-                        svn_client__get_shim_callbacks(ctx->wc_ctx,
-                                                       NULL, pool)));
+                        svn_client__get_shim_callbacks(ctx->wc_ctx, NULL,
+                                                       pool)));
   SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
                                     commit_revprops,
                                     commit_callback,

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_client/blame.c
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_client/blame.c?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_client/blame.c (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_client/blame.c Wed May 16 20:32:43 2012
@@ -593,6 +593,7 @@ svn_client_blame5(const char *target,
   struct file_rev_baton frb;
   svn_ra_session_t *ra_session;
   svn_revnum_t start_revnum, end_revnum;
+  svn_client__pathrev_t *end_loc;
   struct blame *walk, *walk_merged = NULL;
   apr_pool_t *iterpool;
   svn_stream_t *last_stream;
@@ -610,9 +611,10 @@ svn_client_blame5(const char *target,
     SVN_ERR(svn_dirent_get_absolute(&target_abspath_or_url, target, pool));
 
   /* Get an RA plugin for this filesystem object. */
-  SVN_ERR(svn_client__ra_session_from_path(&ra_session, &end_revnum, NULL,
-                                           target, NULL, peg_revision, end,
-                                           ctx, pool));
+  SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &end_loc,
+                                            target, NULL, peg_revision, end,
+                                            ctx, pool));
+  end_revnum = end_loc->rev;
 
   SVN_ERR(svn_client__get_revision_number(&start_revnum, NULL, ctx->wc_ctx,
                                           target_abspath_or_url, ra_session,

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_client/cat.c
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_client/cat.c?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_client/cat.c (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_client/cat.c Wed May 16 20:32:43 2012
@@ -183,11 +183,10 @@ svn_client_cat2(svn_stream_t *out,
                 apr_pool_t *pool)
 {
   svn_ra_session_t *ra_session;
-  svn_revnum_t rev;
+  svn_client__pathrev_t *loc;
   svn_string_t *eol_style;
   svn_string_t *keywords;
   apr_hash_t *props;
-  const char *url;
   svn_stream_t *output = out;
   svn_error_t *err;
 
@@ -227,20 +226,21 @@ svn_client_cat2(svn_stream_t *out,
     }
 
   /* Get an RA plugin for this filesystem object. */
-  SVN_ERR(svn_client__ra_session_from_path(&ra_session, &rev,
-                                           &url, path_or_url, NULL,
-                                           peg_revision,
-                                           revision, ctx, pool));
+  SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &loc,
+                                            path_or_url, NULL,
+                                            peg_revision,
+                                            revision, ctx, pool));
 
   /* Grab some properties we need to know in order to figure out if anything
      special needs to be done with this file. */
-  err = svn_ra_get_file(ra_session, "", rev, NULL, NULL, &props, pool);
+  err = svn_ra_get_file(ra_session, "", loc->rev, NULL, NULL, &props, pool);
   if (err)
     {
       if (err->apr_err == SVN_ERR_FS_NOT_FILE)
         {
           return svn_error_createf(SVN_ERR_CLIENT_IS_DIRECTORY, err,
-                                   _("URL '%s' refers to a directory"), url);
+                                   _("URL '%s' refers to a directory"),
+                                   loc->url);
         }
       else
         {
@@ -284,7 +284,7 @@ svn_client_cat2(svn_stream_t *out,
           SVN_ERR(svn_subst_build_keywords2
                   (&kw, keywords->data,
                    cmt_rev->data,
-                   url,
+                   loc->url,
                    when,
                    cmt_author ? cmt_author->data : NULL,
                    pool));
@@ -297,7 +297,7 @@ svn_client_cat2(svn_stream_t *out,
                                            eol_str, FALSE, kw, TRUE, pool);
     }
 
-  SVN_ERR(svn_ra_get_file(ra_session, "", rev, output, NULL, NULL, pool));
+  SVN_ERR(svn_ra_get_file(ra_session, "", loc->rev, output, NULL, NULL, pool));
 
   if (out != output)
     /* Close the interjected stream */

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_client/checkout.c
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_client/checkout.c?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_client/checkout.c (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_client/checkout.c Wed May 16 20:32:43 2012
@@ -49,10 +49,7 @@
 
 static svn_error_t *
 initialize_area(const char *local_abspath,
-                const char *session_url,
-                const char *repos_root,
-                const char *uuid,
-                svn_revnum_t revnum,
+                const svn_client__pathrev_t *pathrev,
                 svn_depth_t depth,
                 svn_client_ctx_t *ctx,
                 apr_pool_t *pool)
@@ -61,8 +58,9 @@ initialize_area(const char *local_abspat
     depth = svn_depth_infinity;
 
   /* Make the unversioned directory into a versioned one.  */
-  SVN_ERR(svn_wc_ensure_adm4(ctx->wc_ctx, local_abspath, session_url,
-                             repos_root, uuid, revnum, depth, pool));
+  SVN_ERR(svn_wc_ensure_adm4(ctx->wc_ctx, local_abspath, pathrev->url,
+                             pathrev->repos_root_url, pathrev->repos_uuid,
+                             pathrev->rev, depth, pool));
   return SVN_NO_ERROR;
 }
 
@@ -81,16 +79,12 @@ svn_client__checkout_internal(svn_revnum
                               apr_pool_t *pool)
 {
   svn_error_t *err = NULL;
-  svn_revnum_t revnum;
   svn_boolean_t sleep_here = FALSE;
   svn_boolean_t *use_sleep = timestamp_sleep ? timestamp_sleep : &sleep_here;
-  const char *session_url;
   svn_node_kind_t kind;
-  const char *uuid, *repos_root;
   apr_pool_t *session_pool = svn_pool_create(pool);
   svn_ra_session_t *ra_session;
-  svn_revnum_t tmp_revnum;
-  const char *tmp_session_url;
+  svn_client__pathrev_t *pathrev;
 
   /* Sanity check.  Without these, the checkout is meaningless. */
   SVN_ERR_ASSERT(local_abspath != NULL);
@@ -104,26 +98,22 @@ svn_client__checkout_internal(svn_revnum
     return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, NULL);
 
   /* Get the RA connection. */
-  SVN_ERR(svn_client__ra_session_from_path(&ra_session, &tmp_revnum,
-                                           &tmp_session_url, url, NULL,
-                                           peg_revision, revision, ctx,
-                                           session_pool));
-
-  SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root, pool));
-  SVN_ERR(svn_ra_get_uuid2(ra_session, &uuid, pool));
-  session_url = apr_pstrdup(pool, tmp_session_url);
-  revnum = tmp_revnum;
-  SVN_ERR(svn_ra_check_path(ra_session, "", revnum, &kind, pool));
+  SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &pathrev,
+                                            url, NULL, peg_revision, revision,
+                                            ctx, session_pool));
+
+  pathrev = svn_client__pathrev_dup(pathrev, pool);
+  SVN_ERR(svn_ra_check_path(ra_session, "", pathrev->rev, &kind, pool));
 
   svn_pool_destroy(session_pool);
 
   if (kind == svn_node_none)
     return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL,
-                             _("URL '%s' doesn't exist"), session_url);
+                             _("URL '%s' doesn't exist"), pathrev->url);
   else if (kind == svn_node_file)
     return svn_error_createf
       (SVN_ERR_UNSUPPORTED_FEATURE , NULL,
-       _("URL '%s' refers to a file, not a directory"), session_url);
+       _("URL '%s' refers to a file, not a directory"), pathrev->url);
 
   SVN_ERR(svn_io_check_path(local_abspath, &kind, pool));
 
@@ -133,8 +123,7 @@ svn_client__checkout_internal(svn_revnum
          entries file should only have an entry for THIS_DIR with a
          URL, revnum, and an 'incomplete' flag.  */
       SVN_ERR(svn_io_make_dir_recursively(local_abspath, pool));
-      err = initialize_area(local_abspath, session_url,
-                            repos_root, uuid, revnum, depth, ctx, pool);
+      err = initialize_area(local_abspath, pathrev, depth, ctx, pool);
     }
   else if (kind == svn_node_dir)
     {
@@ -144,8 +133,7 @@ svn_client__checkout_internal(svn_revnum
       SVN_ERR(svn_wc_check_wc2(&wc_format, ctx->wc_ctx, local_abspath, pool));
       if (! wc_format)
         {
-          err = initialize_area(local_abspath, session_url,
-                                repos_root, uuid, revnum, depth, ctx, pool);
+          err = initialize_area(local_abspath, pathrev, depth, ctx, pool);
         }
       else
         {
@@ -156,7 +144,7 @@ svn_client__checkout_internal(svn_revnum
           /* If PATH's existing URL matches the incoming one, then
              just update.  This allows 'svn co' to restart an
              interrupted checkout.  Otherwise bail out. */
-          if (strcmp(entry_url, session_url) != 0)
+          if (strcmp(entry_url, pathrev->url) != 0)
             return svn_error_createf(
                           SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
                           _("'%s' is already a working copy for a"

Modified: subversion/branches/fix-rdump-editor/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/fix-rdump-editor/subversion/libsvn_client/client.h?rev=1339349&r1=1339348&r2=1339349&view=diff
==============================================================================
--- subversion/branches/fix-rdump-editor/subversion/libsvn_client/client.h (original)
+++ subversion/branches/fix-rdump-editor/subversion/libsvn_client/client.h Wed May 16 20:32:43 2012
@@ -36,6 +36,7 @@
 #include "svn_client.h"
 
 #include "private/svn_magic.h"
+#include "private/svn_client_private.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -146,16 +147,15 @@ svn_client__repos_locations(const char *
 /* Trace a line of history of a particular versioned resource back to a
  * specific revision.
  *
- * Set *OP_URL to the URL that the object PEG_URL@PEG_REVNUM had in
+ * Set *OP_LOC_P to the location that the object PEG_LOC had in
  * revision OP_REVNUM.
  *
  * RA_SESSION is an open RA session to the correct repository; it may be
  * temporarily reparented inside this function. */
 svn_error_t *
-svn_client__repos_location(const char **start_url,
+svn_client__repos_location(svn_client__pathrev_t **op_loc_p,
                            svn_ra_session_t *ra_session,
-                           const char *peg_url,
-                           svn_revnum_t peg_revnum,
+                           const svn_client__pathrev_t *peg_loc,
                            svn_revnum_t op_revnum,
                            svn_client_ctx_t *ctx,
                            apr_pool_t *result_pool,
@@ -194,13 +194,9 @@ svn_client__repos_location_segments(apr_
    Ancestry is determined by the 'copy-from' relationship and the normal
    successor relationship.
 
-   Set *ANCESTOR_RELPATH, *ANCESTOR_URL, and *ANCESTOR_REVISION to the
-   path (relative to the root of the repository, with no leading '/'),
-   URL, and revision, respectively, of the youngest common ancestor of
-   the two locations URL1@REV1 and URL2@REV2.  Set *ANCESTOR_RELPATH and
-   *ANCESTOR_URL to NULL and *ANCESTOR_REVISION to SVN_INVALID_REVNUM if
-   they have no common ancestor.  This function assumes that URL1@REV1
-   and URL2@REV2 both refer to the same repository.
+   Set *ANCESTOR_P to the location of the youngest common ancestor of
+   LOC1 and LOC2.  If the locations have no common ancestor (including if
+   they don't have the same repository root URL), set *ANCESTOR_P to NULL.
 
    Use the authentication baton cached in CTX to authenticate against
    the repository.  Use POOL for all allocations.
@@ -208,15 +204,12 @@ svn_client__repos_location_segments(apr_
    See also svn_client__youngest_common_ancestor().
 */
 svn_error_t *
-svn_client__get_youngest_common_ancestor(const char **ancestor_relpath,
-                                         const char **ancestor_url,
-                                         svn_revnum_t *ancestor_revision,
-                                         const char *url1,
-                                         svn_revnum_t rev1,
-                                         const char *url2,
-                                         svn_revnum_t rev2,
+svn_client__get_youngest_common_ancestor(svn_client__pathrev_t **ancestor_p,
+                                         const svn_client__pathrev_t *loc1,
+                                         const svn_client__pathrev_t *loc2,
                                          svn_client_ctx_t *ctx,
-                                         apr_pool_t *pool);
+                                         apr_pool_t *result_pool,
+                                         apr_pool_t *scratch_pool);
 
 /* Given PATH_OR_URL, which contains either a working copy path or an
    absolute URL, a peg revision PEG_REVISION, and a desired revision
@@ -234,18 +227,17 @@ svn_client__get_youngest_common_ancestor
    for a URL or 'working' for a WC path.  If REVISION->kind is
    'unspecified', the operative revision is the peg revision.
 
-   Store the resulting ra_session in *RA_SESSION_P.  Store the actual
-   revision number of the object in *REV_P, and the final resulting
-   URL in *URL_P. REV_P and/or URL_P may be NULL if not wanted.
+   Store the resulting ra_session in *RA_SESSION_P.  Store the final
+   resolved location of the object in *RESOLVED_LOC_P.  RESOLVED_LOC_P
+   may be NULL if not wanted.
 
    Use authentication baton cached in CTX to authenticate against the
    repository.
 
    Use POOL for all allocations. */
 svn_error_t *
-svn_client__ra_session_from_path(svn_ra_session_t **ra_session_p,
-                                 svn_revnum_t *rev_p,
-                                 const char **url_p,
+svn_client__ra_session_from_path2(svn_ra_session_t **ra_session_p,
+                                 svn_client__pathrev_t **resolved_loc_p,
                                  const char *path_or_url,
                                  const char *base_dir_abspath,
                                  const svn_opt_revision_t *peg_revision,
@@ -361,6 +353,37 @@ svn_client__open_ra_session_internal(svn
                                      apr_pool_t *pool);
 
 
+svn_error_t *
+svn_client__ra_provide_base(svn_stream_t **contents,
+                            svn_revnum_t *revision,
+                            void *baton,
+                            const char *repos_relpath,
+                            apr_pool_t *result_pool,
+                            apr_pool_t *scratch_pool);
+
+
+svn_error_t *
+svn_client__ra_provide_props(apr_hash_t **props,
+                             svn_revnum_t *revision,
+                             void *baton,
+                             const char *repos_relpath,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool);
+
+
+svn_error_t *
+svn_client__ra_get_copysrc_kind(svn_kind_t *kind,
+                                void *baton,
+                                const char *repos_relpath,
+                                svn_revnum_t src_revision,
+                                apr_pool_t *scratch_pool);
+
+
+void *
+svn_client__ra_make_cb_baton(svn_wc_context_t *wc_ctx,
+                             apr_hash_t *relpath_map,
+                             apr_pool_t *result_pool);
+
 
 /* ---------------------------------------------------------------- */
 
@@ -842,7 +865,7 @@ svn_client__get_copy_committables(svn_cl
                                   apr_pool_t *scratch_pool);
 
 /* A qsort()-compatible sort routine for sorting an array of
-   svn_client_commit_item_t's by their URL member. */
+   svn_client_commit_item_t *'s by their URL member. */
 int svn_client__sort_commit_item_urls(const void *a, const void *b);
 
 
@@ -873,10 +896,10 @@ svn_client__condense_commit_items(const 
    NOTIFY_PATH_PREFIX will be passed to CTX->notify_func2() as the
    common absolute path prefix of the committed paths.  It can be NULL.
 
-   If MD5_CHECKSUMS is not NULL, set *MD5_CHECKSUMS to a hash containing,
+   If SHA1_CHECKSUMS is not NULL, set *SHA1_CHECKSUMS to a hash containing,
    for each file transmitted, a mapping from the commit-item's (const
-   char *) path to the (const svn_checksum_t *) MD5 checksum of its new text
-   base.  Similarly for SHA1_CHECKSUMS.
+   char *) path to the (const svn_checksum_t *) SHA1 checksum of its new text
+   base.
 
    Use RESULT_POOL for all allocating the resulting hashes and SCRATCH_POOL
    for temporary allocations.
@@ -887,7 +910,6 @@ svn_client__do_commit(const char *base_u
                       const svn_delta_editor_t *editor,
                       void *edit_baton,
                       const char *notify_path_prefix,
-                      apr_hash_t **md5_checksums,
                       apr_hash_t **sha1_checksums,
                       svn_client_ctx_t *ctx,
                       apr_pool_t *result_pool,
@@ -970,11 +992,12 @@ svn_client__export_externals(apr_hash_t 
                              apr_pool_t *pool);
 
 
-/* Perform status operations on each external in TRAVERSAL_INFO.  All
-   other options are the same as those passed to svn_client_status(). */
+/* Perform status operations on each external in EXTERNAL_MAP, a const char *
+   local_abspath of all externals mapping to the const char* defining_abspath.
+   All other options are the same as those passed to svn_client_status(). */
 svn_error_t *
 svn_client__do_external_status(svn_client_ctx_t *ctx,
-                               apr_hash_t *external_defs,
+                               apr_hash_t *external_map,
                                svn_depth_t depth,
                                svn_boolean_t get_all,
                                svn_boolean_t update,
@@ -1076,7 +1099,7 @@ svn_client__get_normalized_stream(svn_st
 /* Return a set of callbacks to use with the Ev2 shims. */
 svn_delta_shim_callbacks_t *
 svn_client__get_shim_callbacks(svn_wc_context_t *wc_ctx,
-                               const char *anchor_abspath,
+                               apr_hash_t *relpath_map,
                                apr_pool_t *result_pool);
 
 /* Return true if KIND is a revision kind that is dependent on the working