You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2013/08/23 15:12:25 UTC

svn commit: r1516837 [5/13] - in /subversion/branches/reuse-ra-session: ./ build/ac-macros/ build/generator/ build/generator/swig/ build/generator/templates/ contrib/client-side/emacs/ doc/programmer/ notes/http-and-webdav/ subversion/ subversion/bindi...

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_delta.i
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_delta.i?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_delta.i (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_delta.i Fri Aug 23 13:12:18 2013
@@ -63,6 +63,9 @@
 */
 
 #ifdef SWIGPYTHON
+/* Make swig wrap this function for us, to allow making an editor in python
+   ### There must be a cleaner way to implement this? 
+   ### Maybe follow Ruby by wrapping it where passing an editor? */
 void svn_swig_py_make_editor(const svn_delta_editor_t **editor,
                              void **edit_baton,
                              PyObject *py_editor,
@@ -71,14 +74,8 @@ void svn_swig_py_make_editor(const svn_d
 
 #ifdef SWIGPERL
 %typemap(in) (const svn_delta_editor_t *EDITOR, void *BATON) {
-    svn_delta_make_editor(&$1, &$2, $input, _global_pool);
+    svn_swig_pl_make_editor(&$1, &$2, $input, _global_pool);
 }
-
-void svn_delta_wrap_window_handler(svn_txdelta_window_handler_t *handler,
-                                   void **handler_baton,
-                                   SV *callback,
-                                   apr_pool_t *pool);
-
 #endif
 
 #ifdef SWIGRUBY

Modified: subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_ra.i
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_ra.i?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_ra.i (original)
+++ subversion/branches/reuse-ra-session/subversion/bindings/swig/svn_ra.i Fri Aug 23 13:12:18 2013
@@ -65,7 +65,7 @@
 #ifdef SWIGPERL
 /* FIXME: svn_ra_callbacks2_t ? */
 %typemap(in) (const svn_ra_callbacks_t *callbacks, void *callback_baton) {
-  svn_ra_make_callbacks(&$1, &$2, $input, _global_pool);
+  svn_swig_pl_make_callbacks(&$1, &$2, $input, _global_pool);
 }
 #endif
 #ifdef SWIGRUBY
@@ -77,7 +77,7 @@
 
 #ifdef SWIGPYTHON
 %callback_typemap(const svn_ra_reporter2_t *reporter, void *report_baton,
-                  (svn_ra_reporter2_t *)&swig_py_ra_reporter2,
+                  svn_swig_py_get_ra_reporter2(),
                   ,
                   )
 %callback_typemap(svn_location_segment_receiver_t receiver, void *receiver_baton,
@@ -90,7 +90,7 @@
 %callback_typemap(const svn_ra_reporter3_t *reporter, void *report_baton,
                   ,
                   ,
-                  svn_swig_rb_ra_reporter3)
+                  svn_swig_rb_get_ra_reporter3())
 #endif
 
 #ifndef SWIGPERL

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_cache.h Fri Aug 23 13:12:18 2013
@@ -305,6 +305,33 @@ svn_cache__membuffer_cache_create(svn_me
                                   apr_pool_t *result_pool);
 
 /**
+ * @defgroup Standard priority classes for #svn_cache__create_membuffer_cache.
+ * @{
+ */
+
+/**
+ * Data in this priority class should not be removed from the cache unless
+ * absolutely necessary.  Use of this should be very restricted.
+ */
+#define SVN_CACHE__MEMBUFFER_HIGH_PRIORITY   10000
+
+/**
+ * Data in this priority class has a good chance to remain in cache unless
+ * there is more data in this class than the cache's capcity.  Use of this
+ * as the default for all information that is costly to fetch from disk.
+ */
+#define SVN_CACHE__MEMBUFFER_DEFAULT_PRIORITY 1000
+
+/**
+ * Data in this priority class will be removed as soon as the cache starts
+ * filling up.  Use of this for ephemeral data that can easisly be acquired
+ * again from other sources.
+ */
+#define SVN_CACHE__MEMBUFFER_LOW_PRIORITY      100
+
+/** @} */
+
+/**
  * Creates a new cache in @a *cache_p, storing the data in a potentially
  * shared @a membuffer object.  The elements in the cache will be indexed
  * by keys of length @a klen, which may be APR_HASH_KEY_STRING if they
@@ -312,7 +339,9 @@ svn_cache__membuffer_cache_create(svn_me
  * serialize_func and deserialized using @a deserialize_func.  Because
  * the same memcache object may cache many different kinds of values
  * form multiple caches, @a prefix should be specified to differentiate
- * this cache from other caches.  @a *cache_p will be allocated in @a result_pool.
+ * this cache from other caches.  All entries written through this cache
+ * interface will be assigned into the given @a priority class.  @a *cache_p
+ * will be allocated in @a result_pool.
  *
  * If @a deserialize_func is NULL, then the data is returned as an
  * svn_string_t; if @a serialize_func is NULL, then the data is
@@ -331,6 +360,7 @@ svn_cache__create_membuffer_cache(svn_ca
                                   svn_cache__deserialize_func_t deserialize,
                                   apr_ssize_t klen,
                                   const char *prefix,
+                                  apr_uint32_t priority,
                                   svn_boolean_t thread_safe,
                                   apr_pool_t *result_pool);
 
@@ -377,6 +407,18 @@ svn_cache__get(void **value,
                apr_pool_t *result_pool);
 
 /**
+ * Looks for an entry indexed by @a key in @a cache,  setting @a *found
+ * to TRUE if an entry has been found and FALSE otherwise.  @a key may be
+ * NULL in which case @a *found will be FALSE.  Temporary allocations will
+ * be made from @a scratch_pool.
+ */
+svn_error_t *
+svn_cache__has_key(svn_boolean_t *found,
+                   svn_cache__t *cache,
+                   const void *key,
+                   apr_pool_t *scratch_pool);
+
+/**
  * Stores the value @a value under the key @a key in @a cache.  Uses @a
  * scratch_pool for temporary allocations.  The cache makes copies of
  * @a key and @a value if necessary (that is, @a key and @a value may

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_client_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_client_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_client_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_client_private.h Fri Aug 23 13:12:18 2013
@@ -291,6 +291,11 @@ svn_client__copy_foreign(const char *url
  * The keys for the subtree mergeinfo are the repository root-relative
  * paths of TARGET_PATH_OR_URL and/or its subtrees, regardless of whether
  * TARGET_PATH_OR_URL is a URL or WC path.
+ *
+ * If RA_SESSION is not NULL, use it to obtain merge information instead of
+ * opening a new session. The session might be reparented after usage, so
+ * callers should reparent the session back to their original location if
+ * needed.
  */
 svn_error_t *
 svn_client__mergeinfo_log(svn_boolean_t finding_merged,
@@ -307,6 +312,7 @@ svn_client__mergeinfo_log(svn_boolean_t 
                           svn_depth_t depth,
                           const apr_array_header_t *revprops,
                           svn_client_ctx_t *ctx,
+                          svn_ra_session_t *ra_session,
                           apr_pool_t *result_pool,
                           apr_pool_t *scratch_pool);
 

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_delta_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_delta_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_delta_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_delta_private.h Fri Aug 23 13:12:18 2013
@@ -101,26 +101,6 @@ svn_delta__delta_from_editor(const svn_d
                              struct svn_delta__extra_baton *exb,
                              apr_pool_t *pool);
 
-/**
- * Get the data from IN, compress it according to the specified
- * COMPRESSION_LEVEL and write the result to OUT.
- * SVN_DELTA_COMPRESSION_LEVEL_NONE is valid for COMPRESSION_LEVEL.
- */
-svn_error_t *
-svn__compress(svn_string_t *in,
-              svn_stringbuf_t *out,
-              int compression_level);
-
-/**
- * Get the compressed data from IN, decompress it and write the result to
- * OUT.  Return an error if the decompressed size is larger than LIMIT.
- */
-svn_error_t *
-svn__decompress(svn_string_t *in,
-                svn_stringbuf_t *out,
-                apr_size_t limit);
-
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_svn_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_svn_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_svn_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_ra_svn_private.h Fri Aug 23 13:12:18 2013
@@ -875,7 +875,7 @@ svn_ra_svn__write_data_log_entry(svn_ra_
                                  const svn_string_t *message,
                                  svn_boolean_t has_children,
                                  svn_boolean_t invalid_revnum,
-                                 int revprop_count);
+                                 unsigned revprop_count);
 
 /**
  * @}

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_string_private.h Fri Aug 23 13:12:18 2013
@@ -175,6 +175,32 @@ svn__ui64toa_sep(apr_uint64_t number, ch
 char *
 svn__i64toa_sep(apr_int64_t number, char seperator, apr_pool_t *pool);
 
+
+/** Writes the @a number as base36-encoded string into @a dest. The latter
+ * must provide space for at least #SVN_INT64_BUFFER_SIZE characters.
+ * Returns the number chars written excluding the terminating NUL.
+ *
+ * @note The actual maximum buffer requirement is much shorter than
+ * #SVN_INT64_BUFFER_SIZE but introducing yet another constant is only
+ * marginally useful and may open the door to security issues when e.g.
+ * switching between base10 and base36 encoding.
+ */
+apr_size_t
+svn__ui64tobase36(char *dest, apr_uint64_t number);
+
+/** Returns the value of the base36 encoded unsigned integer starting at
+ * @a source.  If @a next is not NULL, @a *next will be set to the first
+ * position after the integer.
+ *
+ * The data in @a source will be considered part of the number to parse
+ * as long as the characters are within the base36 range.  If there are
+ * no such characters to begin with, 0 is returned.  Inputs with more than
+ * #SVN_INT64_BUFFER_SIZE digits will not be fully parsed, i.e. the value
+ * of @a *next as well as the return value are undefined.
+ */
+apr_uint64_t
+svn__base36toui64(const char **next, const char *source);
+
 /**
  * Computes the similarity score of STRA and STRB. Returns the ratio
  * of the length of their longest common subsequence and the average
@@ -218,6 +244,76 @@ svn_string__similarity(const svn_string_
                        svn_membuf_t *buffer, apr_size_t *rlcs);
 
 
+/* Return the lowest position at which A and B differ. If no difference
+ * can be found in the first MAX_LEN characters, MAX_LEN will be returned.
+ */
+apr_size_t
+svn_cstring__match_length(const char *a,
+                          const char *b,
+                          apr_size_t max_len);
+
+/* Return the number of bytes before A and B that don't differ.  If no
+ * difference can be found in the first MAX_LEN characters,  MAX_LEN will
+ * be returned.  Please note that A-MAX_LEN and B-MAX_LEN must both be
+ * valid addresses.
+ */
+apr_size_t
+svn_cstring__reverse_match_length(const char *a,
+                                  const char *b,
+                                  apr_size_t max_len);
+
+/** @} */
+
+/** Prefix trees.
+ *
+ * Prefix trees allow for a space-efficient representation of a set of path-
+ * like strings, i.e. those that share common prefixes.  Any given string
+ * value will be stored only once, i.e. two strings stored in the same tree
+ * are equal if and only if the point to the same #svn_prefix_string__t.
+ *
+ * @defgroup svn_prefix_string Strings in prefix trees.
+* @{
+ */
+
+/**
+ * Opaque data type for prefix-tree-based strings.
+ */
+typedef struct svn_prefix_string__t svn_prefix_string__t;
+
+/**
+ * Opaque data type representing a prefix tree
+ */
+typedef struct svn_prefix_tree__t svn_prefix_tree__t;
+
+/**
+ * Return a new prefix tree allocated in @a pool.
+ */
+svn_prefix_tree__t *
+svn_prefix_tree__create(apr_pool_t *pool);
+
+/**
+ * Return a string with the value @a s stored in @a tree.  If no such string
+ * exists yet, add it automatically.
+ */
+svn_prefix_string__t *
+svn_prefix_string__create(svn_prefix_tree__t *tree,
+                          const char *s);
+
+/**
+ * Return the contents of @a s as a new string object allocated in @a pool.
+ */
+svn_string_t *
+svn_prefix_string__expand(const svn_prefix_string__t *s,
+                          apr_pool_t *pool);
+
+/**
+ * Compare the two strings @a lhs and @a rhs that must be part of the same
+ * tree.
+ */
+int
+svn_prefix_string__compare(const svn_prefix_string__t *lhs,
+                           const svn_prefix_string__t *rhs);
+
 /** @} */
 
 /** @} */

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_subr_private.h Fri Aug 23 13:12:18 2013
@@ -94,11 +94,32 @@ svn_spillbuf__create(apr_size_t blocksiz
                      apr_size_t maxsize,
                      apr_pool_t *result_pool);
 
+/* Create a spill buffer, with extra parameters.  */
+svn_spillbuf_t *
+svn_spillbuf__create_extended(apr_size_t blocksize,
+                              apr_size_t maxsize,
+                              svn_boolean_t delete_on_close,
+                              svn_boolean_t spill_all_contents,
+                              const char* dirpath,
+                              apr_pool_t *result_pool);
 
 /* Determine how much content is stored in the spill buffer.  */
 svn_filesize_t
 svn_spillbuf__get_size(const svn_spillbuf_t *buf);
 
+/* Determine how much content the spill buffer is caching in memory.  */
+svn_filesize_t
+svn_spillbuf__get_memory_size(const svn_spillbuf_t *buf);
+
+/* Retreive the name of the spill file. The returned value can be NULL
+   if the file has not been created yet. */
+const char *
+svn_spillbuf__get_filename(const svn_spillbuf_t *buf);
+
+/* Retreive the handle of the spill file. The returned value can be
+   NULL if the file has not been created yet. */
+apr_file_t *
+svn_spillbuf__get_file(const svn_spillbuf_t *buf);
 
 /* Write some data into the spill buffer.  */
 svn_error_t *
@@ -158,7 +179,6 @@ svn_spillbuf__reader_create(apr_size_t b
                             apr_size_t maxsize,
                             apr_pool_t *result_pool);
 
-
 /* Read @a len bytes from @a reader into @a data. The number of bytes
    actually read is stored in @a amt. If the content is exhausted, then
    @a amt is set to zero. It will always be non-zero if the spill-buffer
@@ -195,8 +215,7 @@ svn_spillbuf__reader_write(svn_spillbuf_
    but implements the same basic sematics of a spillbuf for the underlying
    storage. */
 svn_stream_t *
-svn_stream__from_spillbuf(apr_size_t blocksize,
-                          apr_size_t maxsize,
+svn_stream__from_spillbuf(svn_spillbuf_t *buf,
                           apr_pool_t *result_pool);
 
 /** @} */
@@ -333,6 +352,84 @@ svn_version__at_least(svn_version_t *ver
 
 /** @} */
 
+/**
+ * @defgroup svn_compress Data (de-)compression API
+ * @{
+ */
+
+/* This is at least as big as the largest size of an integer that
+   svn__encode_uint() can generate; it is sufficient for creating buffers
+   for it to write into.  This assumes that integers are at most 64 bits,
+   and so 10 bytes (with 7 bits of information each) are sufficient to
+   represent them. */
+#define SVN__MAX_ENCODED_UINT_LEN 10
+
+/* Compression method parameters for svn__encode_uint. */
+
+/* No compression (but a length prefix will still be added to the buffer) */
+#define SVN__COMPRESSION_NONE         0
+
+/* Fastest, least effective compression method & level provided by zlib. */
+#define SVN__COMPRESSION_ZLIB_MIN     1
+
+/* Default compression method & level provided by zlib. */
+#define SVN__COMPRESSION_ZLIB_DEFAULT 5
+
+/* Slowest, best compression method & level provided by zlib. */
+#define SVN__COMPRESSION_ZLIB_MAX     9
+
+/* Encode VAL into the buffer P using the variable-length 7b/8b unsigned
+   integer format.  Return the incremented value of P after the
+   encoded bytes have been written.  P must point to a buffer of size
+   at least SVN__MAX_ENCODED_UINT_LEN.
+
+   This encoding uses the high bit of each byte as a continuation bit
+   and the other seven bits as data bits.  High-order data bits are
+   encoded first, followed by lower-order bits, so the value can be
+   reconstructed by concatenating the data bits from left to right and
+   interpreting the result as a binary number.  Examples (brackets
+   denote byte boundaries, spaces are for clarity only):
+
+           1 encodes as [0 0000001]
+          33 encodes as [0 0100001]
+         129 encodes as [1 0000001] [0 0000001]
+        2000 encodes as [1 0001111] [0 1010000]
+*/
+unsigned char *
+svn__encode_uint(unsigned char *p, apr_uint64_t val);
+
+/* Decode an unsigned 7b/8b-encoded integer into *VAL and return a pointer
+   to the byte after the integer.  The bytes to be decoded live in the
+   range [P..END-1].  If these bytes do not contain a whole encoded
+   integer, return NULL; in this case *VAL is undefined.
+
+   See the comment for svn__encode_uint() earlier in this file for more
+   detail on the encoding format.  */
+const unsigned char *
+svn__decode_uint(apr_uint64_t *val,
+                 const unsigned char *p,
+                 const unsigned char *end);
+
+/* Get the data from IN, compress it according to the specified
+ * COMPRESSION_METHOD and write the result to OUT.
+ * SVN__COMPRESSION_NONE is valid for COMPRESSION_METHOD.
+ */
+svn_error_t *
+svn__compress(svn_stringbuf_t *in,
+              svn_stringbuf_t *out,
+              int compression_method);
+
+/* Get the compressed data from IN, decompress it and write the result to
+ * OUT.  Return an error if the decompressed size is larger than LIMIT.
+ */
+svn_error_t *
+svn__decompress(svn_stringbuf_t *in,
+                svn_stringbuf_t *out,
+                apr_size_t limit);
+
+/** @} */
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_temp_serializer.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_temp_serializer.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_temp_serializer.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_temp_serializer.h Fri Aug 23 13:12:18 2013
@@ -143,6 +143,22 @@ void
 svn_temp_serializer__pop(svn_temp_serializer__context_t *context);
 
 /**
+ * Serialize a referenced sub-structure within the serialization
+ * @a context.  @a source_struct must be a reference to the
+ * pointer in the original parent structure so that the correspondence in
+ * the serialized structure can be established. @a struct_size must match
+ * the result of @c sizeof() of the actual structure.
+ *
+ * This function is equivalent but more efficient than calling
+ * #svn_temp_serializer__push() immediately followed by
+ * #svn_temp_serializer__pop().
+ */
+void
+svn_temp_serializer__add_leaf(svn_temp_serializer__context_t *context,
+                              const void * const * source_struct,
+                              apr_size_t struct_size);
+
+/**
  * Serialize a string referenced from the current structure within the
  * serialization @a context. @a s must be a reference to the @c char*
  * pointer in the original structure so that the correspondence in the

Modified: subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/private/svn_utf_private.h Fri Aug 23 13:12:18 2013
@@ -73,6 +73,18 @@ svn_utf__last_valid(const char *src, apr
 const char *
 svn_utf__last_valid2(const char *src, apr_size_t len);
 
+/* Copy LENGTH bytes of SRC, converting characters as follows:
+    - Pass characters from the ASCII subset to the result
+    - Strip all combining marks from the string
+    - Represent other valid Unicode chars as {U+XXXX}
+    - Replace invalid Unicode chars with {U?XXXX}
+    - Represent chars that are not valid UTF-8 as ?\XX
+    - Replace codes outside the Unicode range with a sequence of ?\XX
+    - Represent the null byte as \0
+   Allocate the result in POOL. */
+const char *
+svn_utf__fuzzy_escape(const char *src, apr_size_t length, apr_pool_t *pool);
+
 const char *
 svn_utf__cstring_from_utf8_fuzzy(const char *src,
                                  apr_pool_t *pool,
@@ -100,6 +112,14 @@ svn_utf__normcmp(int *result,
                  const char *str2, apr_size_t len2,
                  svn_membuf_t *buf1, svn_membuf_t *buf2);
 
+/* Check if STRING is a valid, NFC-normalized UTF-8 string.  Note that
+ * a FALSE return value may indicate that STRING is not valid UTF-8 at
+ * all.
+ *
+ * Use SCRATCH_POOL for temporary allocations.
+ */
+svn_boolean_t
+svn_utf__is_normalized(const char *string, apr_pool_t *scratch_pool);
 
 /* Pattern matching similar to the the SQLite LIKE and GLOB
  * operators. PATTERN, KEY and ESCAPE must all point to UTF-8

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_client.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_client.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_client.h Fri Aug 23 13:12:18 2013
@@ -1014,6 +1014,11 @@ typedef struct svn_client_ctx_t
    * @since New in 1.7.  */
   svn_wc_context_t *wc_ctx;
 
+  /** Total number of bytes transferred over network.
+   *
+   * @Since New in 1.9. */
+  apr_off_t progress;
+
   /** A RA session cache for the client operation to use.
    * This is initialized by svn_client_create_context() and should never
    * be directly used or changed.

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_config.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_config.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_config.h Fri Aug 23 13:12:18 2013
@@ -96,7 +96,7 @@ typedef struct svn_config_t svn_config_t
 /** @since New in 1.8. */
 #define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS      "http-max-connections"
 /** @since New in 1.9. */
-#define SVN_CONFIG_OPTION_BUSTED_PROXY              "busted-proxy"
+#define SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS     "http-chunked-requests"
 
 #define SVN_CONFIG_CATEGORY_CONFIG          "config"
 #define SVN_CONFIG_SECTION_AUTH                 "auth"
@@ -172,10 +172,12 @@ typedef struct svn_config_t svn_config_t
 /* We want this to be printed on two lines in the generated config file,
  * but we don't want the # character to end up in the variable.
  */
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_1 \
   "*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__"
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_2 \
   "*.rej *~ #*# .#* .*.swp .DS_Store"
+#endif
 
 #define SVN_CONFIG_DEFAULT_GLOBAL_IGNORES \
   SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_1 " " \
@@ -736,6 +738,12 @@ typedef svn_error_t *
  * under @a config_dir.  If the callback sets its delete_cred return
  * flag, delete the associated credential.
  *
+ * If @a config_dir is not NULL, it must point to an alternative
+ * config directory location. If it is NULL, the default location
+ * is used.
+ *
+ * @note @a config_dir may only be NULL in 1.8.2 and later.
+ *
  * @note Removing credentials from the config-based disk store will
  * not purge them from any open svn_auth_baton_t instance.  Consider
  * using svn_auth_forget_credentials() -- from the @a cleanup_func,

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_error_codes.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_error_codes.h Fri Aug 23 13:12:18 2013
@@ -233,6 +233,11 @@ SVN_ERROR_START
              SVN_ERR_BAD_CATEGORY_START + 15,
              "Invalid atomic")
 
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_BAD_COMPRESSION_METHOD,
+             SVN_ERR_BAD_CATEGORY_START + 16,
+             "Invalid compression method")
+
   /* xml errors */
 
   SVN_ERRDEF(SVN_ERR_XML_ATTRIB_NOT_FOUND,
@@ -801,6 +806,36 @@ SVN_ERROR_START
              SVN_ERR_FS_CATEGORY_START + 52,
              "Could not initialize the revprop caching infrastructure.")
 
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_MALFORMED_TXN_ID,
+             SVN_ERR_FS_CATEGORY_START + 53,
+             "Malformed transaction ID string.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_CORRUPTION,
+             SVN_ERR_FS_CATEGORY_START + 54,
+             "Corrupt index file.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_REVISION,
+             SVN_ERR_FS_CATEGORY_START + 55,
+             "Revision not covered by index.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_OVERFLOW,
+             SVN_ERR_FS_CATEGORY_START + 56,
+             "Item index too large for this revision.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_CONTAINER_INDEX,
+             SVN_ERR_FS_CATEGORY_START + 57,
+             "Container index out of range.")
+
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_FS_ITEM_INDEX_INCONSISTENT,
+             SVN_ERR_FS_CATEGORY_START + 58,
+             "Index files are inconsistent.")
+
   /* repos errors */
 
   SVN_ERRDEF(SVN_ERR_REPOS_LOCKED,
@@ -1350,6 +1385,11 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 40,
              "Bad arguments to SQL operators GLOB or LIKE")
 
+  /** @since New in 1.9. */
+  SVN_ERRDEF(SVN_ERR_CORRUPT_PACKED_DATA,
+             SVN_ERR_MISC_CATEGORY_START + 41,
+             "Packed data stream is corrupt")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,
@@ -1512,10 +1552,7 @@ SVN_ERROR_START
              SVN_ERR_RA_SERF_CATEGORY_START + 2,
              "Initialization of the GSSAPI context failed")
 
-  /** @since New in 1.7.
-   * @note When @c svn_error_t.apr_err is set to this,
-   * @c svn_error_t.child->apr_err is a serf error code, not a Subversion
-   * one! */
+  /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_RA_SERF_WRAPPED_ERROR,
              SVN_ERR_RA_SERF_CATEGORY_START + 3,
              "While handling serf response:")

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_fs.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_fs.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_fs.h Fri Aug 23 13:12:18 2013
@@ -121,6 +121,16 @@ typedef struct svn_fs_t svn_fs_t;
 /** @since New in 1.1. */
 #define SVN_FS_TYPE_FSFS                        "fsfs"
 
+/**
+ * EXPERIMENTAL filesystem backend.
+ *
+ * It is not ready for general production use.  Please consult the
+ * respective release notes on suggested usage scenarios.
+ * 
+ * @since New in 1.9.
+ */
+#define SVN_FS_TYPE_FSX                         "fsx"
+
 /** Create repository format compatible with Subversion versions
  * earlier than 1.4.
  *
@@ -148,6 +158,18 @@ typedef struct svn_fs_t svn_fs_t;
  * @since New in 1.8.
  */
 #define SVN_FS_CONFIG_PRE_1_8_COMPATIBLE        "pre-1.8-compatible"
+
+/** Create repository format compatible with Subversion versions
+ * earlier than 1.9.  The value must be a version in the same format
+ * as #SVN_VER_NUMBER.
+ *
+ * @note The @c patch component would often be ignored, due to our forward
+ * compatibility promises within minor release lines.  It should therefore
+ * usually be set to @c 0.
+ *
+ * @since New in 1.9.
+ */
+#define SVN_FS_CONFIG_COMPATIBLE_VERSION        "compatible-version"
 /** @} */
 
 
@@ -222,6 +244,7 @@ svn_fs_set_warning_func(svn_fs_t *fs,
  *
  *   SVN_FS_TYPE_BDB   Berkeley-DB implementation
  *   SVN_FS_TYPE_FSFS  Native-filesystem implementation
+ *   SVN_FS_TYPE_FSX   Experimental filesystem implementation
  *
  * If @a fs_config is @c NULL or does not contain a value for
  * #SVN_FS_CONFIG_FS_TYPE then the default filesystem type will be used.
@@ -1020,6 +1043,19 @@ svn_fs_begin_txn(svn_fs_txn_t **txn_p,
  * ###     conflict string
  * ###   *new_rev will always be initialized to SVN_INVALID_REVNUM, or
  * ###     to a valid, committed revision number
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_commit_txn2(const char **conflict_p,
+                   svn_revnum_t *new_rev,
+                   svn_fs_txn_t *txn,
+                   svn_boolean_t set_timestamp,
+                   apr_pool_t *pool);
+
+/*
+ * Same as svn_fs_commit_txn2(), but with @a set_timestamp
+ * always set to @c TRUE.
  */
 svn_error_t *
 svn_fs_commit_txn(const char **conflict_p,
@@ -2649,6 +2685,32 @@ typedef struct svn_fs_fsfs_info_t {
      or svn_fs_info_dup(). */
 } svn_fs_fsfs_info_t;
 
+/**
+ * A structure that provides some information about a filesystem.
+ * Returned by svn_fs_info() for #SVN_FS_TYPE_FSX filesystems.
+ *
+ * @note Fields may be added to the end of this structure in future
+ * versions.  Therefore, users shouldn't allocate structures of this
+ * type, to preserve binary compatibility.
+ *
+ * @since New in 1.9.
+ */
+typedef struct svn_fs_fsx_info_t {
+
+  /** Filesystem backend (#fs_type), i.e., the string #SVN_FS_TYPE_FSX. */
+  const char *fs_type;
+
+  /** Shard size, always > 0. */
+  int shard_size;
+
+  /** The smallest revision which is not in a pack file. */
+  svn_revnum_t min_unpacked_rev;
+
+  /* If you add fields here, check whether you need to extend svn_fs_info()
+     or svn_fs_info_dup(). */
+
+} svn_fs_fsx_info_t;
+
 /** @see svn_fs_info()
  * @since New in 1.9. */
 typedef struct svn_fs_info_placeholder_t {

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_hash.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_hash.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_hash.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_hash.h Fri Aug 23 13:12:18 2013
@@ -37,7 +37,6 @@
 #include "svn_types.h"
 #include "svn_io.h"       /* for svn_stream_t */
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -245,14 +244,14 @@ svn_hash_from_cstring_keys(apr_hash_t **
  * @since New in 1.8.
  */
 #define svn_hash_gets(ht, key) \
-            apr_hash_get(ht, key, strlen(key))
+            apr_hash_get(ht, key, APR_HASH_KEY_STRING)
 
 /** Shortcut for apr_hash_set() with a const char * key.
  *
  * @since New in 1.8.
  */
 #define svn_hash_sets(ht, key, val) \
-            apr_hash_set(ht, key, strlen(key), val)
+            apr_hash_set(ht, key, APR_HASH_KEY_STRING, val)
 
 /** @} */
 

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_io.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_io.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_io.h Fri Aug 23 13:12:18 2013
@@ -691,6 +691,27 @@ svn_io_file_create(const char *file,
                    const char *contents,
                    apr_pool_t *pool);
 
+/** Create file at utf8-encoded @a file with binary contents @a contents
+ * of @a length bytes.  @a file must not already exist.
+ * Use @a pool for memory allocations.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_io_file_create_binary(const char *file,
+                          const char *contents,
+                          apr_size_t length,
+                          apr_pool_t *pool);
+
+/** Create empty file at utf8-encoded @a file, which must not already exist.
+ * Use @a pool for memory allocations.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_io_file_create_empty(const char *file,
+                         apr_pool_t *pool);
+
 /**
  * Lock file at @a lock_file. If @a exclusive is TRUE,
  * obtain exclusive lock, otherwise obtain shared lock.
@@ -2065,6 +2086,28 @@ svn_io_file_seek(apr_file_t *file,
                  apr_off_t *offset,
                  apr_pool_t *pool);
 
+/** Set the file pointer of the #APR_BUFFERED @a file to @a offset.  In
+ * contrast to #svn_io_file_seek, this function will attempt to resize the
+ * internal data buffer to @a block_size bytes and to read data aligned to
+ * multiples of that value.  The beginning of the block will be returned
+ * in @a buffer_start, if that is not NULL.
+ * Uses @a pool for temporary allocations.
+ *
+ * @note Due to limitations of the APR API, in particular pre-1.3 APR,
+ * the alignment may not be successful.  If you never use any other seek
+ * function on @a file, you are, however, virtually guaranteed to get at
+ * least 4kByte alignments for all reads.
+ *
+ * @note Calling this for non-buffered files is legal but inefficient.
+ *
+ * @since New in 1.9
+ */
+svn_error_t *
+svn_io_file_aligned_seek(apr_file_t *file,
+                         apr_off_t block_size,
+                         apr_off_t *buffer_start,
+                         apr_off_t offset,
+                         apr_pool_t *pool);
 
 /** Wrapper for apr_file_write(). */
 svn_error_t *

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_sorts.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_sorts.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_sorts.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_sorts.h Fri Aug 23 13:12:18 2013
@@ -174,7 +174,8 @@ svn_sort__hash(apr_hash_t *ht,
 /* Return the lowest index at which the element @a *key should be inserted into
  * the array @a array, according to the ordering defined by @a compare_func.
  * The array must already be sorted in the ordering defined by @a compare_func.
- * @a compare_func is defined as for the C stdlib function bsearch().
+ * @a compare_func is defined as for the C stdlib function bsearch(); the
+ * @a key will always passed to it as the second parameter.
  *
  * @note Private. For use by Subversion's own code only.
  */
@@ -216,6 +217,77 @@ void
 svn_sort__array_reverse(apr_array_header_t *array,
                         apr_pool_t *scratch_pool);
 
+/** Priority queues.
+ *
+ * @defgroup svn_priority_queue__t Priority Queues
+ * @{
+ */
+
+/**
+ * We implement priority queues on top of existing ELEMENTS arrays.  They
+ * provide us with memory management and very basic element type information.
+ *
+ * The extraction order is being defined by a comparison function similar
+ * to the ones used with qsort.  The first element in the queue is always
+ * on with COMPARISON_FUNC(first,element) <= 0, for all elements in the
+ * queue.
+ */
+
+/**
+ * Opaque data type for priority queues.
+ */
+typedef struct svn_priority_queue__t svn_priority_queue__t;
+
+/**
+ * Return a priority queue containing all provided @a elements and prioritize
+ * them according to @a compare_func.
+ *
+ * @note The priority queue will use the existing @a elements array for data
+ * storage.  So, you must not manipulate that array while using the queue.
+ * Also, the lifetime of the queue is bound to that of the array.
+ */
+svn_priority_queue__t *
+svn_priority_queue__create(apr_array_header_t *elements,
+                           int (*compare_func)(const void *, const void *));
+
+/**
+ * Returns the number of elements in the @a queue.
+ */
+apr_size_t
+svn_priority_queue__size(svn_priority_queue__t *queue);
+
+/**
+ * Returns a reference to the first element in the @a queue.  The queue
+ * contents remains unchanged.  If the @a queue is empty, #NULL will be
+ * returned.
+ */
+void *
+svn_priority_queue__peek(svn_priority_queue__t *queue);
+
+/**
+ * Notify the @a queue after modifying the first item as returned by
+ * #svn_priority_queue__peek.
+ */
+void
+svn_priority_queue__update(svn_priority_queue__t *queue);
+
+/**
+ * Remove the first element from the @a queue.  This is a no-op for empty
+ * queues.
+ */
+void
+svn_priority_queue__pop(svn_priority_queue__t *queue);
+
+/**
+ * Append the new @a element to the @a queue.  @a element must neither be
+ * #NULL nor the first element as returned by #svn_priority_queue__peek.
+ */
+void
+svn_priority_queue__push(svn_priority_queue__t *queue, const void *element);
+
+/** @} */
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_string.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_string.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_string.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_string.h Fri Aug 23 13:12:18 2013
@@ -232,6 +232,15 @@ svn_stringbuf_create_ensure(apr_size_t m
 svn_stringbuf_t *
 svn_stringbuf_create_from_string(const svn_string_t *str, apr_pool_t *pool);
 
+/** Create a new stringbuf using the given @a str as initial buffer.
+ * Allocate the result in @a pool.  In contrast to #svn_stringbuf_create,
+ * the contents of @a str may change when the stringbuf gets modified.
+ *
+ * @since New in 1.9
+ */
+svn_stringbuf_t *
+svn_stringbuf_create_wrap(char *str, apr_pool_t *pool);
+
 /** Create a new stringbuf by printf-style formatting using @a fmt and the
  * variable arguments, which are as appropriate for apr_psprintf().
  */
@@ -304,6 +313,16 @@ svn_stringbuf_appendbytes(svn_stringbuf_
                           const char *bytes,
                           apr_size_t count);
 
+/** Append @a byte @a count times onto @a targetstr.
+ *
+ * reallocs if necessary. @a targetstr is affected, nothing else is.
+ * @since New in 1.9.
+ */
+void
+svn_stringbuf_appendfill(svn_stringbuf_t *targetstr,
+                         char byte,
+                         apr_size_t count);
+
 /** Append the stringbuf @c appendstr onto @a targetstr.
  *
  * reallocs if necessary. @a targetstr is affected, nothing else is.

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_version.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_version.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_version.h Fri Aug 23 13:12:18 2013
@@ -192,6 +192,8 @@ struct svn_version_t
  * unreleased library. A development client is always compatible with
  * a previous released library.
  *
+ * @note Implements the #svn_ver_check_list2.@a comparator interface.
+ *
  * @since New in 1.1.
  */
 svn_boolean_t
@@ -201,6 +203,8 @@ svn_ver_compatible(const svn_version_t *
 /**
  * Check if @a my_version and @a lib_version encode the same version number.
  *
+ * @note Implements the #svn_ver_check_list2.@a comparator interface.
+ *
  * @since New in 1.2.
  */
 svn_boolean_t
@@ -228,10 +232,31 @@ typedef struct svn_version_checklist_t
  * my_version is compatible with each entry in @a checklist. @a
  * checklist must end with an entry whose label is @c NULL.
  *
- * @see svn_ver_compatible()
+ * @a my_version is considered to be compatible with a version in @a checklist
+ * if @a comparator returns #TRUE when called with @a my_version as the first
+ * parammeter and the @a checklist version as the second parameter.
+ *
+ * @see svn_ver_compatible(), svn_ver_equal()
+ *
+ * @note Subversion's own code invariably uses svn_ver_equal() as @a comparator,
+ * since the cmdline tools sometimes use non-public APIs (such as utility
+ * functions that haven't been promoted to svn_cmdline.h).  Third-party code
+ * SHOULD use svn_ver_compatible() as @a comparator.
  *
- * @since New in 1.1.
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_ver_check_list2(const svn_version_t *my_version,
+                    const svn_version_checklist_t *checklist,
+                    svn_boolean_t (*comparator)(const svn_version_t *,
+                                                const svn_version_t *));
+
+/** Similar to svn_ver_check_list2(), with @a comparator set to
+ * #svn_ver_compatible.
+ *
+ * @deprecated Provided for backward compatibility with 1.8 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ver_check_list(const svn_version_t *my_version,
                    const svn_version_checklist_t *checklist);

Modified: subversion/branches/reuse-ra-session/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/include/svn_wc.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/include/svn_wc.h (original)
+++ subversion/branches/reuse-ra-session/subversion/include/svn_wc.h Fri Aug 23 13:12:18 2013
@@ -1261,6 +1261,11 @@ typedef enum svn_wc_notify_action_t
    * @since New in 1.9. */
   svn_wc_notify_cleanup_external,
 
+  /** The operation failed because the operation (E.g. commit) is only valid
+   * if the operation includes this path.
+   * @since New in 1.9. */
+  svn_wc_notify_failed_requires_target
+
 } svn_wc_notify_action_t;
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_auth_gnome_keyring/gnome_keyring.c Fri Aug 23 13:12:18 2013
@@ -32,6 +32,7 @@
 #include <glib.h>
 #include <gnome-keyring.h>
 
+#include "svn_private_config.h"
 #include "svn_auth.h"
 #include "svn_config.h"
 #include "svn_error.h"
@@ -40,8 +41,6 @@
 
 #include "private/svn_auth_private.h"
 
-#include "svn_private_config.h"
-
 
 
 /*-----------------------------------------------------------------------*/

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/add.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/add.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/add.c Fri Aug 23 13:12:18 2013
@@ -30,6 +30,8 @@
 #include <string.h>
 #include <apr_lib.h>
 #include <apr_fnmatch.h>
+
+#include "svn_private_config.h"
 #include "svn_wc.h"
 #include "svn_client.h"
 #include "svn_string.h"
@@ -50,8 +52,6 @@
 #include "private/svn_ra_private.h"
 #include "private/svn_magic.h"
 
-#include "svn_private_config.h"
-
 
 
 /*** Code. ***/
@@ -1243,35 +1243,34 @@ mkdir_urls(const apr_array_header_t *url
 
 
 svn_error_t *
-svn_client__make_local_parents(const char *path,
+svn_client__make_local_parents(const char *local_abspath,
                                svn_boolean_t make_parents,
                                svn_client_ctx_t *ctx,
-                               apr_pool_t *pool)
+                               apr_pool_t *scratch_pool)
 {
   svn_error_t *err;
   svn_node_kind_t orig_kind;
-  SVN_ERR(svn_io_check_path(path, &orig_kind, pool));
+  SVN_ERR(svn_io_check_path(local_abspath, &orig_kind, scratch_pool));
   if (make_parents)
-    SVN_ERR(svn_io_make_dir_recursively(path, pool));
+    SVN_ERR(svn_io_make_dir_recursively(local_abspath, scratch_pool));
   else
-    SVN_ERR(svn_io_dir_make(path, APR_OS_DEFAULT, pool));
+    SVN_ERR(svn_io_dir_make(local_abspath, APR_OS_DEFAULT, scratch_pool));
 
   /* Should no longer use svn_depth_empty to indicate that only the directory
      itself is added, since it not only constraints the operation depth, but
      also defines the depth of the target directory now. Moreover, the new
      directory will have no children at all.*/
-  err = svn_client_add5(path, svn_depth_infinity, FALSE, FALSE, FALSE,
-                        make_parents, ctx, pool);
+  err = svn_client_add5(local_abspath, svn_depth_infinity, FALSE, FALSE, FALSE,
+                        make_parents, ctx, scratch_pool);
 
   /* If we created a new directory, but couldn't add it to version
      control, then delete it. */
   if (err && (orig_kind == svn_node_none))
     {
-      /* ### If this returns an error, should we link it onto
-         err instead, so that the user is warned that we just
-         created an unversioned directory? */
-
-      svn_error_clear(svn_io_remove_dir2(path, FALSE, NULL, NULL, pool));
+      err = svn_error_compose_create(err,
+                                     svn_io_remove_dir2(local_abspath, FALSE,
+                                                        NULL, NULL,
+                                                        scratch_pool));
     }
 
   return svn_error_trace(err);
@@ -1300,23 +1299,25 @@ svn_client_mkdir4(const apr_array_header
   else
     {
       /* This is a regular "mkdir" + "svn add" */
-      apr_pool_t *subpool = svn_pool_create(pool);
+      apr_pool_t *iterpool = svn_pool_create(pool);
       int i;
 
       for (i = 0; i < paths->nelts; i++)
         {
           const char *path = APR_ARRAY_IDX(paths, i, const char *);
 
-          svn_pool_clear(subpool);
+          svn_pool_clear(iterpool);
 
           /* See if the user wants us to stop. */
           if (ctx->cancel_func)
             SVN_ERR(ctx->cancel_func(ctx->cancel_baton));
 
+          SVN_ERR(svn_dirent_get_absolute(&path, path, iterpool));
+
           SVN_ERR(svn_client__make_local_parents(path, make_parents, ctx,
-                                                 subpool));
+                                                 iterpool));
         }
-      svn_pool_destroy(subpool);
+      svn_pool_destroy(iterpool);
     }
 
   return SVN_NO_ERROR;

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/cat.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/cat.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/cat.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/cat.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_client.h"
 #include "svn_string.h"
@@ -39,7 +40,6 @@
 #include "svn_props.h"
 #include "client.h"
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/changelist.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/changelist.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/changelist.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/changelist.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_private_config.h"
 #include "svn_client.h"
 #include "svn_wc.h"
 #include "svn_pools.h"
@@ -36,7 +37,6 @@
 
 #include "client.h"
 #include "private/svn_wc_private.h"
-#include "svn_private_config.h"
 
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/checkout.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/checkout.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/checkout.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/checkout.c Fri Aug 23 13:12:18 2013
@@ -79,8 +79,6 @@ svn_client__checkout_internal(svn_revnum
                               apr_pool_t *pool)
 {
   svn_node_kind_t kind;
-  apr_pool_t *session_pool = svn_pool_create(pool);
-  svn_ra_session_t *ra_session;
   svn_client__pathrev_t *pathrev;
 
   /* Sanity check.  Without these, the checkout is meaningless. */
@@ -94,15 +92,21 @@ svn_client__checkout_internal(svn_revnum
       && (revision->kind != svn_opt_revision_head))
     return svn_error_create(SVN_ERR_CLIENT_BAD_REVISION, NULL, NULL);
 
-  /* Get the RA connection. */
-  SVN_ERR(svn_client__ra_session_from_path2(&ra_session, &pathrev,
-                                            url, NULL, peg_revision, revision,
-                                            ctx, session_pool));
+  {
+    apr_pool_t *session_pool = svn_pool_create(pool);
+    svn_ra_session_t *ra_session;
+
+    /* Get the RA connection. */
+    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,
+                              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);
+    svn_pool_destroy(session_pool);
+  }
 
   if (kind == svn_node_none)
     return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL,

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/cleanup.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/cleanup.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/cleanup.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/cleanup.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_private_config.h"
 #include "svn_time.h"
 #include "svn_wc.h"
 #include "svn_client.h"
@@ -38,7 +39,6 @@
 #include "client.h"
 #include "svn_props.h"
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/client.h?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/client.h (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/client.h Fri Aug 23 13:12:18 2013
@@ -466,10 +466,10 @@ svn_client__wc_delete_many(const apr_arr
                            apr_pool_t *pool);
 
 
-/* Make PATH and add it to the working copy, optionally making all the
-   intermediate parent directories if MAKE_PARENTS is TRUE. */
+/* Make LOCAL_ABSPATH and add it to the working copy, optionally making all
+   the intermediate parent directories if MAKE_PARENTS is TRUE. */
 svn_error_t *
-svn_client__make_local_parents(const char *path,
+svn_client__make_local_parents(const char *local_abspath,
                                svn_boolean_t make_parents,
                                svn_client_ctx_t *ctx,
                                apr_pool_t *pool);

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/commit.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/commit.c Fri Aug 23 13:12:18 2013
@@ -30,6 +30,8 @@
 #include <string.h>
 #include <apr_strings.h>
 #include <apr_hash.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_wc.h"
 #include "svn_ra.h"
@@ -46,8 +48,6 @@
 #include "private/svn_wc_private.h"
 #include "private/svn_ra_private.h"
 
-#include "svn_private_config.h"
-
 struct capture_baton_t {
   svn_commit_callback2_t original_callback;
   void *original_baton;
@@ -854,6 +854,19 @@ svn_client_commit6(const apr_array_heade
                               svn_dirent_local_style(item->path, iterpool),
                               svn_dirent_local_style(delete_op_root_abspath,
                                                      iterpool));
+
+                  if (ctx->notify_func2)
+                    {
+                      svn_wc_notify_t *notify;
+                      notify = svn_wc_create_notify(
+                                    delete_op_root_abspath,
+                                    svn_wc_notify_failed_requires_target,
+                                    iterpool);
+                      notify->err = cmt_err;
+
+                      ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
+                    }
+
                   goto cleanup;
                 }
             }
@@ -885,6 +898,19 @@ svn_client_commit6(const apr_array_heade
                          svn_dirent_local_style(item->path, iterpool),
                          svn_dirent_local_style(copy_op_root_abspath,
                                                 iterpool));
+
+              if (ctx->notify_func2)
+                {
+                    svn_wc_notify_t *notify;
+                    notify = svn_wc_create_notify(
+                                copy_op_root_abspath,
+                                svn_wc_notify_failed_requires_target,
+                                iterpool);
+                    notify->err = cmt_err;
+
+                    ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
+                }
+
               goto cleanup;
             }
         }
@@ -999,9 +1025,22 @@ svn_client_commit6(const apr_array_heade
     }
 
  cleanup:
-  /* Sleep to ensure timestamp integrity. */
+  /* Sleep to ensure timestamp integrity.  BASE_ABSPATH may have been
+     removed by the commit or it may the common ancestor of multiple
+     working copies. */
   if (timestamp_sleep)
-    svn_io_sleep_for_timestamps(base_abspath, pool);
+    {
+      const char *sleep_abspath;
+      svn_error_t *err = svn_wc__get_wcroot(&sleep_abspath, ctx->wc_ctx,
+                                            base_abspath, pool, pool);
+      if (err)
+        {
+          svn_error_clear(err);
+          sleep_abspath = base_abspath;
+        }
+
+      svn_io_sleep_for_timestamps(sleep_abspath, pool);
+    }
 
   /* Abort the commit if it is still in progress. */
   svn_pool_clear(iterpool); /* Close open handles before aborting */

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/commit_util.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/commit_util.c Fri Aug 23 13:12:18 2013
@@ -30,6 +30,7 @@
 #include <apr_hash.h>
 #include <apr_md5.h>
 
+#include "svn_private_config.h"
 #include "client.h"
 #include "svn_dirent_uri.h"
 #include "svn_path.h"
@@ -42,7 +43,6 @@
 #include <assert.h>
 #include <stdlib.h>  /* for qsort() */
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 #include "private/svn_client_private.h"
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/copy.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/copy.c Fri Aug 23 13:12:18 2013
@@ -28,6 +28,8 @@
 /*** Includes. ***/
 
 #include <string.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_client.h"
 #include "svn_error.h"
@@ -43,7 +45,6 @@
 #include "client.h"
 #include "mergeinfo.h"
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 #include "private/svn_ra_private.h"
 #include "private/svn_mergeinfo_private.h"

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/copy_foreign.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/copy_foreign.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/copy_foreign.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/copy_foreign.c Fri Aug 23 13:12:18 2013
@@ -26,6 +26,8 @@
 /*** Includes. ***/
 
 #include <string.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_client.h"
 #include "svn_delta.h"
@@ -43,7 +45,6 @@
 #include "client.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_wc_private.h"
-#include "svn_private_config.h"
 
 struct edit_baton_t
 {

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/ctx.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/ctx.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/ctx.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/ctx.c Fri Aug 23 13:12:18 2013
@@ -28,6 +28,8 @@
 /*** Includes. ***/
 
 #include <apr_pools.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_client.h"
 #include "svn_error.h"

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/delete.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/delete.c Fri Aug 23 13:12:18 2013
@@ -28,6 +28,8 @@
 /*** Includes. ***/
 
 #include <apr_file_io.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_pools.h"
@@ -42,8 +44,6 @@
 #include "private/svn_wc_private.h"
 #include "private/svn_ra_private.h"
 
-#include "svn_private_config.h"
-
 
 /*** Code. ***/
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/deprecated.c Fri Aug 23 13:12:18 2013
@@ -33,6 +33,8 @@
 #define SVN_DEPRECATED
 
 #include <string.h>
+
+#include "svn_private_config.h"
 #include "svn_client.h"
 #include "svn_path.h"
 #include "svn_compat.h"
@@ -47,8 +49,6 @@
 
 #include "private/svn_opt_private.h"
 #include "private/svn_wc_private.h"
-#include "svn_private_config.h"
-
 
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/diff.c Fri Aug 23 13:12:18 2013
@@ -30,6 +30,8 @@
 #include <apr_strings.h>
 #include <apr_pools.h>
 #include <apr_hash.h>
+
+#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_hash.h"
 #include "svn_wc.h"
@@ -53,8 +55,6 @@
 #include "private/svn_subr_private.h"
 #include "private/svn_io_private.h"
 
-#include "svn_private_config.h"
-
 
 /* Utilities */
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_local.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_local.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_local.c Fri Aug 23 13:12:18 2013
@@ -30,6 +30,8 @@
 #include <apr_strings.h>
 #include <apr_pools.h>
 #include <apr_hash.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_types.h"
 #include "svn_wc.h"
@@ -47,8 +49,6 @@
 
 #include "private/svn_wc_private.h"
 
-#include "svn_private_config.h"
-
 
 /* Try to get properties for LOCAL_ABSPATH and return them in the property
  * hash *PROPS. If there are no properties because LOCAL_ABSPATH is not

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_summarize.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_summarize.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_summarize.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/diff_summarize.c Fri Aug 23 13:12:18 2013
@@ -22,7 +22,7 @@
  * ====================================================================
  */
 
-
+#include "svn_private_config.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 #include "svn_props.h"

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/export.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/export.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/export.c Fri Aug 23 13:12:18 2013
@@ -29,6 +29,8 @@
 
 #include <apr_file_io.h>
 #include <apr_md5.h>
+
+#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_client.h"
 #include "svn_string.h"
@@ -42,7 +44,6 @@
 #include "svn_props.h"
 #include "client.h"
 
-#include "svn_private_config.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_delta_private.h"
 #include "private/svn_wc_private.h"

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/externals.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/externals.c Fri Aug 23 13:12:18 2013
@@ -28,6 +28,8 @@
 /*** Includes. ***/
 
 #include <apr_uri.h>
+
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_wc.h"
 #include "svn_pools.h"
@@ -40,7 +42,6 @@
 #include "svn_config.h"
 #include "client.h"
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/import.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/import.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/import.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/import.c Fri Aug 23 13:12:18 2013
@@ -32,6 +32,7 @@
 #include <apr_hash.h>
 #include <apr_md5.h>
 
+#include "svn_private_config.h"
 #include "svn_hash.h"
 #include "svn_ra.h"
 #include "svn_delta.h"
@@ -51,8 +52,6 @@
 #include "private/svn_ra_private.h"
 #include "private/svn_magic.h"
 
-#include "svn_private_config.h"
-
 /* Import context baton.
 
    ### TODO:  Add the following items to this baton:

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/info.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/info.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/info.c Fri Aug 23 13:12:18 2013
@@ -23,8 +23,7 @@
 
 /* ==================================================================== */
 
-
-
+#include "svn_private_config.h"
 #include "client.h"
 #include "svn_client.h"
 #include "svn_pools.h"
@@ -33,7 +32,6 @@
 #include "svn_hash.h"
 #include "svn_wc.h"
 
-#include "svn_private_config.h"
 #include "private/svn_fspath.h"
 #include "private/svn_wc_private.h"
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/iprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/iprops.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/iprops.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/iprops.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_private_config.h"
 #include "svn_error.h"
 #include "svn_hash.h"
 #include "svn_pools.h"
@@ -36,7 +37,6 @@
 #include "svn_path.h"
 
 #include "client.h"
-#include "svn_private_config.h"
 
 #include "private/svn_wc_private.h"
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/list.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/list.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/list.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/list.c Fri Aug 23 13:12:18 2013
@@ -21,6 +21,7 @@
  * ====================================================================
  */
 
+#include "svn_private_config.h"
 #include "svn_client.h"
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
@@ -35,7 +36,6 @@
 #include "private/svn_fspath.h"
 #include "private/svn_ra_private.h"
 #include "private/svn_wc_private.h"
-#include "svn_private_config.h"
 
 /* Prototypes for referencing before declaration */
 static svn_error_t *

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/locking_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/locking_commands.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/locking_commands.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/locking_commands.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 
 /*** Includes. ***/
 
+#include "svn_private_config.h"
 #include "svn_client.h"
 #include "svn_hash.h"
 #include "client.h"
@@ -35,7 +36,6 @@
 #include "svn_xml.h"
 #include "svn_pools.h"
 
-#include "svn_private_config.h"
 #include "private/svn_client_private.h"
 #include "private/svn_wc_private.h"
 

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/log.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/log.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/log.c Fri Aug 23 13:12:18 2013
@@ -27,6 +27,7 @@
 #include <apr_strings.h>
 #include <apr_pools.h>
 
+#include "svn_private_config.h"
 #include "svn_pools.h"
 #include "svn_client.h"
 #include "svn_compat.h"
@@ -39,7 +40,6 @@
 
 #include "client.h"
 
-#include "svn_private_config.h"
 #include "private/svn_wc_private.h"
 
 #include <assert.h>

Modified: subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c?rev=1516837&r1=1516836&r2=1516837&view=diff
==============================================================================
--- subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/reuse-ra-session/subversion/libsvn_client/merge.c Fri Aug 23 13:12:18 2013
@@ -31,6 +31,8 @@
 #include <apr_strings.h>
 #include <apr_tables.h>
 #include <apr_hash.h>
+
+#include "svn_private_config.h"
 #include "svn_types.h"
 #include "svn_hash.h"
 #include "svn_wc.h"
@@ -62,8 +64,6 @@
 #include "private/svn_client_private.h"
 #include "private/svn_subr_private.h"
 
-#include "svn_private_config.h"
-
 
 /*-----------------------------------------------------------------------*/
 
@@ -4740,7 +4740,7 @@ find_gaps_in_merge_source_history(svn_re
   *gap_start = *gap_end = SVN_INVALID_REVNUM;
 
   /* Easy out: There can't be a gap between adjacent revisions. */
-  if (abs(source->loc1->rev - source->loc2->rev) == 1)
+  if (labs(source->loc1->rev - source->loc2->rev) == 1)
     return SVN_NO_ERROR;
 
   /* Get SOURCE as mergeinfo. */
@@ -12050,11 +12050,15 @@ short_circuit_mergeinfo_log(svn_mergeinf
                             svn_log_entry_receiver_t receiver,
                             svn_revnum_t *revision,
                             svn_client_ctx_t *ctx,
+                            svn_ra_session_t *ra_session,
                             apr_pool_t *result_pool,
                             apr_pool_t *scratch_pool)
 {
   apr_array_header_t *revprops;
   svn_error_t *err;
+  const char *session_url;
+
+  SVN_ERR(svn_ra_get_session_url(ra_session, &session_url, scratch_pool));
 
   revprops = apr_array_make(scratch_pool, 0, sizeof(const char *));
   err = svn_client__mergeinfo_log(finding_merged,
@@ -12067,8 +12071,12 @@ short_circuit_mergeinfo_log(svn_mergeinf
                                   source_end_revision,
                                   receiver, revision,
                                   TRUE, svn_depth_infinity,
-                                  revprops, ctx, result_pool,
-                                  scratch_pool);
+                                  revprops, ctx, ra_session,
+                                  result_pool, scratch_pool);
+
+  err = svn_error_compose_create(
+                  err,
+                  svn_ra_reparent(ra_session, session_url, scratch_pool));
 
   if (err)
     {
@@ -12132,6 +12140,7 @@ find_last_merged_location(svn_client__pa
                           const branch_history_t *source_branch,
                           svn_client__pathrev_t *target,
                           svn_client_ctx_t *ctx,
+                          svn_ra_session_t *ra_session,
                           apr_pool_t *result_pool,
                           apr_pool_t *scratch_pool)
 {
@@ -12159,7 +12168,8 @@ find_last_merged_location(svn_client__pa
                                       &source_end_rev, &source_start_rev,
                                       operative_rev_receiver,
                                       &youngest_merged_rev,
-                                      ctx, result_pool, scratch_pool));
+                                      ctx, ra_session,
+                                      result_pool, scratch_pool));
 
   if (!SVN_IS_VALID_REVNUM(youngest_merged_rev))
     {
@@ -12194,7 +12204,8 @@ find_last_merged_location(svn_client__pa
                                           &source_start_rev, &source_end_rev,
                                           operative_rev_receiver,
                                           &oldest_eligible_rev,
-                                          ctx, scratch_pool, scratch_pool));
+                                          ctx, ra_session,
+                                          scratch_pool, scratch_pool));
 
       /* If there are revisions eligible for merging, use the oldest one
          to calculate the base.  Otherwise there are no operative revisions
@@ -12248,7 +12259,9 @@ find_base_on_source(svn_client__pathrev_
                                     s_t->yca,
                                     &s_t->source_branch,
                                     s_t->target_branch.tip,
-                                    ctx, result_pool, scratch_pool));
+                                    ctx,
+                                    s_t->source_ra_session,
+                                    result_pool, scratch_pool));
   return SVN_NO_ERROR;
 }
 
@@ -12281,7 +12294,9 @@ find_base_on_target(svn_client__pathrev_
                                     s_t->yca,
                                     &s_t->target_branch,
                                     s_t->source,
-                                    ctx, result_pool, scratch_pool));
+                                    ctx,
+                                    s_t->target_ra_session,
+                                    result_pool, scratch_pool));
 
   return SVN_NO_ERROR;
 }