[commit] r2285 - in trunk/GME: Include/apr Include/subversion Lib Lib/subv_debug Lib/subv_release XmlBackEnd

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Fri Aug 2 15:47:18 CDT 2013


Author: volgy
Date: Fri Aug  2 15:47:18 2013
New Revision: 2285

Log:
Update to subversion (1.8.1) library and dependencies:

apr-1.4.8
apr-iconv-1.2.1
apr-util-1.5.2
openssl-1.0.1e
serf-1.2.1
sqlite-amalgamation-201307182028
zlib-1.2.8

Added:
   trunk/GME/Lib/libeay32.pdb   (contents, props changed)
   trunk/GME/Lib/ssleay32.pdb   (contents, props changed)
   trunk/GME/Lib/subv_debug/serf-1.lib   (contents, props changed)
   trunk/GME/Lib/subv_debug/serf-1.pdb   (contents, props changed)
   trunk/GME/Lib/subv_debug/zlib.pdb   (contents, props changed)
   trunk/GME/Lib/subv_release/libapr-1.pdb
      - copied, changed from r2202, trunk/GME/Lib/subv_release/libapr-1.pdb
   trunk/GME/Lib/subv_release/serf-1.lib   (contents, props changed)
   trunk/GME/Lib/subv_release/serf-1.pdb   (contents, props changed)
   trunk/GME/Lib/subv_release/zlib.pdb   (contents, props changed)
Deleted:
   trunk/GME/Lib/subv_debug/serf.lib
   trunk/GME/Lib/subv_debug/serf.pdb
   trunk/GME/Lib/subv_release/libapr.pdb
   trunk/GME/Lib/subv_release/serf.lib
   trunk/GME/Lib/subv_release/serf.pdb
Modified:
   trunk/GME/Include/apr/apr.h
   trunk/GME/Include/apr/apr.hw
   trunk/GME/Include/apr/apr_allocator.h
   trunk/GME/Include/apr/apr_general.h
   trunk/GME/Include/apr/apr_network_io.h
   trunk/GME/Include/apr/apr_pools.h
   trunk/GME/Include/apr/apr_strings.h
   trunk/GME/Include/apr/apr_thread_proc.h
   trunk/GME/Include/apr/apr_version.h
   trunk/GME/Include/subversion/mod_authz_svn.h
   trunk/GME/Include/subversion/svn_auth.h
   trunk/GME/Include/subversion/svn_checksum.h
   trunk/GME/Include/subversion/svn_client.h
   trunk/GME/Include/subversion/svn_cmdline.h
   trunk/GME/Include/subversion/svn_config.h
   trunk/GME/Include/subversion/svn_dav.h
   trunk/GME/Include/subversion/svn_delta.h
   trunk/GME/Include/subversion/svn_diff.h
   trunk/GME/Include/subversion/svn_dirent_uri.h
   trunk/GME/Include/subversion/svn_error.h
   trunk/GME/Include/subversion/svn_error_codes.h
   trunk/GME/Include/subversion/svn_fs.h
   trunk/GME/Include/subversion/svn_hash.h
   trunk/GME/Include/subversion/svn_io.h
   trunk/GME/Include/subversion/svn_mergeinfo.h
   trunk/GME/Include/subversion/svn_opt.h
   trunk/GME/Include/subversion/svn_path.h
   trunk/GME/Include/subversion/svn_pools.h
   trunk/GME/Include/subversion/svn_props.h
   trunk/GME/Include/subversion/svn_ra.h
   trunk/GME/Include/subversion/svn_ra_svn.h
   trunk/GME/Include/subversion/svn_repos.h
   trunk/GME/Include/subversion/svn_sorts.h
   trunk/GME/Include/subversion/svn_string.h
   trunk/GME/Include/subversion/svn_subst.h
   trunk/GME/Include/subversion/svn_types.h
   trunk/GME/Include/subversion/svn_utf.h
   trunk/GME/Include/subversion/svn_version.h
   trunk/GME/Include/subversion/svn_wc.h
   trunk/GME/Include/subversion/svn_xml.h
   trunk/GME/Lib/libeay32.dll
   trunk/GME/Lib/libeay32.lib
   trunk/GME/Lib/ssleay32.dll
   trunk/GME/Lib/ssleay32.lib
   trunk/GME/Lib/subv_debug/libapr-1.dll
   trunk/GME/Lib/subv_debug/libapr-1.lib
   trunk/GME/Lib/subv_debug/libapr-1.pdb
   trunk/GME/Lib/subv_debug/libapriconv-1.dll
   trunk/GME/Lib/subv_debug/libapriconv-1.lib
   trunk/GME/Lib/subv_debug/libapriconv-1.pdb
   trunk/GME/Lib/subv_debug/libaprutil-1.dll
   trunk/GME/Lib/subv_debug/libaprutil-1.lib
   trunk/GME/Lib/subv_debug/libaprutil-1.pdb
   trunk/GME/Lib/subv_debug/libsvn_fs_fs-1.lib
   trunk/GME/Lib/subv_debug/libsvn_fs_fs-1.pdb
   trunk/GME/Lib/subv_debug/libsvn_fs_util-1.lib
   trunk/GME/Lib/subv_debug/libsvn_fs_util-1.pdb
   trunk/GME/Lib/subv_debug/libsvn_ra_local-1.lib
   trunk/GME/Lib/subv_debug/libsvn_ra_local-1.pdb
   trunk/GME/Lib/subv_debug/libsvn_ra_serf-1.lib
   trunk/GME/Lib/subv_debug/libsvn_ra_serf-1.pdb
   trunk/GME/Lib/subv_debug/libsvn_ra_svn-1.lib
   trunk/GME/Lib/subv_debug/libsvn_ra_svn-1.pdb
   trunk/GME/Lib/subv_debug/svn_client-1.lib
   trunk/GME/Lib/subv_debug/svn_client-1.pdb
   trunk/GME/Lib/subv_debug/svn_delta-1.lib
   trunk/GME/Lib/subv_debug/svn_delta-1.pdb
   trunk/GME/Lib/subv_debug/svn_diff-1.lib
   trunk/GME/Lib/subv_debug/svn_diff-1.pdb
   trunk/GME/Lib/subv_debug/svn_fs-1.lib
   trunk/GME/Lib/subv_debug/svn_fs-1.pdb
   trunk/GME/Lib/subv_debug/svn_ra-1.lib
   trunk/GME/Lib/subv_debug/svn_ra-1.pdb
   trunk/GME/Lib/subv_debug/svn_repos-1.lib
   trunk/GME/Lib/subv_debug/svn_repos-1.pdb
   trunk/GME/Lib/subv_debug/svn_subr-1.lib
   trunk/GME/Lib/subv_debug/svn_subr-1.pdb
   trunk/GME/Lib/subv_debug/svn_wc-1.lib
   trunk/GME/Lib/subv_debug/svn_wc-1.pdb
   trunk/GME/Lib/subv_debug/xml.lib
   trunk/GME/Lib/subv_debug/xml.pdb
   trunk/GME/Lib/subv_debug/zlibstatD.lib
   trunk/GME/Lib/subv_release/libapr-1.dll
   trunk/GME/Lib/subv_release/libapr-1.lib
   trunk/GME/Lib/subv_release/libapriconv-1.dll
   trunk/GME/Lib/subv_release/libapriconv-1.lib
   trunk/GME/Lib/subv_release/libapriconv-1.pdb
   trunk/GME/Lib/subv_release/libaprutil-1.dll
   trunk/GME/Lib/subv_release/libaprutil-1.lib
   trunk/GME/Lib/subv_release/libaprutil-1.pdb
   trunk/GME/Lib/subv_release/libsvn_fs_fs-1.lib
   trunk/GME/Lib/subv_release/libsvn_fs_fs-1.pdb
   trunk/GME/Lib/subv_release/libsvn_fs_util-1.lib
   trunk/GME/Lib/subv_release/libsvn_fs_util-1.pdb
   trunk/GME/Lib/subv_release/libsvn_ra_local-1.lib
   trunk/GME/Lib/subv_release/libsvn_ra_local-1.pdb
   trunk/GME/Lib/subv_release/libsvn_ra_serf-1.lib
   trunk/GME/Lib/subv_release/libsvn_ra_serf-1.pdb
   trunk/GME/Lib/subv_release/libsvn_ra_svn-1.lib
   trunk/GME/Lib/subv_release/libsvn_ra_svn-1.pdb
   trunk/GME/Lib/subv_release/svn_client-1.lib
   trunk/GME/Lib/subv_release/svn_client-1.pdb
   trunk/GME/Lib/subv_release/svn_delta-1.lib
   trunk/GME/Lib/subv_release/svn_delta-1.pdb
   trunk/GME/Lib/subv_release/svn_diff-1.lib
   trunk/GME/Lib/subv_release/svn_diff-1.pdb
   trunk/GME/Lib/subv_release/svn_fs-1.lib
   trunk/GME/Lib/subv_release/svn_fs-1.pdb
   trunk/GME/Lib/subv_release/svn_ra-1.lib
   trunk/GME/Lib/subv_release/svn_ra-1.pdb
   trunk/GME/Lib/subv_release/svn_repos-1.lib
   trunk/GME/Lib/subv_release/svn_repos-1.pdb
   trunk/GME/Lib/subv_release/svn_subr-1.lib
   trunk/GME/Lib/subv_release/svn_subr-1.pdb
   trunk/GME/Lib/subv_release/svn_wc-1.lib
   trunk/GME/Lib/subv_release/svn_wc-1.pdb
   trunk/GME/Lib/subv_release/xml.lib
   trunk/GME/Lib/subv_release/xml.pdb
   trunk/GME/Lib/subv_release/zlibstat.lib
   trunk/GME/XmlBackEnd/SvnConfig.h

Modified: trunk/GME/Include/apr/apr.h
==============================================================================
--- trunk/GME/Include/apr/apr.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -36,6 +36,12 @@
  * for Win32 or Netware by those build environments, respectively.
  */
 
+/* Make sure we have our platform identifier macro defined we ask for later.
+ */
+#if defined(_WIN32) && !defined(WIN32)
+#define WIN32 1
+#endif
+
 #if defined(WIN32) || defined(DOXYGEN)
 
 /* Ignore most warnings (back down to /W3) for poorly constructed headers
@@ -377,7 +383,7 @@
 typedef  int         apr_socklen_t;
 typedef  apr_uint64_t      apr_ino_t;
 
-#ifdef WIN64
+#ifdef _WIN64
 #define APR_SIZEOF_VOIDP   8
 #else
 #define APR_SIZEOF_VOIDP   4
@@ -552,7 +558,7 @@
 #define APR_DECLARE_DATA             __declspec(dllimport)
 #endif
 
-#ifdef WIN64
+#ifdef _WIN64
 #define APR_SSIZE_T_FMT          "I64d"
 #define APR_SIZE_T_FMT           "I64u"
 #else

Modified: trunk/GME/Include/apr/apr.hw
==============================================================================
--- trunk/GME/Include/apr/apr.hw	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr.hw	Fri Aug  2 15:47:18 2013	(r2285)
@@ -36,6 +36,12 @@
  * for Win32 or Netware by those build environments, respectively.
  */
 
+/* Make sure we have our platform identifier macro defined we ask for later.
+ */
+#if defined(_WIN32) && !defined(WIN32)
+#define WIN32 1
+#endif
+
 #if defined(WIN32) || defined(DOXYGEN)
 
 /* Ignore most warnings (back down to /W3) for poorly constructed headers
@@ -377,7 +383,7 @@
 typedef  int         apr_socklen_t;
 typedef  apr_uint64_t      apr_ino_t;
 
-#ifdef WIN64
+#ifdef _WIN64
 #define APR_SIZEOF_VOIDP   8
 #else
 #define APR_SIZEOF_VOIDP   4
@@ -552,7 +558,7 @@
 #define APR_DECLARE_DATA             __declspec(dllimport)
 #endif
 
-#ifdef WIN64
+#ifdef _WIN64
 #define APR_SSIZE_T_FMT          "I64d"
 #define APR_SIZE_T_FMT           "I64u"
 #else

Modified: trunk/GME/Include/apr/apr_allocator.h
==============================================================================
--- trunk/GME/Include/apr/apr_allocator.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_allocator.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -71,7 +71,8 @@
  * @param allocator The allocator we have just created.
  *
  */
-APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator);
+APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
+                          __attribute__((nonnull(1)));
 
 /**
  * Destroy an allocator
@@ -79,7 +80,8 @@
  * @remark Any memnodes not given back to the allocator prior to destroying
  *         will _not_ be free()d.
  */
-APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator);
+APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
+                  __attribute__((nonnull(1)));
 
 /**
  * Allocate a block of mem from the allocator
@@ -88,7 +90,8 @@
  *        memnode structure)
  */
 APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
-                                                 apr_size_t size);
+                                                 apr_size_t size)
+                             __attribute__((nonnull(1)));
 
 /**
  * Free a list of blocks of mem, giving them back to the allocator.
@@ -98,7 +101,8 @@
  * @param memnode The memory node to return
  */
 APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
-                                     apr_memnode_t *memnode);
+                                     apr_memnode_t *memnode)
+                  __attribute__((nonnull(1,2)));
 
 #include "apr_pools.h"
 
@@ -114,13 +118,15 @@
  * the allocator will never be destroyed.
  */
 APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
-                                          apr_pool_t *pool);
+                                          apr_pool_t *pool)
+                  __attribute__((nonnull(1)));
 
 /**
  * Get the current owner of the allocator
  * @param allocator The allocator to get the owner from
  */
-APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator);
+APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
 
 /**
  * Set the current threshold at which the allocator should start
@@ -129,7 +135,8 @@
  * @param size The threshold.  0 == unlimited.
  */
 APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
-                                             apr_size_t size);
+                                             apr_size_t size)
+                  __attribute__((nonnull(1)));
 
 #include "apr_thread_mutex.h"
 
@@ -140,14 +147,16 @@
  * @param mutex The mutex
  */
 APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
-                                          apr_thread_mutex_t *mutex);
+                                          apr_thread_mutex_t *mutex)
+                  __attribute__((nonnull(1)));
 
 /**
  * Get the mutex currently set for the allocator
  * @param allocator The allocator
  */
 APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
-                                      apr_allocator_t *allocator);
+                                          apr_allocator_t *allocator)
+                                  __attribute__((nonnull(1)));
 
 #endif /* APR_HAS_THREADS */
 

Modified: trunk/GME/Include/apr/apr_general.h
==============================================================================
--- trunk/GME/Include/apr/apr_general.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_general.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -76,7 +76,7 @@
  * @return offset
  */
 
-#if defined(CRAY) || (defined(__arm) && !defined(LINUX))
+#if defined(CRAY) || (defined(__arm) && !(defined(LINUX) || defined(__FreeBSD__)))
 #ifdef __STDC__
 #define APR_OFFSET(p_type,field) _Offsetof(p_type,field)
 #else

Modified: trunk/GME/Include/apr/apr_network_io.h
==============================================================================
--- trunk/GME/Include/apr/apr_network_io.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_network_io.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -756,6 +756,8 @@
  * @param name The accept filter
  * @param args Any extra args to the accept filter.  Passing NULL here removes
  *             the accept filter. 
+ * @bug name and args should have been declared as const char *, as they are in
+ * APR 2.0
  */
 apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name,
                                       char *args);

Modified: trunk/GME/Include/apr/apr_pools.h
==============================================================================
--- trunk/GME/Include/apr/apr_pools.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_pools.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -196,7 +196,8 @@
 APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
                                              apr_pool_t *parent,
                                              apr_abortfunc_t abort_fn,
-                                             apr_allocator_t *allocator);
+                                             apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
 
 /**
  * Create a new pool.
@@ -220,7 +221,8 @@
  */
 APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
                                                    apr_abortfunc_t abort_fn,
-                                                   apr_allocator_t *allocator);
+                                                   apr_allocator_t *allocator)
+                          __attribute__((nonnull(1)));
 
 /**
  * Debug version of apr_pool_create_ex.
@@ -242,7 +244,8 @@
                                                    apr_pool_t *parent,
                                                    apr_abortfunc_t abort_fn,
                                                    apr_allocator_t *allocator,
-                                                   const char *file_line);
+                                                   const char *file_line)
+                          __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_pool_create_ex(newpool, parent, abort_fn, allocator)  \
@@ -277,7 +280,8 @@
 APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
                                                    apr_abortfunc_t abort_fn,
                                                    apr_allocator_t *allocator,
-                                                   const char *file_line);
+                                                   const char *file_line)
+                          __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_pool_create_core_ex(newpool, abort_fn, allocator)  \
@@ -343,7 +347,8 @@
  * Find the pool's allocator
  * @param pool The pool to get the allocator from.
  */
-APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool);
+APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
+                               __attribute__((nonnull(1)));
 
 /**
  * Clear all memory in the pool and run all the cleanups. This also destroys all
@@ -353,7 +358,7 @@
  *         to re-use this memory for the next allocation.
  * @see apr_pool_destroy()
  */
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *p);
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *p) __attribute__((nonnull(1)));
 
 /**
  * Debug version of apr_pool_clear.
@@ -369,7 +374,8 @@
  *         and don't call apr_pool_destroy_clear directly.
  */
 APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
-                                       const char *file_line);
+                                       const char *file_line)
+                  __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_pool_clear(p) \
@@ -382,7 +388,7 @@
  * @param p The pool to destroy
  * @remark This will actually free the memory
  */
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p);
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p) __attribute__((nonnull(1)));
 
 /**
  * Debug version of apr_pool_destroy.
@@ -398,7 +404,8 @@
  *         and don't call apr_pool_destroy_debug directly.
  */
 APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
-                                         const char *file_line);
+                                         const char *file_line)
+                  __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_pool_destroy(p) \
@@ -416,7 +423,11 @@
  * @param size The amount of memory to allocate
  * @return The allocated memory
  */
-APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size);
+APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+                    __attribute__((alloc_size(2)))
+#endif
+                    __attribute__((nonnull(1)));
 
 /**
  * Debug version of apr_palloc
@@ -427,7 +438,11 @@
  * @return See: apr_palloc
  */
 APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size,
-                                     const char *file_line);
+                                     const char *file_line)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+                    __attribute__((alloc_size(2)))
+#endif
+                    __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_palloc(p, size) \
@@ -455,7 +470,8 @@
  * @return See: apr_pcalloc
  */
 APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size,
-                                      const char *file_line);
+                                      const char *file_line)
+                    __attribute__((nonnull(1)));
 
 #if APR_POOL_DEBUG
 #define apr_pcalloc(p, size) \
@@ -476,21 +492,24 @@
  *      deal with the error accordingly.
  */
 APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc,
-                                     apr_pool_t *pool);
+                                     apr_pool_t *pool)
+                  __attribute__((nonnull(2)));
 
 /**
  * Get the abort function associated with the specified pool.
  * @param pool The pool for retrieving the abort function.
  * @return The abort function for the given pool.
  */
-APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool);
+APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
+                             __attribute__((nonnull(1)));
 
 /**
  * Get the parent pool of the specified pool.
  * @param pool The pool for retrieving the parent pool.
  * @return The parent of the given pool.
  */
-APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool);
+APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
+                          __attribute__((nonnull(1)));
 
 /**
  * Determine if pool a is an ancestor of pool b.
@@ -510,7 +529,8 @@
  * @param pool The pool to tag
  * @param tag  The tag
  */
-APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag);
+APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
+                  __attribute__((nonnull(1)));
 
 
 /*
@@ -536,11 +556,11 @@
  *      key names is a typical way to help ensure this uniqueness.
  *
  */
-APR_DECLARE(apr_status_t) apr_pool_userdata_set(
-    const void *data,
-    const char *key,
-    apr_status_t (*cleanup)(void *),
-    apr_pool_t *pool);
+APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data,
+                                                const char *key,
+                                                apr_status_t (*cleanup)(void *),
+                                                apr_pool_t *pool)
+                          __attribute__((nonnull(2,4)));
 
 /**
  * Set the data associated with the current pool
@@ -562,10 +582,10 @@
  *
  */
 APR_DECLARE(apr_status_t) apr_pool_userdata_setn(
-    const void *data,
-    const char *key,
-    apr_status_t (*cleanup)(void *),
-    apr_pool_t *pool);
+                                const void *data, const char *key,
+                                apr_status_t (*cleanup)(void *),
+                                apr_pool_t *pool)
+                          __attribute__((nonnull(2,4)));
 
 /**
  * Return the data associated with the current pool.
@@ -574,7 +594,8 @@
  * @param pool The current pool.
  */
 APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
-                                                apr_pool_t *pool);
+                                                apr_pool_t *pool)
+                          __attribute__((nonnull(1,2,3)));
 
 
 /**
@@ -601,10 +622,10 @@
  *                      to exec - this function is called in the child, obviously!
  */
 APR_DECLARE(void) apr_pool_cleanup_register(
-    apr_pool_t *p,
-    const void *data,
-    apr_status_t (*plain_cleanup)(void *),
-    apr_status_t (*child_cleanup)(void *));
+                            apr_pool_t *p, const void *data,
+                            apr_status_t (*plain_cleanup)(void *),
+                            apr_status_t (*child_cleanup)(void *))
+                  __attribute__((nonnull(3,4)));
 
 /**
  * Register a function to be called when a pool is cleared or destroyed.
@@ -619,9 +640,9 @@
  *                      or destroyed
  */
 APR_DECLARE(void) apr_pool_pre_cleanup_register(
-    apr_pool_t *p,
-    const void *data,
-    apr_status_t (*plain_cleanup)(void *));
+                            apr_pool_t *p, const void *data,
+                            apr_status_t (*plain_cleanup)(void *))
+                  __attribute__((nonnull(3)));
 
 /**
  * Remove a previously registered cleanup function.
@@ -636,7 +657,8 @@
  *          function
  */
 APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
-                                        apr_status_t (*cleanup)(void *));
+                                        apr_status_t (*cleanup)(void *))
+                  __attribute__((nonnull(3)));
 
 /**
  * Replace the child cleanup function of a previously registered cleanup.
@@ -651,10 +673,10 @@
  * @param child_cleanup The function to register as the child cleanup
  */
 APR_DECLARE(void) apr_pool_child_cleanup_set(
-    apr_pool_t *p,
-    const void *data,
-    apr_status_t (*plain_cleanup)(void *),
-    apr_status_t (*child_cleanup)(void *));
+                        apr_pool_t *p, const void *data,
+                        apr_status_t (*plain_cleanup)(void *),
+                        apr_status_t (*child_cleanup)(void *))
+                  __attribute__((nonnull(3,4)));
 
 /**
  * Run the specified cleanup function immediately and unregister it.
@@ -667,10 +689,9 @@
  * @param data The data to remove from cleanup
  * @param cleanup The function to remove from cleanup
  */
-APR_DECLARE(apr_status_t) apr_pool_cleanup_run(
-    apr_pool_t *p,
-    void *data,
-    apr_status_t (*cleanup)(void *));
+APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
+                                               apr_status_t (*cleanup)(void *))
+                          __attribute__((nonnull(3)));
 
 /**
  * An empty cleanup function.
@@ -739,7 +760,8 @@
  * @param p The parent pool
  * @param sub The subpool
  */
-APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub);
+APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
+                  __attribute__((nonnull(2)));
 
 /**
  * Find a pool from something allocated in it.
@@ -754,7 +776,8 @@
  * @param recurse Recurse/include the subpools' sizes
  * @return The number of bytes
  */
-APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse);
+APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse)
+                        __attribute__((nonnull(1)));
 
 /**
  * Lock a pool

Modified: trunk/GME/Include/apr/apr_strings.h
==============================================================================
--- trunk/GME/Include/apr/apr_strings.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_strings.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -106,7 +106,11 @@
  *         has 'n' or more characters.  If the string might contain
  *         fewer characters, use apr_pstrndup.
  */
-APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n);
+APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+    __attribute__((alloc_size(3)))
+#endif
+    ;
 
 /**
  * Duplicate at most n characters of a string into memory allocated 
@@ -128,7 +132,11 @@
  * @param n The number of bytes to duplicate
  * @return The new block of memory
  */
-APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n);
+APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+    __attribute__((alloc_size(3)))
+#endif
+    ;
 
 /**
  * Concatenate multiple strings, allocating memory out a pool

Modified: trunk/GME/Include/apr/apr_thread_proc.h
==============================================================================
--- trunk/GME/Include/apr/apr_thread_proc.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_thread_proc.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -315,7 +315,7 @@
 APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd);
 
 /**
- * Return the pool associated with the current thread.
+ * Return user data associated with the current thread.
  * @param data The user data associated with the thread.
  * @param key The key to associate with the data
  * @param thread The currently open thread.
@@ -324,7 +324,7 @@
                                              apr_thread_t *thread);
 
 /**
- * Return the pool associated with the current thread.
+ * Set user data associated with the current thread.
  * @param data The user data to associate with the thread.
  * @param key The key to use for associating the data with the thread
  * @param cleanup The cleanup routine to use when the thread is destroyed.

Modified: trunk/GME/Include/apr/apr_version.h
==============================================================================
--- trunk/GME/Include/apr/apr_version.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/apr/apr_version.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -38,6 +38,9 @@
  */
 
 
+#define APR_COPYRIGHT "Copyright (c) 2013 The Apache Software " \
+                      "Foundation or its licensors, as applicable."
+
 /* The numeric compile-time version constants. These constants are the
  * authoritative version numbers for APR. 
  */
@@ -59,7 +62,7 @@
  * The Patch Level never includes API changes, simply bug fixes.
  * Reset to 0 when upgrading APR_MINOR_VERSION
  */
-#define APR_PATCH_VERSION       6
+#define APR_PATCH_VERSION       8
 
 /** 
  * The symbol APR_IS_DEV_VERSION is only defined for internal,
@@ -87,7 +90,9 @@
 
 #if defined(APR_IS_DEV_VERSION) || defined(DOXYGEN)
 /** Internal: string form of the "is dev" flag */
+#ifndef APR_IS_DEV_STRING
 #define APR_IS_DEV_STRING "-dev"
+#endif
 #else
 #define APR_IS_DEV_STRING ""
 #endif

Modified: trunk/GME/Include/subversion/mod_authz_svn.h
==============================================================================
--- trunk/GME/Include/subversion/mod_authz_svn.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/mod_authz_svn.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -36,9 +36,20 @@
 /*
  * mod_dav_svn to mod_authz_svn bypass mechanism
  */
+/** Provider group for subrequest bypass */
 #define AUTHZ_SVN__SUBREQ_BYPASS_PROV_GRP "dav2authz_subreq_bypass"
+/** Provider name for subrequest bypass */
 #define AUTHZ_SVN__SUBREQ_BYPASS_PROV_NAME "mod_authz_svn_subreq_bypass"
+/** Provider version for subrequest bypass */
 #define AUTHZ_SVN__SUBREQ_BYPASS_PROV_VER "00.00a"
+/** Provider to allow mod_dav_svn to bypass the generation of an apache
+ * request when checking GET access from "mod_dav_svn/auth.c".
+ *
+ * Uses @a r @a repos_path and @a repos_name to determine if the user
+ * making the request is authorized.
+ *
+ * If the access is allowed returns @c OK or @c HTTP_FORBIDDEN if it is not.
+ */
 typedef int (*authz_svn__subreq_bypass_func_t)(request_rec *r,
                                               const char *repos_path,
                                               const char *repos_name);

Modified: trunk/GME/Include/subversion/svn_auth.h
==============================================================================
--- trunk/GME/Include/subversion/svn_auth.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_auth.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -416,8 +416,8 @@
 #define SVN_AUTH_SSL_CNMISMATCH  0x00000004
 /** @brief Certificate authority is unknown (i.e. not trusted) */
 #define SVN_AUTH_SSL_UNKNOWNCA   0x00000008
-/** @brief Other failure. This can happen if neon has introduced a new
- * failure bit that we do not handle yet. */
+/** @brief Other failure. This can happen if an unknown failure occurs
+ * that we do not handle yet. */
 #define SVN_AUTH_SSL_OTHER       0x40000000
 /** @} */
 
@@ -569,11 +569,11 @@
 
 /**
  * @name Default credentials defines
- * Any 'default' credentials that came in through the application itself,
- * (e.g. --username and --password options). Property values are
- * const char *.
+ * Property values are const char *.
  * @{ */
+/** Default username provided by the application itself (e.g. --username) */
 #define SVN_AUTH_PARAM_DEFAULT_USERNAME  SVN_AUTH_PARAM_PREFIX "username"
+/** Default password provided by the application itself (e.g. --password) */
 #define SVN_AUTH_PARAM_DEFAULT_PASSWORD  SVN_AUTH_PARAM_PREFIX "password"
 /** @} */
 
@@ -590,19 +590,25 @@
 
 /** @brief Indicates whether providers may save passwords to disk in
  * plaintext. Property value can be either SVN_CONFIG_TRUE,
- * SVN_CONFIG_FALSE, or SVN_CONFIG_ASK. */
+ * SVN_CONFIG_FALSE, or SVN_CONFIG_ASK.
+ * @since New in 1.6.
+ */
 #define SVN_AUTH_PARAM_STORE_PLAINTEXT_PASSWORDS  SVN_AUTH_PARAM_PREFIX \
                                                   "store-plaintext-passwords"
 
 /** @brief The application doesn't want any providers to save passphrase
  * to disk. Property value is irrelevant; only property's existence
- * matters. */
+ * matters.
+ * @since New in 1.6.
+ */
 #define SVN_AUTH_PARAM_DONT_STORE_SSL_CLIENT_CERT_PP \
   SVN_AUTH_PARAM_PREFIX "dont-store-ssl-client-cert-pp"
 
 /** @brief Indicates whether providers may save passphrase to disk in
  * plaintext. Property value can be either SVN_CONFIG_TRUE,
- * SVN_CONFIG_FALSE, or SVN_CONFIG_ASK. */
+ * SVN_CONFIG_FALSE, or SVN_CONFIG_ASK.
+ * @since New in 1.6.
+ */
 #define SVN_AUTH_PARAM_STORE_SSL_CLIENT_CERT_PP_PLAINTEXT \
   SVN_AUTH_PARAM_PREFIX "store-ssl-client-cert-pp-plaintext"
 
@@ -622,9 +628,15 @@
 #define SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO SVN_AUTH_PARAM_PREFIX \
   "ssl:cert-info"
 
-/** Some providers need access to the @c svn_config_t configuration. */
-#define SVN_AUTH_PARAM_CONFIG_CATEGORY_CONFIG SVN_AUTH_PARAM_PREFIX "config-category-config"
-#define SVN_AUTH_PARAM_CONFIG_CATEGORY_SERVERS SVN_AUTH_PARAM_PREFIX "config-category-servers"
+/** This provides a pointer to a @c svn_config_t containting the config
+ * category. */
+#define SVN_AUTH_PARAM_CONFIG_CATEGORY_CONFIG SVN_AUTH_PARAM_PREFIX \
+  "config-category-config"
+
+/** This provides a pointer to a @c svn_config_t containting the servers
+ * category. */
+#define SVN_AUTH_PARAM_CONFIG_CATEGORY_SERVERS SVN_AUTH_PARAM_PREFIX \
+  "config-category-servers"
 
 /** @deprecated Provided for backward compatibility with the 1.5 API. */
 #define SVN_AUTH_PARAM_CONFIG SVN_AUTH_PARAM_CONFIG_CATEGORY_SERVERS
@@ -683,6 +695,28 @@
 svn_auth_save_credentials(svn_auth_iterstate_t *state,
                           apr_pool_t *pool);
 
+/** Forget a set (or all) memory-cached credentials.
+ *
+ * Remove references (if any) in @a auth_baton to credentials cached
+ * therein.  If @a cred_kind and @a realmstring are non-NULL, forget
+ * only the credentials associated with those credential types and
+ * realm.  Otherwise @a cred_kind and @a realmstring must both be
+ * NULL, and this function will forget all credentials cached within
+ * @a auth_baton.
+ *
+ * @note This function does not affect persisted authentication
+ * credential storage at all.  It is merely a way to cause Subversion
+ * to forget about credentials already fetched from a provider,
+ * forcing them to be fetched again later should they be required.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_auth_forget_credentials(svn_auth_baton_t *auth_baton,
+                            const char *cred_kind,
+                            const char *realmstring,
+                            apr_pool_t *pool);
+
 /** @} */
 
 /** Set @a *provider to an authentication provider of type
@@ -785,8 +819,8 @@
  * svn_auth_provider_object_t, or return @c NULL if the provider is not
  * available for the requested platform or the requested provider is unknown.
  *
- * Valid @a provider_name values are: "gnome_keyring", "keychain", "kwallet"
- * and "windows".
+ * Valid @a provider_name values are: "gnome_keyring", "keychain", "kwallet",
+ * "gpg_agent", and "windows".
  *
  * Valid @a provider_type values are: "simple", "ssl_client_cert_pw" and
  * "ssl_server_trust".
@@ -820,7 +854,8 @@
  *   1. gnome-keyring
  *   2. kwallet
  *   3. keychain
- *   4. windows-cryptoapi
+ *   4. gpg-agent
+ *   5. windows-cryptoapi
  *
  * @since New in 1.6.
  */
@@ -1071,6 +1106,28 @@
   apr_pool_t *pool);
 #endif /* (!DARWIN && !WIN32) || DOXYGEN */
 
+#if !defined(WIN32) || defined(DOXYGEN)
+/**
+ * Set @a *provider to an authentication provider of type @c
+ * svn_auth_cred_simple_t that gets/sets information from the user's
+ * ~/.subversion configuration directory.
+ *
+ * This is like svn_client_get_simple_provider(), except that the
+ * password is obtained from gpg_agent, which will keep it in
+ * a memory cache.
+ *
+ * Allocate @a *provider in @a pool.
+ *
+ * @since New in 1.8
+ * @note This function actually works only on systems with
+ * GNU Privacy Guard installed.
+ */
+void
+svn_auth_get_gpg_agent_simple_provider
+    (svn_auth_provider_object_t **provider,
+     apr_pool_t *pool);
+#endif /* !defined(WIN32) || defined(DOXYGEN) */
+
 
 /** Set @a *provider to an authentication provider of type @c
  * svn_auth_cred_username_t that gets/sets information from a user's

Modified: trunk/GME/Include/subversion/svn_checksum.h
==============================================================================
--- trunk/GME/Include/subversion/svn_checksum.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_checksum.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -100,7 +100,8 @@
 
 
 /**
- * Return a deep copy of @a checksum, allocated in @a pool.
+ * Return a deep copy of @a checksum, allocated in @a pool.  If @a
+ * checksum is NULL then NULL is returned.
  *
  * @since New in 1.6.
  */
@@ -239,6 +240,15 @@
 apr_size_t
 svn_checksum_size(const svn_checksum_t *checksum);
 
+/**
+ * Return @c TRUE iff @a checksum matches the checksum for the empty
+ * string.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_checksum_is_empty_checksum(svn_checksum_t *checksum);
+
 
 /**
  * Return an error of type #SVN_ERR_CHECKSUM_MISMATCH for @a actual and
@@ -261,18 +271,6 @@
                           ...)
   __attribute__ ((format(printf, 4, 5)));
 
-
-/**
- * Internal function for creating a checksum from a binary digest.
- *
- * @since New in 1.6
- */
-svn_checksum_t *
-svn_checksum__from_digest(const unsigned char *digest,
-                          svn_checksum_kind_t kind,
-                          apr_pool_t *result_pool);
-
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_client.h
==============================================================================
--- trunk/GME/Include/subversion/svn_client.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_client.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -355,10 +355,38 @@
 } svn_client_proplist_item_t;
 
 /**
- * The callback invoked by svn_client_proplist3().  Each invocation
- * provides the regular properties of @a path which is either a WC path or
- * a URL.  @a prop_hash maps property names (char *) to property
-   values (svn_string_t *).  Use @a pool for all temporary allocation.
+ * The callback invoked by svn_client_proplist4().  Each invocation
+ * provides the regular and/or inherited properties of @a path, which is
+ * either a working copy path or a URL.  If @a prop_hash is not @c NULL, then
+ * it maps explicit <tt>const char *</tt> property names to
+ * <tt>svn_string_t *</tt> explicit property values.  If @a inherited_props
+ * is not @c NULL, then it is a depth-first ordered array of
+ * #svn_prop_inherited_item_t * structures representing the
+ * properties inherited by @a path.  Use @a scratch_pool for all temporary
+ * allocations.
+ *
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a inherited_props are
+ * URLs if @a path is a URL or if @a path is a working copy path but the
+ * property represented by the structure is above the working copy root (i.e.
+ * the inherited property is from the cache).  In all other cases the
+ * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
+ * paths.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *(*svn_proplist_receiver2_t)(
+  void *baton,
+  const char *path,
+  apr_hash_t *prop_hash,
+  apr_array_header_t *inherited_props,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Similar to #svn_proplist_receiver2_t, but doesn't return inherited
+ * properties.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  *
  * @since New in 1.5.
  */
@@ -413,6 +441,8 @@
 #define SVN_CLIENT_COMMIT_ITEM_IS_COPY     0x10
 /** @since New in 1.2. */
 #define SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN  0x20
+/** @since New in 1.8. */
+#define SVN_CLIENT_COMMIT_ITEM_MOVED_HERE  0x40
 /** @} */
 
 /** The commit candidate structure.
@@ -477,8 +507,19 @@
   /**
    * When processing the commit this contains the relative path for
    * the commit session. #NULL until the commit item is preprocessed.
+   * @since New in 1.7.
    */
   const char *session_relpath;
+
+  /**
+   * When committing a move, this contains the absolute path where
+   * the node was directly moved from. (If an ancestor at the original
+   * location was moved then it points to where the node itself was
+   * moved from; not the original location.)
+   * @since New in 1.8.
+   */
+  const char *moved_from_abspath;
+
 } svn_client_commit_item3_t;
 
 /** The commit candidate structure.
@@ -969,7 +1010,10 @@
 
 /** Initialize a client context.
  * Set @a *ctx to a client context object, allocated in @a pool, that
- * represents a particular instance of an svn client.
+ * represents a particular instance of an svn client. @a cfg_hash is used
+ * to initialise the config member of the returned context object and should
+ * remain valid for the lifetime of the object. @a cfg_hash may be @c NULL,
+ * in which case it is ignored.
  *
  * In order to avoid backwards compatibility problems, clients must
  * use this function to initialize and allocate the
@@ -978,7 +1022,20 @@
  *
  * The current implementation never returns error, but callers should
  * still check for error, for compatibility with future versions.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_create_context2(svn_client_ctx_t **ctx,
+                           apr_hash_t *cfg_hash,
+                           apr_pool_t *pool);
+
+
+/** Similar to svn_client_create_context2 but passes a NULL @a cfg_hash.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_create_context(svn_client_ctx_t **ctx,
                           apr_pool_t *pool);
@@ -1045,7 +1102,7 @@
                                  svn_boolean_t keep_last_origpath_on_truepath_collision,
                                  apr_pool_t *pool);
 
-/*
+/**
  * Similar to svn_client_args_to_target_array2() but with
  * @a keep_last_origpath_on_truepath_collision always set to FALSE.
  *
@@ -1464,16 +1521,15 @@
  * @a path and everything under it fully recursively.
  *
  * @a path's parent must be under revision control already (unless
- * @a add_parents is TRUE), but @a path is not.  If @a recursive is
- * set, then assuming @a path is a directory, all of its contents will
- * be scheduled for addition as well.
+ * @a add_parents is TRUE), but @a path is not.
  *
  * If @a force is not set and @a path is already under version
  * control, return the error #SVN_ERR_ENTRY_EXISTS.  If @a force is
  * set, do not error on already-versioned items.  When used on a
- * directory in conjunction with the @a recursive flag, this has the
- * effect of scheduling for addition unversioned files and directories
- * scattered deep within a versioned tree.
+ * directory in conjunction with a @a depth value greater than
+ * #svn_depth_empty, this has the effect of scheduling for addition
+ * any unversioned files and directories scattered within even a
+ * versioned tree (up to @a depth).
  *
  * If @a ctx->notify_func2 is non-NULL, then for each added item, call
  * @a ctx->notify_func2 with @a ctx->notify_baton2 and the path of the
@@ -1488,18 +1544,43 @@
  * behaviour only when recursing into an already versioned directory with @a
  * force.)
  *
+ * If @a no_autoprops is TRUE, don't set any autoprops on added files. If
+ * @a no_autoprops is FALSE then all added files have autprops set as per
+ * the auto-props list in @a ctx->config and the value of any
+ * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by the nearest
+ * parents of @a path which are already under version control.
+ *
  * If @a add_parents is TRUE, recurse up @a path's directory and look for
  * a versioned directory.  If found, add all intermediate paths between it
  * and @a path.  If not found, return #SVN_ERR_CLIENT_NO_VERSIONED_PARENT.
  *
+ * @a scratch_pool is used for temporary allocations only.
+ *
  * @par Important:
  * This is a *scheduling* operation.  No changes will
  * happen to the repository until a commit occurs.  This scheduling
  * can be removed with svn_client_revert2().
  *
- * @since New in 1.5.
+ * @since New in 1.8.
  */
 svn_error_t *
+svn_client_add5(const char *path,
+                svn_depth_t depth,
+                svn_boolean_t force,
+                svn_boolean_t no_ignore,
+                svn_boolean_t no_autoprops,
+                svn_boolean_t add_parents,
+                svn_client_ctx_t *ctx,
+                apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_add5(), but with @a no_autoprops always set to
+ * FALSE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_add4(const char *path,
                 svn_depth_t depth,
                 svn_boolean_t force,
@@ -1560,6 +1641,9 @@
 
 /** Create a directory, either in a repository or a working copy.
  *
+ * @a paths is an array of (const char *) paths, either all local WC paths
+ * or all URLs.
+ *
  * If @a paths contains URLs, use the authentication baton in @a ctx
  * and @a message to immediately attempt to commit the creation of the
  * directories in @a paths in the repository.
@@ -1655,6 +1739,9 @@
 
 /** Delete items from a repository or working copy.
  *
+ * @a paths is an array of (const char *) paths, either all local WC paths
+ * or all URLs.
+ *
  * If the paths in @a paths are URLs, use the authentication baton in
  * @a ctx and @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to
  * immediately attempt to commit a deletion of the URLs from the
@@ -1761,6 +1848,31 @@
  * @{
  */
 
+/**
+ * The callback invoked by svn_client_import5() before adding a node to the
+ * list of nodes to be imported.
+ *
+ * @a baton is the value passed to @a svn_client_import5 as filter_baton.
+ *
+ * The callback receives the @a local_abspath for each node and the @a dirent
+ * for it when walking the directory tree. Only the kind of node, including
+ * special status is available in @a dirent.
+ *
+ * Implementations can set @a *filtered to TRUE, to make the import
+ * process omit the node and (if the node is a directory) all its
+ * descendants.
+ *
+ * @a scratch_pool can be used for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *(*svn_client_import_filter_func_t)(
+  void *baton,
+  svn_boolean_t *filtered,
+  const char *local_abspath,
+  const svn_io_dirent2_t *dirent,
+  apr_pool_t *scratch_pool);
+
 /** Import file or directory @a path into repository directory @a url at
  * head, authenticating with the authentication baton cached in @a ctx,
  * and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
@@ -1786,7 +1898,7 @@
  * actions: #svn_wc_notify_commit_added,
  * #svn_wc_notify_commit_postfix_txdelta.
  *
- * Use @a pool for any temporary allocation.
+ * Use @a scratch_pool for any temporary allocation.
  *
  * If non-NULL, @a revprop_table is a hash table holding additional,
  * custom revision properties (<tt>const char *</tt> names mapped to
@@ -1813,15 +1925,49 @@
  * if the target is part of a WC the import ignores any existing
  * properties.)
  *
+ * If @a no_autoprops is TRUE, don't set any autoprops on imported files. If
+ * @a no_autoprops is FALSE then all imported files have autprops set as per
+ * the auto-props list in @a ctx->config and the value of any
+ * @c SVN_PROP_INHERITABLE_AUTO_PROPS properties inherited by and explicitly set
+ * on @a url if @a url is already under versioned control, or the nearest parents
+ * of @a path which are already under version control if not.
+ *
  * If @a ignore_unknown_node_types is @c FALSE, ignore files of which the
  * node type is unknown, such as device files and pipes.
  *
+ * If @a filter_callback is non-NULL, call it for each node that isn't ignored
+ * for other reasons with @a filter_baton, to allow third party to ignore
+ * specific nodes during importing.
+ *
  * If @a commit_callback is non-NULL, then for each successful commit, call
  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
  * the commit.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_import5(const char *path,
+                   const char *url,
+                   svn_depth_t depth,
+                   svn_boolean_t no_ignore,
+                   svn_boolean_t no_autoprops,
+                   svn_boolean_t ignore_unknown_node_types,
+                   const apr_hash_t *revprop_table,
+                   svn_client_import_filter_func_t filter_callback,
+                   void *filter_baton,
+                   svn_commit_callback2_t commit_callback,
+                   void *commit_baton,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_import5(), but without support for an optional
+ * @a filter_callback and @a no_autoprops always set to FALSE.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_import4(const char *path,
                    const char *url,
@@ -1947,6 +2093,22 @@
  * #TRUE, changes to descendants are only committed if they are itself
  * included via @a depth and targets.
  *
+ * If @a include_file_externals and/or @a include_dir_externals are #TRUE,
+ * also commit all file and/or dir externals (respectively) that are reached
+ * by recursion, except for those externals which:
+ *     - have a fixed revision, or
+ *     - come from a different repository root URL (dir externals).
+ * These flags affect only recursion; externals that directly appear in @a
+ * targets are always included in the commit.
+ *
+ * ### TODO: currently, file externals hidden inside an unversioned dir are
+ *     skipped deliberately, because we can't commit those yet.
+ *     See STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW.
+ *
+ * ### TODO: With @c depth_immediates, this function acts as if
+ *     @a include_dir_externals was passed #FALSE, but caller expects
+ *     immediate child dir externals to be included @c depth_empty.
+ *
  * When @a commit_as_operations is #TRUE it is possible to delete a node and
  * all its descendants by selecting just the root of the deletion. If it is
  * set to #FALSE this will raise an error.
@@ -1960,8 +2122,31 @@
  *
  * Use @a pool for any temporary allocations.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_commit6(const apr_array_header_t *targets,
+                   svn_depth_t depth,
+                   svn_boolean_t keep_locks,
+                   svn_boolean_t keep_changelists,
+                   svn_boolean_t commit_as_operations,
+                   svn_boolean_t include_file_externals,
+                   svn_boolean_t include_dir_externals,
+                   const apr_array_header_t *changelists,
+                   const apr_hash_t *revprop_table,
+                   svn_commit_callback2_t commit_callback,
+                   void *commit_baton,
+                   svn_client_ctx_t *ctx,
+                   apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_commit6(), but passes @a include_file_externals as
+ * FALSE and @a include_dir_externals as FALSE.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_commit5(const apr_array_header_t *targets,
                    svn_depth_t depth,
@@ -2104,11 +2289,11 @@
    * svn_wc_status_modified and svn_wc_status_conflicted. */
   enum svn_wc_status_kind prop_status;
 
-  /** a node can be 'locked' if a working copy update is in progress or
+  /** A node can be 'locked' if a working copy update is in progress or
    * was interrupted. */
   svn_boolean_t wc_is_locked;
 
-  /** a file or directory can be 'copied' if it's scheduled for
+  /** A file or directory can be 'copied' if it's scheduled for
    * addition-with-history (or part of a subtree that is scheduled as such.).
    */
   svn_boolean_t copied;
@@ -2134,7 +2319,7 @@
   /** Last commit author of this item */
   const char *changed_author;
 
-    /** a file or directory can be 'switched' if the switch command has been
+  /** A file or directory can be 'switched' if the switch command has been
    * used.  If this is TRUE, then file_external will be FALSE.
    */
   svn_boolean_t switched;
@@ -2200,11 +2385,44 @@
 
   /** @} */
 
-  /** Reserved for libsvn_client's internal use; this value is only to be used for
-   * libsvn_client backwards compatibility wrappers. This value may be NULL or
-   * to other data in future versions. */
+  /** Reserved for libsvn_client's internal use; this value is only to be used
+   * for libsvn_client backwards compatibility wrappers. This value may be NULL
+   * or to other data in future versions. */
   const void *backwards_compatibility_baton;
 
+  /** Set to the local absolute path that this node was moved from, if this
+   * file or directory has been moved here locally and is the root of that
+   * move. Otherwise set to NULL.
+   *
+   * This will be NULL for moved-here nodes that are just part of a subtree
+   * that was moved along (and are not themselves a root of a different move
+   * operation).
+   *
+   * @since New in 1.8. */
+  const char *moved_from_abspath;
+
+  /** Set to the local absolute path that this node was moved to, if this file
+   * or directory has been moved away locally and corresponds to the root
+   * of the destination side of the move. Otherwise set to NULL.
+   *
+   * Note: Saying just "root" here could be misleading. For example:
+   *   svn mv A AA;
+   *   svn mv AA/B BB;
+   * creates a situation where A/B is moved-to BB, but one could argue that
+   * the move source's root actually was AA/B. Note that, as far as the
+   * working copy is concerned, above case is exactly identical to:
+   *   svn mv A/B BB;
+   *   svn mv A AA;
+   * In both situations, @a moved_to_abspath would be set for nodes A (moved
+   * to AA) and A/B (moved to BB), only.
+   *
+   * This will be NULL for moved-away nodes that were just part of a subtree
+   * that was moved along (and are not themselves a root of a different move
+   * operation).
+   *
+   * @since New in 1.8. */
+  const char *moved_to_abspath;
+
   /* NOTE! Please update svn_client_status_dup() when adding new fields here. */
 } svn_client_status_t;
 
@@ -2227,11 +2445,6 @@
  *
  * @a scratch_pool will be cleared between invocations to the callback.
  *
- * ### we might be revamping the status infrastructure, and this callback
- * ### could totally disappear by the end of 1.7 development. however, we
- * ### need to mark the STATUS parameter as "const" so that it is easier
- * ### to reason about who/what can modify those structures.
- *
  * @since New in 1.7.
  */
 typedef svn_error_t *(*svn_client_status_func_t)(
@@ -2423,8 +2636,11 @@
  * If @a limit is non-zero only invoke @a receiver on the first @a limit
  * logs.
  *
- * If @a discover_changed_paths is set, then the `@a changed_paths' argument
- * to @a receiver will be passed on each invocation.
+ * If @a discover_changed_paths is set, then the @c changed_paths and @c
+ * changed_paths2 fields in the @c log_entry argument to @a receiver will be
+ * populated on each invocation.  @note The @c text_modified and @c
+ * props_modified fields of the changed paths structure may have the value
+ * #svn_tristate_unknown if the repository does not report that information.
  *
  * If @a strict_node_history is set, copy history (if any exists) will
  * not be traversed while harvesting revision logs for each target.
@@ -2432,18 +2648,12 @@
  * If @a include_merged_revisions is set, log information for revisions
  * which have been merged to @a targets will also be returned.
  *
- * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
- * revprops named in the array (i.e. retrieve none if the array is empty).
+ * If @a revprops is NULL, retrieve all revision properties; else, retrieve
+ * only the revision properties named by the (const char *) array elements
+ * (i.e. retrieve none if the array is empty).
  *
  * Use @a pool for any temporary allocation.
  *
- * @par Important:
- * A special case for the revision range HEAD:1, which was present
- * in svn_client_log(), has been removed from svn_client_log2().  Instead, it
- * is expected that callers will specify the range HEAD:0, to avoid a
- * #SVN_ERR_FS_NO_SUCH_REVISION error when invoked against an empty repository
- * (i.e. one not containing a revision 1).
- *
  * If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2/baton2
  * with a 'skip' signal on any unversioned targets.
  *
@@ -2514,6 +2724,13 @@
  * Similar to svn_client_log3(), but with the @c kind field of
  * @a peg_revision set to #svn_opt_revision_unspecified.
  *
+ * @par Important:
+ * A special case for the revision range HEAD:1, which was present
+ * in svn_client_log(), has been removed from svn_client_log2().  Instead, it
+ * is expected that callers will specify the range HEAD:0, to avoid a
+ * #SVN_ERR_FS_NO_SUCH_REVISION error when invoked against an empty repository
+ * (i.e. one not containing a revision 1).
+ *
  * @deprecated Provided for compatibility with the 1.3 API.
  * @since New in 1.2.
  */
@@ -2702,12 +2919,13 @@
 
 /**
  * Produce diff output which describes the delta between
- * @a path1/@a revision1 and @a path2/@a revision2.  Print the output
- * of the diff to @a outfile, and any errors to @a errfile.  @a path1
- * and @a path2 can be either working-copy paths or URLs.
+ * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2.  Print
+ * the output of the diff to @a outstream, and any errors to @a
+ * errstream.  @a path_or_url1 and @a path_or_url2 can be either
+ * working-copy paths or URLs.
  *
- * If @a relative_to_dir is not @c NULL, the @a original_path and
- * @a modified_path will have the @a relative_to_dir stripped from the
+ * If @a relative_to_dir is not @c NULL, the original path and
+ * modified path will have the @a relative_to_dir stripped from the
  * front of the respective paths.  If @a relative_to_dir is @c NULL,
  * paths will not be modified.  If @a relative_to_dir is not
  * @c NULL but @a relative_to_dir is not a parent path of the target,
@@ -2717,9 +2935,10 @@
  * If either @a revision1 or @a revision2 has an `unspecified' or
  * unrecognized `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
  *
- * @a path1 and @a path2 must both represent the same node kind -- that
- * is, if @a path1 is a directory, @a path2 must also be, and if @a path1
- * is a file, @a path2 must also be.
+ * @a path_or_url1 and @a path_or_url2 must both represent the same node
+ * kind -- that is, if @a path_or_url1 is a directory, @a path_or_url2
+ * must also be, and if @a path_or_url1 is a file, @a path_or_url2 must
+ * also be.
  *
  * If @a depth is #svn_depth_infinity, diff fully recursively.
  * Else if it is #svn_depth_immediates, diff the named paths and
@@ -2736,17 +2955,29 @@
  * and the addition of another, but if this flag is TRUE, unrelated
  * items will be diffed as if they were related.
  *
+ * If @a no_diff_added is TRUE, then no diff output will be generated
+ * on added files.
+ *
  * If @a no_diff_deleted is TRUE, then no diff output will be
  * generated on deleted files.
  *
  * If @a show_copies_as_adds is TRUE, then copied files will not be diffed
  * against their copyfrom source, and will appear in the diff output
  * in their entirety, as if they were newly added.
+ * ### BUGS: For a repos-repos diff, this is ignored. Instead, a file is
+ *     diffed against its copyfrom source iff the file is the diff target
+ *     and not if some parent directory is the diff target. For a repos-WC
+ *     diff, this is ignored if the file is the diff target.
  *
  * If @a use_git_diff_format is TRUE, then the git's extended diff format
  * will be used.
  * ### Do we need to say more about the format? A reference perhaps?
  *
+ * If @a ignore_properties is TRUE, do not show property differences.
+ * If @a properties_only is TRUE, show only property changes.
+ * The above two options are mutually exclusive. It is an error to set
+ * both to TRUE.
+ *
  * Generated headers are encoded using @a header_encoding.
  *
  * Diff output will not be generated for binary files, unless @a
@@ -2777,8 +3008,41 @@
  * @note @a relative_to_dir doesn't affect the path index generated by
  * external diff programs.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_diff6(const apr_array_header_t *diff_options,
+                 const char *path_or_url1,
+                 const svn_opt_revision_t *revision1,
+                 const char *path_or_url2,
+                 const svn_opt_revision_t *revision2,
+                 const char *relative_to_dir,
+                 svn_depth_t depth,
+                 svn_boolean_t ignore_ancestry,
+                 svn_boolean_t no_diff_added,
+                 svn_boolean_t no_diff_deleted,
+                 svn_boolean_t show_copies_as_adds,
+                 svn_boolean_t ignore_content_type,
+                 svn_boolean_t ignore_properties,
+                 svn_boolean_t properties_only,
+                 svn_boolean_t use_git_diff_format,
+                 const char *header_encoding,
+                 svn_stream_t *outstream,
+                 svn_stream_t *errstream,
+                 const apr_array_header_t *changelists,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
+ * instead of @a outstream and @a errstream, and with @a
+ * no_diff_added, @a ignore_properties, and @a properties_only always
+ * passed as @c FALSE (which means that additions and property changes
+ * are always transmitted).
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_diff5(const apr_array_header_t *diff_options,
                  const char *path1,
@@ -2897,19 +3161,52 @@
                 apr_pool_t *pool);
 
 /**
- * Produce diff output which describes the delta between the
- * filesystem object @a path in peg revision @a peg_revision, as it
- * changed between @a start_revision and @a end_revision.  @a path can
+ * Produce diff output which describes the delta between the filesystem
+ * object @a path_or_url in peg revision @a peg_revision, as it changed
+ * between @a start_revision and @a end_revision.  @a path_or_url can
  * be either a working-copy path or URL.
  *
  * If @a peg_revision is #svn_opt_revision_unspecified, behave
- * identically to svn_client_diff5(), using @a path for both of that
- * function's @a path1 and @a path2 arguments.
+ * identically to svn_client_diff6(), using @a path_or_url for both of that
+ * function's @a path_or_url1 and @a path_or_url2 arguments.
  *
- * All other options are handled identically to svn_client_diff5().
+ * All other options are handled identically to svn_client_diff6().
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_diff_peg6(const apr_array_header_t *diff_options,
+                     const char *path_or_url,
+                     const svn_opt_revision_t *peg_revision,
+                     const svn_opt_revision_t *start_revision,
+                     const svn_opt_revision_t *end_revision,
+                     const char *relative_to_dir,
+                     svn_depth_t depth,
+                     svn_boolean_t ignore_ancestry,
+                     svn_boolean_t no_diff_added,
+                     svn_boolean_t no_diff_deleted,
+                     svn_boolean_t show_copies_as_adds,
+                     svn_boolean_t ignore_content_type,
+                     svn_boolean_t ignore_properties,
+                     svn_boolean_t properties_only,
+                     svn_boolean_t use_git_diff_format,
+                     const char *header_encoding,
+                     svn_stream_t *outstream,
+                     svn_stream_t *errstream,
+                     const apr_array_header_t *changelists,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *pool);
+
+/** Similar to svn_client_diff6_peg6(), but with @a outfile and @a errfile,
+ * instead of @a outstream and @a errstream, and with @a
+ * no_diff_added, @a ignore_properties, and @a properties_only always
+ * passed as @c FALSE (which means that additions and property changes
+ * are always transmitted).
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_diff_peg5(const apr_array_header_t *diff_options,
                      const char *path,
@@ -3029,8 +3326,9 @@
 
 /**
  * Produce a diff summary which lists the changed items between
- * @a path1/@a revision1 and @a path2/@a revision2 without creating text
- * deltas. @a path1 and @a path2 can be either working-copy paths or URLs.
+ * @a path_or_url1/@a revision1 and @a path_or_url2/@a revision2 without
+ * creating text deltas. @a path_or_url1 and @a path_or_url2 can be
+ * either working-copy paths or URLs.
  *
  * The function may report false positives if @a ignore_ancestry is false,
  * since a file might have been modified between two revisions, but still
@@ -3039,14 +3337,14 @@
  * Calls @a summarize_func with @a summarize_baton for each difference
  * with a #svn_client_diff_summarize_t structure describing the difference.
  *
- * See svn_client_diff5() for a description of the other parameters.
+ * See svn_client_diff6() for a description of the other parameters.
  *
  * @since New in 1.5.
  */
 svn_error_t *
-svn_client_diff_summarize2(const char *path1,
+svn_client_diff_summarize2(const char *path_or_url1,
                            const svn_opt_revision_t *revision1,
-                           const char *path2,
+                           const char *path_or_url2,
                            const svn_opt_revision_t *revision2,
                            svn_depth_t depth,
                            svn_boolean_t ignore_ancestry,
@@ -3081,13 +3379,13 @@
 
 /**
  * Produce a diff summary which lists the changed items between the
- * filesystem object @a path in peg revision @a peg_revision, as it
- * changed between @a start_revision and @a end_revision. @a path can
+ * filesystem object @a path_or_url in peg revision @a peg_revision, as it
+ * changed between @a start_revision and @a end_revision. @a path_or_url can
  * be either a working-copy path or URL.
  *
  * If @a peg_revision is #svn_opt_revision_unspecified, behave
- * identically to svn_client_diff_summarize2(), using @a path for both
- * of that function's @a path1 and @a path2 arguments.
+ * identically to svn_client_diff_summarize2(), using @a path_or_url for
+ * both of that function's @a path_or_url1 and @a path_or_url2 arguments.
  *
  * The function may report false positives if @a ignore_ancestry is false,
  * as described in the documentation for svn_client_diff_summarize2().
@@ -3100,7 +3398,7 @@
  * @since New in 1.5.
  */
 svn_error_t *
-svn_client_diff_summarize_peg2(const char *path,
+svn_client_diff_summarize_peg2(const char *path_or_url,
                                const svn_opt_revision_t *peg_revision,
                                const svn_opt_revision_t *start_revision,
                                const svn_opt_revision_t *end_revision,
@@ -3144,6 +3442,46 @@
  * @{
  */
 
+/** Get information about the state of merging between two branches.
+ *
+ * The source is specified by @a source_path_or_url at @a source_revision.
+ * The target is specified by @a target_path_or_url at @a target_revision,
+ * which refers to either a WC or a repository location.
+ *
+ * Set @a *needs_reintegration to true if an automatic merge from source
+ * to target would be a reintegration merge: that is, if the last automatic
+ * merge was in the opposite direction; or to false otherwise.
+ *
+ * Set @a *yca_url, @a *yca_rev, @a *base_url, @a *base_rev, @a *right_url,
+ * @a *right_rev, @a *target_url, @a *target_rev to the repository locations
+ * of, respectively: the youngest common ancestor of the branches, the base
+ * chosen for 3-way merge, the right-hand side of the source diff, and the
+ * target.
+ *
+ * Set @a repos_root_url to the URL of the repository root.  This is a
+ * common prefix of all four URL outputs.
+ *
+ * Allocate the results in @a result_pool.  Any of the output pointers may
+ * be NULL if not wanted.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_get_merging_summary(svn_boolean_t *needs_reintegration,
+                               const char **yca_url, svn_revnum_t *yca_rev,
+                               const char **base_url, svn_revnum_t *base_rev,
+                               const char **right_url, svn_revnum_t *right_rev,
+                               const char **target_url, svn_revnum_t *target_rev,
+                               const char **repos_root_url,
+                               const char *source_path_or_url,
+                               const svn_opt_revision_t *source_revision,
+                               const char *target_path_or_url,
+                               const svn_opt_revision_t *target_revision,
+                               svn_client_ctx_t *ctx,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool);
+
+
 /** Merge changes from @a source1/@a revision1 to @a source2/@a revision2 into
  * the working-copy path @a target_wcpath.
  *
@@ -3171,16 +3509,19 @@
  *
  * If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
  *
- * Use @a ignore_ancestry to control whether or not items being
- * diffed will be checked for relatedness first.  Unrelated items
- * are typically transmitted to the editor as a deletion of one thing
- * and the addition of another, but if this flag is TRUE, unrelated
- * items will be diffed as if they were related.
+ * If @a ignore_mergeinfo is true, disable merge tracking, by treating the
+ * two sources as unrelated even if they actually have a common ancestor.
+ *
+ * If @a diff_ignore_ancestry is true, diff unrelated nodes as if related:
+ * that is, diff the 'left' and 'right' versions of a node as if they were
+ * related (if they are the same kind) even if they are not related.
+ * Otherwise, diff unrelated items as a deletion of one thing and the
+ * addition of another.
  *
- * If @a force is false and the merge involves deleting a file whose
+ * If @a force_delete is false and the merge involves deleting a file whose
  * content differs from the source-left version, or a locally modified
  * directory, or an unversioned item, then the operation will fail.  If
- * @a force is true then all such items will be deleted.
+ * @a force_delete is true then all such items will be deleted.
  *
  * @a merge_options (an array of <tt>const char *</tt>), if non-NULL,
  * is used to pass additional command line arguments to the merge
@@ -3206,8 +3547,33 @@
  * The authentication baton cached in @a ctx is used to communicate with the
  * repository.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_merge5(const char *source1,
+                  const svn_opt_revision_t *revision1,
+                  const char *source2,
+                  const svn_opt_revision_t *revision2,
+                  const char *target_wcpath,
+                  svn_depth_t depth,
+                  svn_boolean_t ignore_mergeinfo,
+                  svn_boolean_t diff_ignore_ancestry,
+                  svn_boolean_t force_delete,
+                  svn_boolean_t record_only,
+                  svn_boolean_t dry_run,
+                  svn_boolean_t allow_mixed_rev,
+                  const apr_array_header_t *merge_options,
+                  svn_client_ctx_t *ctx,
+                  apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_merge5(), but the single @a ignore_ancestry
+ * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_merge4(const char *source1,
                   const svn_opt_revision_t *revision1,
@@ -3216,7 +3582,7 @@
                   const char *target_wcpath,
                   svn_depth_t depth,
                   svn_boolean_t ignore_ancestry,
-                  svn_boolean_t force,
+                  svn_boolean_t force_delete,
                   svn_boolean_t record_only,
                   svn_boolean_t dry_run,
                   svn_boolean_t allow_mixed_rev,
@@ -3226,7 +3592,8 @@
 
 /**
  * Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
- * @c TRUE.
+ * @c TRUE.  The @a force parameter maps to the @c force_delete parameter
+ * of svn_client_merge4().
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
  *
@@ -3294,25 +3661,26 @@
                  apr_pool_t *pool);
 
 
-
 /**
- * Perform a reintegration merge of @a source at @a peg_revision
+ * Perform a reintegration merge of @a source_path_or_url at @a source_peg_revision
  * into @a target_wcpath.
  * @a target_wcpath must be a single-revision, #svn_depth_infinity,
  * pristine, unswitched working copy -- in other words, it must
  * reflect a single revision tree, the "target".  The mergeinfo on @a
- * source must reflect that all of the target has been merged into it.
- * Then this behaves like a merge with svn_client_merge3() from the
+ * source_path_or_url must reflect that all of the target has been merged into it.
+ * Then this behaves like a merge with svn_client_merge5() from the
  * target's URL to the source.
  *
- * All other options are handled identically to svn_client_merge3().
+ * All other options are handled identically to svn_client_merge5().
  * The depth of the merge is always #svn_depth_infinity.
  *
  * @since New in 1.5.
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
-svn_client_merge_reintegrate(const char *source,
-                             const svn_opt_revision_t *peg_revision,
+svn_client_merge_reintegrate(const char *source_path_or_url,
+                             const svn_opt_revision_t *source_peg_revision,
                              const char *target_wcpath,
                              svn_boolean_t dry_run,
                              const apr_array_header_t *merge_options,
@@ -3320,10 +3688,21 @@
                              apr_pool_t *pool);
 
 /**
- * Merge the changes between the filesystem object @a source in peg
- * revision @a peg_revision, as it changed between the ranges described
- * in @a ranges_to_merge.
- *
+ * Merge changes from the source branch identified by
+ * @a source_path_or_url in peg revision @a source_peg_revision,
+ * into the target branch working copy at @a target_wcpath.
+ *
+ * If @a ranges_to_merge is NULL then perform an automatic merge of
+ * all the eligible changes up to @a source_peg_revision.  If the merge
+ * required is a reintegrate merge, then return an error if the WC has
+ * mixed revisions, local modifications and/or switched subtrees; if
+ * the merge is determined to be of the non-reintegrate kind, then
+ * return an error if @a allow_mixed_rev is false and the WC contains
+ * mixed revisions.
+ *
+ * If @a ranges_to_merge is not NULL then merge the changes specified
+ * by the revision ranges in @a ranges_to_merge, or, when honouring
+ * mergeinfo, only the eligible parts of those revision ranges.
  * @a ranges_to_merge is an array of <tt>svn_opt_revision_range_t
  * *</tt> ranges.  These ranges may describe additive and/or
  * subtractive merge ranges, they may overlap fully or partially,
@@ -3332,18 +3711,45 @@
  * list of provided ranges has an `unspecified' or unrecognized
  * `kind', return #SVN_ERR_CLIENT_BAD_REVISION.
  *
- * All other options are handled identically to svn_client_merge4().
+ * If @a ranges_to_merge is an empty array, then do nothing.
+ *
+ * All other options are handled identically to svn_client_merge5().
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_merge_peg5(const char *source_path_or_url,
+                      const apr_array_header_t *ranges_to_merge,
+                      const svn_opt_revision_t *source_peg_revision,
+                      const char *target_wcpath,
+                      svn_depth_t depth,
+                      svn_boolean_t ignore_mergeinfo,
+                      svn_boolean_t diff_ignore_ancestry,
+                      svn_boolean_t force_delete,
+                      svn_boolean_t record_only,
+                      svn_boolean_t dry_run,
+                      svn_boolean_t allow_mixed_rev,
+                      const apr_array_header_t *merge_options,
+                      svn_client_ctx_t *ctx,
+                      apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_merge_peg5(), but automatic merge is not available
+ * (@a ranges_to_merge must not be NULL), and the single @a ignore_ancestry
+ * parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
-svn_client_merge_peg4(const char *source,
+svn_client_merge_peg4(const char *source_path_or_url,
                       const apr_array_header_t *ranges_to_merge,
-                      const svn_opt_revision_t *peg_revision,
+                      const svn_opt_revision_t *source_peg_revision,
                       const char *target_wcpath,
                       svn_depth_t depth,
                       svn_boolean_t ignore_ancestry,
-                      svn_boolean_t force,
+                      svn_boolean_t force_delete,
                       svn_boolean_t record_only,
                       svn_boolean_t dry_run,
                       svn_boolean_t allow_mixed_rev,
@@ -3353,7 +3759,8 @@
 
 /**
  * Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
- * @c TRUE.
+ * @c TRUE.  The @a force parameter maps to the @c force_delete parameter
+ * of svn_client_merge_peg4().
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
  *
@@ -3440,9 +3847,10 @@
 
 
 /**
- * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge
- * source URLs to <tt>apr_array_header_t *</tt> rangelists (arrays of
- * <tt>svn_merge_range_t *</tt> ranges) describing the ranges which
+ * Get the mergeinfo for a single target node (ignoring any subtrees).
+ *
+ * Set @a *mergeinfo to a hash mapping <tt>const char *</tt> merge source
+ * URLs to <tt>svn_rangelist_t *</tt> rangelists describing the ranges which
  * have been merged into @a path_or_url as of @a peg_revision, per
  * @a path_or_url's explicit mergeinfo or inherited mergeinfo if no
  * explicit mergeinfo if found.  If no explicit or inherited mergeinfo
@@ -3469,16 +3877,37 @@
 
 
 /**
+ * Describe the revisions that either have or have not been merged from
+ * one source branch (or subtree) into another.
+ *
  * If @a finding_merged is TRUE, then drive log entry callbacks
  * @a receiver / @a receiver_baton with the revisions merged from
- * @a merge_source_path_or_url (as of @a src_peg_revision) into
- * @a path_or_url (as of @a peg_revision).  If @a finding_merged is FALSE
- * then find the revisions eligible for merging.
+ * @a source_path_or_url (as of @a source_peg_revision) into
+ * @a target_path_or_url (as of @a target_peg_revision).  If @a
+ * finding_merged is FALSE then find the revisions eligible for merging.
+ *
+ * If both @a source_start_revision and @a source_end_revision are
+ * unspecified (that is, of kind @c svn_opt_revision_unspecified),
+ * @a receiver will be called the requested revisions from 0 to
+ * @a source_peg_revision and in that order (that is, oldest to
+ * youngest).  Otherwise, both @a source_start_revision and
+ * @a source_end_revision must be specified, which has two effects:
+ *
+ *   - @a receiver will be called only with revisions which fall
+ *     within range of @a source_start_revision to
+ *     @a source_end_revision, inclusive, and
+ *
+ *   - those revisions will be ordered in the same "direction" as the
+ *     walk from @a source_start_revision to @a source_end_revision.
+ *     (If @a source_start_revision is the younger of the two, @a
+ *     receiver will be called with revisions in youngest-to-oldest
+ *     order; otherwise, the reverse occurs.)
  *
  * If @a depth is #svn_depth_empty consider only the explicit or
- * inherited mergeinfo on @a path_or_url when calculating merged revisions
- * from @a merge_source_path_or_url.  If @a depth is #svn_depth_infinity
- * then also consider the explicit subtree mergeinfo under @a path_or_url.
+ * inherited mergeinfo on @a target_path_or_url when calculating merged
+ * revisions from @a source_path_or_url.  If @a depth is #svn_depth_infinity
+ * then also consider the explicit subtree mergeinfo under @a
+ * target_path_or_url.
  * If a depth other than #svn_depth_empty or #svn_depth_infinity is
  * requested then return a #SVN_ERR_UNSUPPORTED_FEATURE error.
  *
@@ -3490,14 +3919,38 @@
  * If the server doesn't support retrieval of mergeinfo, return an
  * #SVN_ERR_UNSUPPORTED_FEATURE error.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_mergeinfo_log2(svn_boolean_t finding_merged,
+                          const char *target_path_or_url,
+                          const svn_opt_revision_t *target_peg_revision,
+                          const char *source_path_or_url,
+                          const svn_opt_revision_t *source_peg_revision,
+                          const svn_opt_revision_t *source_start_revision,
+                          const svn_opt_revision_t *source_end_revision,
+                          svn_log_entry_receiver_t receiver,
+                          void *receiver_baton,
+                          svn_boolean_t discover_changed_paths,
+                          svn_depth_t depth,
+                          const apr_array_header_t *revprops,
+                          svn_client_ctx_t *ctx,
+                          apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_mergeinfo_log2(), but with @a source_start_revision
+ * and @a source_end_revision always of kind @c svn_opt_revision_unspecified;
+ *
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_mergeinfo_log(svn_boolean_t finding_merged,
-                         const char *path_or_url,
-                         const svn_opt_revision_t *peg_revision,
-                         const char *merge_source_path_or_url,
-                         const svn_opt_revision_t *src_peg_revision,
+                         const char *target_path_or_url,
+                         const svn_opt_revision_t *target_peg_revision,
+                         const char *source_path_or_url,
+                         const svn_opt_revision_t *source_peg_revision,
                          svn_log_entry_receiver_t receiver,
                          void *receiver_baton,
                          svn_boolean_t discover_changed_paths,
@@ -3652,11 +4105,13 @@
  */
 
 /**
- * Restore the pristine version of a working copy @a paths,
+ * Restore the pristine version of working copy @a paths,
  * effectively undoing any local mods.  For each path in @a paths,
  * revert it if it is a file.  Else if it is a directory, revert
  * according to @a depth:
  *
+ * @a paths is an array of (const char *) local WC paths.
+ *
  * If @a depth is #svn_depth_empty, revert just the properties on
  * the directory; else if #svn_depth_files, revert the properties
  * and any files immediately under the directory; else if
@@ -3732,21 +4187,31 @@
 
 /** Perform automatic conflict resolution on a working copy @a path.
  *
- * If @a depth is #svn_depth_empty, act only on @a path; if
- * #svn_depth_files, resolve @a path and its conflicted file
- * children (if any); if #svn_depth_immediates, resolve @a path and
- * all its immediate conflicted children (both files and directories,
- * if any); if #svn_depth_infinity, resolve @a path and every
- * conflicted file or directory anywhere beneath it.
- * Note that this operation will try to lock the parent directory of
- * @a path in order to be able to resolve tree-conflicts on @a path.
+ * If @a conflict_choice is
+ *
+ *   - #svn_wc_conflict_choose_base:
+ *     resolve the conflict with the old file contents
+ *
+ *   - #svn_wc_conflict_choose_mine_full:
+ *     use the original working contents
+ *
+ *   - #svn_wc_conflict_choose_theirs_full:
+ *     use the new contents
+ *
+ *   - #svn_wc_conflict_choose_merged:
+ *     don't change the contents at all, just remove the conflict
+ *     status, which is the pre-1.5 behavior.
  *
- * If @a conflict_choice is #svn_wc_conflict_choose_base, resolve the
- * conflict with the old file contents; if
- * #svn_wc_conflict_choose_mine_full, use the original working contents;
- * if #svn_wc_conflict_choose_theirs_full, the new contents; and if
- * #svn_wc_conflict_choose_merged, don't change the contents at all,
- * just remove the conflict status, which is the pre-1.5 behavior.
+ *   - #svn_wc_conflict_choose_theirs_conflict
+ *     ###...
+ *
+ *   - #svn_wc_conflict_choose_mine_conflict
+ *     ###...
+ *
+ *   - svn_wc_conflict_choose_unspecified
+ *     invoke @a ctx->conflict_func2 with @a ctx->conflict_baton2 to obtain
+ *     a resolution decision for each conflict.  This can be used to
+ *     implement interactive conflict resolution.
  *
  * #svn_wc_conflict_choose_theirs_conflict and
  * #svn_wc_conflict_choose_mine_conflict are not legal for binary
@@ -3755,6 +4220,17 @@
  * If @a path is not in a state of conflict to begin with, do nothing.
  * If @a path's conflict state is removed and @a ctx->notify_func2 is non-NULL,
  * call @a ctx->notify_func2 with @a ctx->notify_baton2 and @a path.
+ * ### with what notification parameters?
+ *
+ * If @a depth is #svn_depth_empty, act only on @a path; if
+ * #svn_depth_files, resolve @a path and its conflicted file
+ * children (if any); if #svn_depth_immediates, resolve @a path and
+ * all its immediate conflicted children (both files and directories,
+ * if any); if #svn_depth_infinity, resolve @a path and every
+ * conflicted file or directory anywhere beneath it.
+ *
+ * Note that this operation will try to lock the parent directory of
+ * @a path in order to be able to resolve tree-conflicts on @a path.
  *
  * @since New in 1.5.
  */
@@ -3792,20 +4268,14 @@
     const svn_opt_revision_t *peg_revision;
 } svn_client_copy_source_t;
 
-/** Copy each @a src in @a sources to @a dst_path.
+/** Copy each source in @a sources to @a dst_path.
  *
  * If multiple @a sources are given, @a dst_path must be a directory,
  * and @a sources will be copied as children of @a dst_path.
  *
- * @a sources must be an array of elements of type
- * <tt>svn_client_copy_source_t *</tt>.
- *
- * Each @a src in @a sources must be files or directories under version control,
- * or URLs of a versioned item in the repository.  If @a sources has multiple
- * items, the @a src members must be all repository URLs or all working copy
- * paths.
- *
- * The parent of @a dst_path must already exist.
+ * @a sources is an array of <tt>svn_client_copy_source_t *</tt> elements,
+ * either all referring to local WC items or all referring to versioned
+ * items in the repository.
  *
  * If @a sources has only one item, attempt to copy it to @a dst_path.  If
  * @a copy_as_child is TRUE and @a dst_path already exists, attempt to copy the
@@ -3833,7 +4303,7 @@
  * This scheduling can be removed with svn_client_revert2().
  *
  * If @a make_parents is TRUE, create any non-existent parent directories
- * also.
+ * also.  Otherwise the parent of @a dst_path must already exist.
  *
  * If @a ignore_externals is set, don't process externals definitions
  * as part of this operation.
@@ -3973,10 +4443,10 @@
 /**
  * Move @a src_paths to @a dst_path.
  *
- * @a src_paths must be files or directories under version control, or
- * URLs of versioned items in the repository.  All @a src_paths must be of
- * the same type.  If multiple @a src_paths are given, @a dst_path must be
- * a directory and @a src_paths will be moved as children of @a dst_path.
+ * @a src_paths is an array of (const char *) paths -- either all WC paths
+ * or all URLs -- of versioned items.  If multiple @a src_paths are given,
+ * @a dst_path must be a directory and @a src_paths will be moved as
+ * children of @a dst_path.
  *
  * If @a src_paths are repository URLs:
  *
@@ -4000,8 +4470,6 @@
  *     is a directory it will remain in the working copy but all the files,
  *     and unversioned items, it contains will be removed.
  *
- * The parent of @a dst_path must already exist.
- *
  * If @a src_paths has only one item, attempt to move it to @a dst_path.  If
  * @a move_as_child is TRUE and @a dst_path already exists, attempt to move the
  * item as a child of @a dst_path.  If @a move_as_child is FALSE and
@@ -4019,7 +4487,20 @@
  * with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
  *
  * If @a make_parents is TRUE, create any non-existent parent directories
- * also.
+ * also.  Otherwise, the parent of @a dst_path must already exist.
+ *
+ * If @a allow_mixed_revisions is @c FALSE, #SVN_ERR_WC_MIXED_REVISIONS
+ * will be raised if the move source is a mixed-revision subtree.
+ * If @a allow_mixed_revisions is TRUE, a mixed-revision move source is
+ * allowed but the move will degrade to a copy and a delete without local
+ * move tracking. This parameter should be set to FALSE except where backwards
+ * compatibility to svn_client_move6() is required.
+ *
+ * If @a metadata_only is @c TRUE and moving a file in a working copy,
+ * everything in the metadata is updated as if the node is moved, but the
+ * actual disk move operation is not performed. This feature is useful for
+ * clients that want to keep the working copy in sync while the actual working
+ * copy is updated by some other task.
  *
  * If non-NULL, @a revprop_table is a hash table holding additional,
  * custom revision properties (<tt>const char *</tt> names mapped to
@@ -4041,8 +4522,29 @@
  * @a commit_callback with @a commit_baton and a #svn_commit_info_t for
  * the commit.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_move7(const apr_array_header_t *src_paths,
+                 const char *dst_path,
+                 svn_boolean_t move_as_child,
+                 svn_boolean_t make_parents,
+                 svn_boolean_t allow_mixed_revisions,
+                 svn_boolean_t metadata_only,
+                 const apr_hash_t *revprop_table,
+                 svn_commit_callback2_t commit_callback,
+                 void *commit_baton,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+/**
+ * Similar to svn_client_move7(), but with @a allow_mixed_revisions always
+ * set to @c TRUE and @a metadata_only always to @c FALSE.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_move6(const apr_array_header_t *src_paths,
                  const char *dst_path,
@@ -4392,12 +4894,34 @@
 
 /**
  * Set @a *props to a hash table whose keys are absolute paths or URLs
- * of items on which property @a propname is set, and whose values are
- * `#svn_string_t *' representing the property value for @a propname
- * at that path.
+ * of items on which property @a propname is explicitly set, and whose
+ * values are <tt>svn_string_t *</tt> representing the property value for
+ * @a propname at that path.
+ *
+ * If @a inherited_props is not @c NULL, then set @a *inherited_props to a
+ * depth-first ordered array of #svn_prop_inherited_item_t * structures
+ * representing the properties inherited by @a target.  If @a target is a
+ * working copy path, then properties inherited by @a target as far as the
+ * root of the working copy are obtained from the working copy's actual
+ * property values.  Properties inherited from above the working copy root
+ * come from the inherited properties cache.  If @a target is a URL, then
+ * the inherited properties come from the repository.  If @a inherited_props
+ * is not @c NULL and no inheritable properties are found, then set
+ * @a *inherited_props to an empty array.
+ *
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a *inherited_props are
+ * URLs if @a target is a URL or if @a target is a working copy path but the
+ * property represented by the structure is above the working copy root (i.e.
+ * the inherited property is from the cache).  In all other cases the
+ * #svn_prop_inherited_item_t->path_or_url members are absolute working copy
+ * paths.
  *
- * Allocate @a *props, its keys, and its values in @a pool, use
- * @a scratch_pool for temporary allocations.
+ * Allocate @a *props (including keys and values) and @a *inherited_props
+ * (including its elements) in @a result_pool, use @a scratch_pool for
+ * temporary allocations.
+ *
+ * @a target is a WC absolute path or a URL.
  *
  * Don't store any path, not even @a target, if it does not have a
  * property named @a propname.
@@ -4432,12 +4956,34 @@
  * This function returns SVN_ERR_UNVERSIONED_RESOURCE when it is called on
  * unversioned nodes.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_propget5(apr_hash_t **props,
+                    apr_array_header_t **inherited_props,
+                    const char *propname,
+                    const char *target,  /* abspath or URL */
+                    const svn_opt_revision_t *peg_revision,
+                    const svn_opt_revision_t *revision,
+                    svn_revnum_t *actual_revnum,
+                    svn_depth_t depth,
+                    const apr_array_header_t *changelists,
+                    svn_client_ctx_t *ctx,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_propget5 but with @a inherited_props always
+ * passed as NULL.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_propget4(apr_hash_t **props,
                     const char *propname,
-                    const char *target,
+                    const char *target,  /* abspath or URL */
                     const svn_opt_revision_t *peg_revision,
                     const svn_opt_revision_t *revision,
                     svn_revnum_t *actual_revnum,
@@ -4527,20 +5073,22 @@
                        apr_pool_t *pool);
 
 /**
- * Invoke @a receiver with @a receiver_baton to return the regular properties
- * of @a target, a URL or working copy path.  @a receiver will be called
- * for each path encountered.
- *
- * If @a revision->kind is #svn_opt_revision_unspecified, then get
- * properties from the working copy, if @a target is a working copy
- * path, or from the repository head if @a target is a URL.  Else get
- * the properties as of @a revision.  The actual node revision
- * selected is determined by the path as it exists in @a peg_revision.
- * If @a peg_revision->kind is #svn_opt_revision_unspecified, then it
- * defaults to #svn_opt_revision_head for URLs or
- * #svn_opt_revision_working for WC targets.  Use the authentication
- * baton cached in @a ctx for authentication if contacting the
- * repository.
+ * Invoke @a receiver with @a receiver_baton to return the regular explicit, and
+ * possibly the inherited, properties of @a target, a URL or working copy path.
+ * @a receiver will be called for each path encountered.
+ *
+ * @a target is a WC path or a URL.
+ *
+ * If @a revision->kind is #svn_opt_revision_unspecified, then get the
+ * explicit (and possibly the inherited) properties from the working copy,
+ * if @a target is a working copy path, or from the repository head if
+ * @a target is a URL.  Else get the properties as of @a revision.
+ * The actual node revision selected is determined by the path as it exists
+ * in @a peg_revision.  If @a peg_revision->kind is
+ * #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
+ * for URLs or #svn_opt_revision_working for WC targets.  Use the
+ * authentication baton cached in @a ctx for authentication if contacting
+ * the repository.
  *
  * If @a depth is #svn_depth_empty, list only the properties of
  * @a target itself.  If @a depth is #svn_depth_files, and
@@ -4558,10 +5106,41 @@
  * of one of those changelists.  If @a changelists is empty (or
  * altogether @c NULL), no changelist filtering occurs.
  *
+ * If @a get_target_inherited_props is true, then also return any inherited
+ * properties when @a receiver is called for @a target.  If @a target is a
+ * working copy path, then properties inherited by @a target as far as the
+ * root of the working copy are obtained from the working copy's actual
+ * property values.  Properties inherited from above the working copy
+ * root come from the inherited properties cache.  If @a target is a URL,
+ * then the inherited properties come from the repository.
+ * If @a get_target_inherited_props is false, then no inherited properties
+ * are returned to @a receiver.
+ *
  * If @a target is not found, return the error #SVN_ERR_ENTRY_NOT_FOUND.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_proplist4(const char *target,
+                     const svn_opt_revision_t *peg_revision,
+                     const svn_opt_revision_t *revision,
+                     svn_depth_t depth,
+                     const apr_array_header_t *changelists,
+                     svn_boolean_t get_target_inherited_props,
+                     svn_proplist_receiver2_t receiver,
+                     void *receiver_baton,
+                     svn_client_ctx_t *ctx,
+                     apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_client_proplist4(), except that the @a receiver type
+ * is a #svn_proplist_receiver_t, @a get_target_inherited_props is
+ * always passed NULL, and there is no separate scratch pool.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_proplist3(const char *target,
                      const svn_opt_revision_t *peg_revision,
@@ -4805,7 +5384,7 @@
  * @{
  */
 
-/** The type of function invoked by svn_client_list2() to report the details
+/** The type of function invoked by svn_client_list3() to report the details
  * of each directory entry being listed.
  *
  * @a baton is the baton that was passed to the caller.  @a path is the
@@ -4815,11 +5394,45 @@
  * the entry's lock, if it is locked and if lock information is being
  * reported by the caller; otherwise @a lock is NULL.  @a abs_path is the
  * repository path of the top node of the list operation; it is relative to
- * the repository root and begins with "/".  @a pool may be used for
- * temporary allocations.
+ * the repository root and begins with "/".
  *
- * @since New in 1.4.
+ * If svn_client_list3() was called with @a include_externals set to TRUE,
+ * @a external_parent_url and @a external_target will be set.
+ * @a external_parent_url is url of the directory which has the
+ * externals definitions. @a external_target is the target subdirectory of
+ * externals definitions which is relative to the parent directory that holds
+ * the external item.
+ *
+ * If external_parent_url and external_target are defined, the item being
+ * listed is part of the external described by external_parent_url and
+ * external_target. Else, the item is not part of any external.
+ * Moreover, we will never mix items which are part of separate
+ * externals, and will always finish listing an external before listing
+ * the next one.
+ *
+ * @a scratch_pool may be used for temporary allocations.
+ *
+ * @since New in 1.8.
  */
+typedef svn_error_t *(*svn_client_list_func2_t)(
+  void *baton,
+  const char *path,
+  const svn_dirent_t *dirent,
+  const svn_lock_t *lock,
+  const char *abs_path,
+  const char *external_parent_url,
+  const char *external_target,
+  apr_pool_t *scratch_pool);
+
+/**
+ * Similar to #svn_client_list_func2_t, but without any information about
+ * externals definitions.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *
+ * @since New in 1.4
+ *
+ * */
 typedef svn_error_t *(*svn_client_list_func_t)(void *baton,
                                                const char *path,
                                                const svn_dirent_t *dirent,
@@ -4843,6 +5456,10 @@
  *
  * If @a fetch_locks is TRUE, include locks when reporting directory entries.
  *
+ * If @a include_externals is TRUE, also list all external items
+ * reached by recursion. @a depth value passed to the original list target
+ * applies for the externals also.
+ *
  * Use @a pool for temporary allocations.
  *
  * Use authentication baton cached in @a ctx to authenticate against the
@@ -4859,8 +5476,30 @@
  * otherwise simply bitwise OR together the combination of @c SVN_DIRENT_
  * fields you care about.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_list3(const char *path_or_url,
+                 const svn_opt_revision_t *peg_revision,
+                 const svn_opt_revision_t *revision,
+                 svn_depth_t depth,
+                 apr_uint32_t dirent_fields,
+                 svn_boolean_t fetch_locks,
+                 svn_boolean_t include_externals,
+                 svn_client_list_func2_t list_func,
+                 void *baton,
+                 svn_client_ctx_t *ctx,
+                 apr_pool_t *pool);
+
+
+/** Similar to svn_client_list3(), but with @a include_externals set
+ * to FALSE, and using a #svn_client_list_func_t as callback.
+ *
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
+ *
  * @since New in 1.5.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_list2(const char *path_or_url,
                  const svn_opt_revision_t *peg_revision,
@@ -5041,6 +5680,8 @@
  * @a changelist.  (For now, a path cannot belong to two changelists
  * at once.)
  *
+ * @a paths is an array of (const char *) local WC paths.
+ *
  * @a changelists is an array of <tt>const char *</tt> changelist
  * names, used as a restrictive filter on items whose changelist
  * assignments are adjusted; that is, don't tweak the changeset of any
@@ -5065,6 +5706,8 @@
  * Remove each path in @a paths (recursing to @a depth as necessary)
  * from changelists to which they are currently assigned.
  *
+ * @a paths is an array of (const char *) local WC paths.
+ *
  * @a changelists is an array of <tt>const char *</tt> changelist
  * names, used as a restrictive filter on items whose changelist
  * assignments are removed; that is, don't remove from a changeset any
@@ -5094,6 +5737,8 @@
  * Call @a callback_func (with @a callback_baton) each time a
  * changelist-having path is discovered.
  *
+ * @a path is a local WC path.
+ *
  * If @a ctx->cancel_func is not @c NULL, invoke it passing @a
  * ctx->cancel_baton during the recursive walk.
  *
@@ -5120,8 +5765,8 @@
 
 /**
  * Lock @a targets in the repository.  @a targets is an array of
- * <tt>const char *</tt> paths - either all working copy paths or URLs.  All
- * @a targets must be in the same repository.
+ * <tt>const char *</tt> paths - either all working copy paths or all URLs.
+ * All targets must be in the same repository.
  *
  * If a target is already locked in the repository, no lock will be
  * acquired unless @a steal_lock is TRUE, in which case the locks are
@@ -5151,10 +5796,10 @@
 /**
  * Unlock @a targets in the repository.  @a targets is an array of
  * <tt>const char *</tt> paths - either all working copy paths or all URLs.
- * All @a targets must be in the same repository.
+ * All targets must be in the same repository.
  *
  * If the targets are WC paths, and @a break_lock is FALSE, the working
- * copy must contain a locks for each target.
+ * copy must contain a lock for each target.
  * If this is not the case, or the working copy lock doesn't match the
  * lock token in the repository, an error will be signaled.
  *
@@ -5691,30 +6336,58 @@
                          apr_pool_t *pool);
 
 
+
+/* Fetching a repository's root URL and UUID. */
+
+/** Set @a *repos_root_url and @a *repos_uuid, to the root URL and UUID of
+ * the repository in which @a abspath_or_url is versioned. Use the
+ * authentication baton and working copy context cached in @a ctx as
+ * necessary. @a repos_root_url and/or @a repos_uuid may be NULL if not
+ * wanted.
+ *
+ * This function will open a temporary RA session to the repository if
+ * necessary to get the information.
+ *
+ * Allocate @a *repos_root_url and @a *repos_uuid in @a result_pool.
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_client_get_repos_root(const char **repos_root_url,
+                          const char **repos_uuid,
+                          const char *abspath_or_url,
+                          svn_client_ctx_t *ctx,
+                          apr_pool_t *result_pool,
+                          apr_pool_t *scratch_pool);
+
 /** Set @a *url to the repository root URL of the repository in which
  * @a path_or_url is versioned (or scheduled to be versioned),
  * allocated in @a pool.  @a ctx is required for possible repository
  * authentication.
  *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.7 API. Use
+ * svn_client_get_repos_root() instead, with an absolute path.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_root_url_from_path(const char **url,
                               const char *path_or_url,
                               svn_client_ctx_t *ctx,
                               apr_pool_t *pool);
 
-
-
-/* Fetching repository UUIDs. */
-
 /** Get repository @a uuid for @a url.
  *
  * Use a @a pool to open a temporary RA session to @a url, discover the
  * repository uuid, and free the session.  Return the uuid in @a uuid,
  * allocated in @a pool.  @a ctx is required for possible repository
  * authentication.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API. Use
+ * svn_client_get_repos_root() instead.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_uuid_from_url(const char **uuid,
                          const char *url,
@@ -5729,7 +6402,10 @@
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API. Use
+ * svn_client_get_repos_root() instead.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_client_uuid_from_path2(const char **uuid,
                            const char *local_abspath,
@@ -5756,14 +6432,32 @@
 /** Open an RA session rooted at @a url, and return it in @a *session.
  *
  * Use the authentication baton stored in @a ctx for authentication.
- * @a *session is allocated in @a pool.
+ * @a *session is allocated in @a result_pool.
  *
- * @since New in 1.3.
+ * If @a wri_abspath is not NULL, use the working copy identified by @a
+ * wri_abspath to potentially avoid transferring unneeded data.
  *
- * @note This function is similar to svn_ra_open3(), but the caller avoids
+ * @note This function is similar to svn_ra_open4(), but the caller avoids
  * having to providing its own callback functions.
+ * @since New in 1.8.
  */
 svn_error_t *
+svn_client_open_ra_session2(svn_ra_session_t **session,
+                           const char *url,
+                           const char *wri_abspath,
+                           svn_client_ctx_t *ctx,
+                           apr_pool_t *result_pool,
+                           apr_pool_t *scratch_pool);
+
+/** Similar to svn_client_open_ra_session(), but with @ wri_abspath
+ * always passed as NULL, and with the same pool used as both @a
+ * result_pool and @a scratch_pool.
+ *
+ * @since New in 1.3.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_client_open_ra_session(svn_ra_session_t **session,
                            const char *url,
                            svn_client_ctx_t *ctx,

Modified: trunk/GME/Include/subversion/svn_cmdline.h
==============================================================================
--- trunk/GME/Include/subversion/svn_cmdline.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_cmdline.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -159,7 +159,7 @@
                               apr_pool_t *pool,
                               const char *prefix);
 
-/** A cancellation function/baton pair, and the path to the configuration
+/** A prompt function/baton pair, and the path to the configuration
  * directory. To be passed as the baton argument to the
  * @c svn_cmdline_*_prompt functions.
  *
@@ -369,18 +369,6 @@
                              void *cancel_baton,
                              apr_pool_t *pool);
 
-/** Wrapper for apr_getopt_init(), which see.
- *
- * @since New in 1.4.
- *
- * This is a private API for Subversion's own use.
- */
-svn_error_t *
-svn_cmdline__getopt_init(apr_getopt_t **os,
-                         int argc,
-                         const char *argv[],
-                         apr_pool_t *pool);
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_config.h
==============================================================================
--- trunk/GME/Include/subversion/svn_config.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_config.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -34,6 +34,7 @@
 #include <apr_hash.h>   /* for apr_hash_t */
 
 #include "svn_types.h"
+#include "svn_io.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -61,6 +62,10 @@
  * client configuration files.
  * @{
  */
+
+ /* This list of #defines is intentionally presented as a nested list
+    that matches the in-config hierarchy.  */
+
 #define SVN_CONFIG_CATEGORY_SERVERS        "servers"
 #define SVN_CONFIG_SECTION_GROUPS               "groups"
 #define SVN_CONFIG_SECTION_GLOBAL               "global"
@@ -86,12 +91,18 @@
 #define SVN_CONFIG_OPTION_STORE_SSL_CLIENT_CERT_PP_PLAINTEXT \
                                           "store-ssl-client-cert-pp-plaintext"
 #define SVN_CONFIG_OPTION_USERNAME                  "username"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_HTTP_BULK_UPDATES         "http-bulk-updates"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS      "http-max-connections"
 
 #define SVN_CONFIG_CATEGORY_CONFIG          "config"
 #define SVN_CONFIG_SECTION_AUTH                 "auth"
 #define SVN_CONFIG_OPTION_PASSWORD_STORES           "password-stores"
 #define SVN_CONFIG_OPTION_KWALLET_WALLET            "kwallet-wallet"
 #define SVN_CONFIG_OPTION_KWALLET_SVN_APPLICATION_NAME_WITH_PID "kwallet-svn-application-name-with-pid"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_SSL_CLIENT_CERT_FILE_PROMPT "ssl-client-cert-file-prompt"
 /* The majority of options of the "auth" section
  * has been moved to SVN_CONFIG_CATEGORY_SERVERS. */
 #define SVN_CONFIG_SECTION_HELPERS              "helpers"
@@ -106,6 +117,7 @@
 #define SVN_CONFIG_OPTION_GLOBAL_IGNORES            "global-ignores"
 #define SVN_CONFIG_OPTION_LOG_ENCODING              "log-encoding"
 #define SVN_CONFIG_OPTION_USE_COMMIT_TIMES          "use-commit-times"
+/** @deprecated Not used by Subversion since 2003/r847039 (well before 1.0) */
 #define SVN_CONFIG_OPTION_TEMPLATE_ROOT             "template-root"
 #define SVN_CONFIG_OPTION_ENABLE_AUTO_PROPS         "enable-auto-props"
 #define SVN_CONFIG_OPTION_NO_UNLOCK                 "no-unlock"
@@ -115,6 +127,12 @@
 #define SVN_CONFIG_OPTION_MEMORY_CACHE_SIZE         "memory-cache-size"
 #define SVN_CONFIG_SECTION_TUNNELS              "tunnels"
 #define SVN_CONFIG_SECTION_AUTO_PROPS           "auto-props"
+/** @since New in 1.8. */
+#define SVN_CONFIG_SECTION_WORKING_COPY         "working-copy"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_SQLITE_EXCLUSIVE          "exclusive-locking"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_SQLITE_EXCLUSIVE_CLIENTS  "exclusive-locking-clients"
 /** @} */
 
 /** @name Repository conf directory configuration files strings
@@ -129,8 +147,12 @@
 #define SVN_CONFIG_OPTION_PASSWORD_DB               "password-db"
 #define SVN_CONFIG_OPTION_REALM                     "realm"
 #define SVN_CONFIG_OPTION_AUTHZ_DB                  "authz-db"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_GROUPS_DB                 "groups-db"
 /** @since New in 1.7. */
 #define SVN_CONFIG_OPTION_FORCE_USERNAME_CASE       "force-username-case"
+/** @since New in 1.8. */
+#define SVN_CONFIG_OPTION_HOOKS_ENV                 "hooks-env"
 #define SVN_CONFIG_SECTION_SASL                 "sasl"
 #define SVN_CONFIG_OPTION_USE_SASL                  "use-sasl"
 #define SVN_CONFIG_OPTION_MIN_SSF                   "min-encryption"
@@ -147,7 +169,7 @@
  * but we don't want the # character to end up in the variable.
  */
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_1 \
-  "*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo"
+  "*.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"
 
@@ -168,6 +190,7 @@
 #define SVN_CONFIG_DEFAULT_OPTION_STORE_SSL_CLIENT_CERT_PP   TRUE
 #define SVN_CONFIG_DEFAULT_OPTION_STORE_SSL_CLIENT_CERT_PP_PLAINTEXT \
                                                              SVN_CONFIG_ASK
+#define SVN_CONFIG_DEFAULT_OPTION_HTTP_MAX_CONNECTIONS       4
 
 /** Read configuration information from the standard sources and merge it
  * into the hash @a *cfg_hash.  If @a config_dir is not NULL it specifies a
@@ -188,15 +211,30 @@
                       const char *config_dir,
                       apr_pool_t *pool);
 
-
 /** Set @a *cfgp to an empty @c svn_config_t structure,
  * allocated in @a result_pool.
  *
  * Pass TRUE to @a section_names_case_sensitive if
  * section names are to be populated case sensitively.
  *
+ * Pass TRUE to @a option_names_case_sensitive if
+ * option names are to be populated case sensitively.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_create2(svn_config_t **cfgp,
+                   svn_boolean_t section_names_case_sensitive,
+                   svn_boolean_t option_names_case_sensitive,
+                   apr_pool_t *result_pool);
+
+/** Similar to svn_config_create2, but always passes @c FALSE to
+ * @a option_names_case_sensitive.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_config_create(svn_config_t **cfgp,
                   svn_boolean_t section_names_case_sensitive,
@@ -208,21 +246,38 @@
  * If @a file does not exist, then if @a must_exist, return an error,
  * otherwise return an empty @c svn_config_t.
  *
- * If @a section_names_case_sensitive is TRUE, populate section name hashes
- * case sensitively, except for the default SVN_CONFIG__DEFAULT_SECTION.
+ * If @a section_names_case_sensitive is @c TRUE, populate section name hashes
+ * case sensitively, except for the @c "DEFAULT" section.
  *
- * @since New in 1.7.
+ * If @a option_names_case_sensitive is @c TRUE, populate option name hashes
+ * case sensitively.
+ *
+ * @since New in 1.8.
  */
+svn_error_t *
+svn_config_read3(svn_config_t **cfgp,
+                 const char *file,
+                 svn_boolean_t must_exist,
+                 svn_boolean_t section_names_case_sensitive,
+                 svn_boolean_t option_names_case_sensitive,
+                 apr_pool_t *result_pool);
 
+/** Similar to svn_config_read3, but always passes @c FALSE to
+ * @a option_names_case_sensitive.
+ *
+ * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with 1.7 API.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_config_read2(svn_config_t **cfgp,
                  const char *file,
                  svn_boolean_t must_exist,
                  svn_boolean_t section_names_case_sensitive,
-                 apr_pool_t *pool);
+                 apr_pool_t *result_pool);
 
-/** Similar to svn_config_read2, but always passes FALSE to
- * section_names_case_sensitive.
+/** Similar to svn_config_read2, but always passes @c FALSE to
+ * @a section_names_case_sensitive.
  *
  * @deprecated Provided for backward compatibility with 1.6 API.
  */
@@ -231,7 +286,26 @@
 svn_config_read(svn_config_t **cfgp,
                 const char *file,
                 svn_boolean_t must_exist,
-                apr_pool_t *pool);
+                apr_pool_t *result_pool);
+
+/** Read configuration data from @a stream into @a *cfgp, allocated in
+ * @a result_pool.
+ *
+ * If @a section_names_case_sensitive is @c TRUE, populate section name hashes
+ * case sensitively, except for the @c "DEFAULT" section.
+ *
+ * If @a option_names_case_sensitive is @c TRUE, populate option name hashes
+ * case sensitively.
+ *
+ * @since New in 1.8.
+ */
+
+svn_error_t *
+svn_config_parse(svn_config_t **cfgp,
+                 svn_stream_t *stream,
+                 svn_boolean_t section_names_case_sensitive,
+                 svn_boolean_t option_names_case_sensitive,
+                 apr_pool_t *result_pool);
 
 /** Like svn_config_read(), but merges the configuration data from @a file
  * (a file or registry path) into @a *cfg, which was previously returned
@@ -301,6 +375,35 @@
                     const char *option,
                     svn_boolean_t value);
 
+/** Like svn_config_get(), but for 64-bit signed integers.
+ *
+ * Parses the @a option in @a section of @a cfg as an integer value,
+ * setting @a *valuep to the result.  If the option is not found, sets
+ * @a *valuep to @a default_value.  If the option is found but cannot
+ * be converted to an integer, returns an error.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_get_int64(svn_config_t *cfg,
+                     apr_int64_t *valuep,
+                     const char *section,
+                     const char *option,
+                     apr_int64_t default_value);
+
+/** Like svn_config_set(), but for 64-bit signed integers.
+ *
+ * Sets the value of @a option in @a section of @a cfg to the signed
+ * decimal @a value.
+ *
+ * @since New in 1.8.
+ */
+void
+svn_config_set_int64(svn_config_t *cfg,
+                     const char *section,
+                     const char *option,
+                     apr_int64_t value);
+
 /** Like svn_config_get(), but only for yes/no/ask values.
  *
  * Parse @a option in @a section and set @a *valuep to one of
@@ -324,6 +427,27 @@
                           const char *option,
                           const char* default_value);
 
+/** Like svn_config_get_bool(), but for tristate values.
+ *
+ * Set @a *valuep to #svn_tristate_true, #svn_tristate_false, or
+ * #svn_tristate_unknown, depending on the value of @a option in @a
+ * section of @a cfg.  True and false values are the same as for
+ * svn_config_get_bool(); @a unknown_value specifies the option value
+ * allowed for third state (#svn_tristate_unknown).
+ *
+ * Use @a default_value as the default value if @a option cannot be
+ * found.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_get_tristate(svn_config_t *cfg,
+                        svn_tristate_t *valuep,
+                        const char *section,
+                        const char *option,
+                        const char *unknown_value,
+                        svn_tristate_t default_value);
+
 /** Similar to @c svn_config_section_enumerator2_t, but is not
  * provided with a memory pool argument.
  *
@@ -574,6 +698,63 @@
                            const char *config_dir,
                            apr_pool_t *pool);
 
+
+/** Callback for svn_config_walk_auth_data().
+ *
+ * Called for each credential walked by that function (and able to be
+ * fully purged) to allow perusal and selective removal of credentials.
+ *
+ * @a cred_kind and @a realmstring specify the key of the credential.
+ * @a hash contains the hash data associated with the record.
+ *
+ * Before returning set @a *delete_cred to TRUE to remove the credential from
+ * the cache; leave @a *delete_cred unchanged or set it to FALSE to keep the
+ * credential.
+ *
+ * Implementations may return #SVN_ERR_CEASE_INVOCATION to indicate
+ * that the callback should not be called again.  Note that when that
+ * error is returned, the value of @a delete_cred will still be
+ * honored and action taken if necessary.  (For other returned errors,
+ * @a delete_cred is ignored by svn_config_walk_auth_data().)
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *
+(*svn_config_auth_walk_func_t)(svn_boolean_t *delete_cred,
+                               void *cleanup_baton,
+                               const char *cred_kind,
+                               const char *realmstring,
+                               apr_hash_t *hash,
+                               apr_pool_t *scratch_pool);
+
+/** Call @a walk_func with @a walk_baton and information describing
+ * each credential cached within the Subversion auth store located
+ * under @a config_dir.  If the callback sets its delete_cred return
+ * flag, delete the associated credential.
+ *
+ * @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,
+ * even -- for this purpose.
+ *
+ * @note Removing credentials from the config-based disk store will
+ * not also remove any related credentials from third-party password
+ * stores.  (Implementations of @a walk_func which delete credentials
+ * may wish to consult the "passtype" element of @a hash, if any, to
+ * see if a third-party store -- such as "gnome-keyring" or "kwallet"
+ * is being used to hold the most sensitive portion of the credentials
+ * for this @a cred_kind and @a realmstring.)
+ *
+ * @see svn_auth_forget_credentials()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_walk_auth_data(const char *config_dir,
+                          svn_config_auth_walk_func_t walk_func,
+                          void *walk_baton,
+                          apr_pool_t *scratch_pool);
+
 /** Put the absolute path to the user's configuration directory,
  * or to a file within that directory, into @a *path.
  *
@@ -598,6 +779,26 @@
                                 const char *fname,
                                 apr_pool_t *pool);
 
+/** Create a deep copy of the config object @a src and return
+ * it in @a cfgp, allocating the memory in @a pool.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_dup(svn_config_t **cfgp,
+               svn_config_t *src,
+               apr_pool_t *pool);
+
+/** Create a deep copy of the config hash @a src_hash and return
+ * it in @a cfg_hash, allocating the memory in @a pool.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_config_copy_config(apr_hash_t **cfg_hash,
+                       apr_hash_t *src_hash,
+                       apr_pool_t *pool);
+
 /** @} */
 
 #ifdef __cplusplus

Modified: trunk/GME/Include/subversion/svn_dav.h
==============================================================================
--- trunk/GME/Include/subversion/svn_dav.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_dav.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -53,6 +53,15 @@
 
 /** This header is *TEMPORARILY* used to transmit the delta base to the
  * server. It contains a version resource URL for what is on the client.
+ *
+ * @note The HTTP delta draft recommends an If-None-Match header
+ * holding an entity tag corresponding to the base copy that the
+ * client has.  In Subversion, it is much more natural to use a version
+ * URL to specify that base.  We'd like, then, to use the If: header
+ * to specify the URL.  Unfortunately, mod_dav sees all "State-token"
+ * items as lock tokens.  So we'll use this custom header until mod_dav
+ * and other backend APIs are taught to be less rigid, at which time
+ * we can switch to using an If: header to report our base version.
  */
 #define SVN_DAV_DELTA_BASE_HEADER "X-SVN-VR-Base"
 
@@ -171,12 +180,31 @@
 #define SVN_DAV_TXN_NAME_HEADER "SVN-Txn-Name"
 
 /** This header is used in the POST request, to pass a client supplied
- * alternative transaction name to the server, and in the the POST
+ * alternative transaction name to the server, and in the POST
  * response, to tell the client that the alternative transaction
  * resource names should be used.  (HTTP protocol v2 only)
  * @since New in 1.7.  */
 #define SVN_DAV_VTXN_NAME_HEADER "SVN-VTxn-Name"
 
+/** This header is used in the OPTIONS response to identify named
+ * skel-based POST request types which the server is prepared to
+ * handle.  (HTTP protocol v2 only)
+ * @since New in 1.8.   */
+#define SVN_DAV_SUPPORTED_POSTS_HEADER "SVN-Supported-Posts"
+
+/** This header is used in the OPTIONS response to indicate if the server
+ * wants bulk update requests (Prefer) or only accepts skelta requests (Off).
+ * If this value is On both options are allowed.
+ * @since New in 1.8.   */
+#define SVN_DAV_ALLOW_BULK_UPDATES "SVN-Allow-Bulk-Updates"
+
+/** Assuming the request target is a Subversion repository resource,
+ * this header is returned in the OPTIONS response to indicate whether
+ * the repository supports the merge tracking feature ("yes") or not
+ * ("no").
+ * @since New in 1.8.  */
+#define SVN_DAV_REPOSITORY_MERGEINFO "SVN-Repository-MergeInfo"
+
 /**
  * @name Fulltext MD5 headers
  *
@@ -249,12 +277,27 @@
  * @name Custom (extension) values for the DAV header.
  * Note that although these share the SVN_DAV_PROP_NS_DAV namespace
  * prefix, they are not properties; they are header values.
+ * @{
+ */
+
+/* ##################################################################
+ *
+ *    WARNING:  At least some versions of Microsoft's Web Folders
+ *              WebDAV client implementation are unable to handle
+ *              DAV: headers with values longer than 63 characters,
+ *              so please keep these strings within that limit.
  *
- * @{ **/
+ * ##################################################################
+ */
+
 
 /** Presence of this in a DAV header in an OPTIONS request or response
- * indicates that the transmitter supports @c svn_depth_t. */
-#define SVN_DAV_NS_DAV_SVN_DEPTH SVN_DAV_PROP_NS_DAV "svn/depth"
+ * indicates that the transmitter supports @c svn_depth_t.
+ *
+ * @since New in 1.5.
+ */
+#define SVN_DAV_NS_DAV_SVN_DEPTH\
+            SVN_DAV_PROP_NS_DAV "svn/depth"
 
 /** Presence of this in a DAV header in an OPTIONS request or response
  * indicates that the server knows how to handle merge-tracking
@@ -263,25 +306,86 @@
  * Note that this says nothing about whether the repository can handle
  * mergeinfo, only whether the server does.  For more information, see
  * mod_dav_svn/version.c:get_vsn_options().
+ *
+ * @since New in 1.5.
  */
-#define SVN_DAV_NS_DAV_SVN_MERGEINFO SVN_DAV_PROP_NS_DAV "svn/mergeinfo"
+#define SVN_DAV_NS_DAV_SVN_MERGEINFO\
+            SVN_DAV_PROP_NS_DAV "svn/mergeinfo"
 
 /** Presence of this in a DAV header in an OPTIONS response indicates
  * that the transmitter (in this case, the server) knows how to send
- * custom revprops in log responses. */
-#define SVN_DAV_NS_DAV_SVN_LOG_REVPROPS SVN_DAV_PROP_NS_DAV "svn/log-revprops"
+ * custom revprops in log responses.
+ *
+ * @since New in 1.5.
+ */
+#define SVN_DAV_NS_DAV_SVN_LOG_REVPROPS\
+            SVN_DAV_PROP_NS_DAV "svn/log-revprops"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to handle
+ * a replay of a directory in the repository (not root).
+ *
+ * @since New in 1.5.
+ */
+#define SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY\
+            SVN_DAV_PROP_NS_DAV "svn/partial-replay"
 
 /** Presence of this in a DAV header in an OPTIONS response indicates
  * that the transmitter (in this case, the server) knows how to enforce
- * old-value atomicity in PROPPATCH (for editing revprops). */
+ * old-value atomicity in PROPPATCH (for editing revprops).
+ *
+ * @since New in 1.7.
+ */
 #define SVN_DAV_NS_DAV_SVN_ATOMIC_REVPROPS\
             SVN_DAV_PROP_NS_DAV "svn/atomic-revprops"
 
 /** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to get
+ * inherited properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_DAV_NS_DAV_SVN_INHERITED_PROPS\
+            SVN_DAV_PROP_NS_DAV "svn/inherited-props"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to
+ * properly handle ephemeral (that is, deleted-just-before-commit) FS
+ * transaction properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_DAV_NS_DAV_SVN_EPHEMERAL_TXNPROPS\
+            SVN_DAV_PROP_NS_DAV "svn/ephemeral-txnprops"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) supports serving
+ * properties inline in update editor when 'send-all' is 'false'.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_DAV_NS_DAV_SVN_INLINE_PROPS\
+            SVN_DAV_PROP_NS_DAV "svn/inline-props"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
  * that the transmitter (in this case, the server) knows how to handle
- * a replay of a directory in the repository (not root). */
-#define SVN_DAV_NS_DAV_SVN_PARTIAL_REPLAY\
-            SVN_DAV_PROP_NS_DAV "svn/partial-replay"
+ * a replay of a revision resource.  Transmitters must be
+ * HTTP-v2-enabled to support this feature.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_DAV_NS_DAV_SVN_REPLAY_REV_RESOURCE\
+            SVN_DAV_PROP_NS_DAV "svn/replay-rev-resource"
+
+/** Presence of this in a DAV header in an OPTIONS response indicates
+ * that the transmitter (in this case, the server) knows how to handle
+ * a reversed fetch of file versions.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_DAV_NS_DAV_SVN_REVERSE_FILE_REVS\
+            SVN_DAV_PROP_NS_DAV "svn/reverse-file-revs"
+
 
 /** @} */
 

Modified: trunk/GME/Include/subversion/svn_delta.h
==============================================================================
--- trunk/GME/Include/subversion/svn_delta.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_delta.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -366,10 +366,26 @@
  *
  * @a source and @a target are both readable generic streams.  When we call
  * svn_txdelta_next_window() on @a *stream, it will read from @a source and
- * @a target to gather as much data as it needs.
+ * @a target to gather as much data as it needs.  If @a calculate_checksum
+ * is set, you may call svn_txdelta_md5_digest() to get an MD5 checksum
+ * for @a target.
  *
  * Do any necessary allocation in a sub-pool of @a pool.
+ *
+ * @since New in 1.8.
+ */
+void
+svn_txdelta2(svn_txdelta_stream_t **stream,
+             svn_stream_t *source,
+             svn_stream_t *target,
+             svn_boolean_t calculate_checksum,
+             apr_pool_t *pool);
+
+/** Similar to svn_txdelta2 but always calculating the target checksum.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 void
 svn_txdelta(svn_txdelta_stream_t **stream,
             svn_stream_t *source,
@@ -435,6 +451,20 @@
                           apr_pool_t *pool);
 
 
+/** Send the @a contents of length @a len as a txdelta against an empty
+ * source directly to window-handler @a handler/@a handler_baton.
+ *
+ * All temporary allocation is performed in @a pool.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_txdelta_send_contents(const unsigned char *contents,
+                          apr_size_t len,
+                          svn_txdelta_window_handler_t handler,
+                          void *handler_baton,
+                          apr_pool_t *pool);
+
 /** Prepare to apply a text delta.  @a source is a readable generic stream
  * yielding the source data, @a target is a writable generic stream to
  * write target data to, and allocation takes place in a sub-pool of
@@ -466,6 +496,7 @@
 
 
 
+
 /*** Producing and consuming svndiff-format text deltas.  ***/
 
 /** Prepare to produce an svndiff-format diff from text delta windows.
@@ -649,10 +680,12 @@
  *
  * Each of these takes a directory baton, indicating the directory
  * in which the change takes place, and a @a path argument, giving the
- * path (relative to the root of the edit) of the file,
- * subdirectory, or directory entry to change. Editors will usually
- * want to join this relative path with some base stored in the edit
- * baton (e.g. a URL, a location in the OS filesystem).
+ * path of the file, subdirectory, or directory entry to change.
+ *
+ * The @a path argument to each of the callbacks is relative to the
+ * root of the edit.  Editors will usually want to join this relative
+ * path with some base stored in the edit baton (e.g. a URL, or a
+ * location in the OS filesystem).
  *
  * Since every call requires a parent directory baton, including
  * @c add_directory and @c open_directory, where do we ever get our
@@ -789,8 +822,9 @@
  * number of operations later.  As a result, an editor driver must not
  * assume that an error from an editing function resulted from the
  * particular operation being detected.  Moreover, once an editing
- * function returns an error, the edit is dead; the only further
- * operation which may be called on the editor is abort_edit.
+ * function (including @c close_edit) returns an error, the edit is
+ * dead; the only further operation which may be called on the editor
+ * is @c abort_edit.
  */
 typedef struct svn_delta_editor_t
 {
@@ -826,7 +860,7 @@
                             void **root_baton);
 
 
-  /** Remove the directory entry named @a path, a child of the directory
+  /** Remove the directory entry at @a path, a child of the directory
    * represented by @a parent_baton.  If @a revision is a valid
    * revision number, it is used as a sanity check to ensure that you
    * are really removing the revision of @a path that you think you are.
@@ -847,9 +881,10 @@
                                apr_pool_t *scratch_pool);
 
 
-  /** We are going to add a new subdirectory named @a path.  We will use
+  /** We are going to add a new subdirectory at @a path, a child of
+   * the directory represented by @a parent_baton.  We will use
    * the value this callback stores in @a *child_baton as the
-   * @a parent_baton for further changes in the new subdirectory.
+   * parent baton for further changes in the new subdirectory.
    *
    * If @a copyfrom_path is non- at c NULL, this add has history (i.e., is a
    * copy), and the origin of the copy may be recorded as
@@ -866,10 +901,10 @@
                                 apr_pool_t *result_pool,
                                 void **child_baton);
 
-  /** We are going to make changes in a subdirectory (of the directory
-   * identified by @a parent_baton). The subdirectory is specified by
-   * @a path. The callback must store a value in @a *child_baton that
-   * should be used as the @a parent_baton for subsequent changes in this
+  /** We are going to make changes in the subdirectory at @a path, a
+   * child of the directory represented by @a parent_baton.
+   * The callback must store a value in @a *child_baton that
+   * should be used as the parent baton for subsequent changes in this
    * subdirectory.  If a valid revnum, @a base_revision is the current
    * revision of the subdirectory.
    *
@@ -912,8 +947,9 @@
 
   /** In the directory represented by @a parent_baton, indicate that
    * @a path is present as a subdirectory in the edit source, but
-   * cannot be conveyed to the edit consumer (perhaps because of
-   * authorization restrictions).
+   * cannot be conveyed to the edit consumer.  Currently, this would
+   * only occur because of authorization restrictions, but may change
+   * in the future.
    *
    * Any temporary allocations may be performed in @a scratch_pool.
    */
@@ -921,7 +957,8 @@
                                    void *parent_baton,
                                    apr_pool_t *scratch_pool);
 
-  /** We are going to add a new file named @a path.  The callback can
+  /** We are going to add a new file at @a path, a child of the
+   * directory represented by @a parent_baton.  The callback can
    * store a baton for this new file in @a **file_baton; whatever value
    * it stores there should be passed through to @c apply_textdelta.
    *
@@ -950,8 +987,8 @@
                            apr_pool_t *result_pool,
                            void **file_baton);
 
-  /** We are going to make change to a file named @a path, which resides
-   * in the directory identified by @a parent_baton.
+  /** We are going to make changes to a file at @a path, a child of the
+   * directory represented by @a parent_baton.
    *
    * The callback can store a baton for this new file in @a **file_baton;
    * whatever value it stores there should be passed through to
@@ -1035,8 +1072,9 @@
 
   /** In the directory represented by @a parent_baton, indicate that
    * @a path is present as a file in the edit source, but cannot be
-   * conveyed to the edit consumer (perhaps because of authorization
-   * restrictions).
+   * cannot be conveyed to the edit consumer.  Currently, this would
+   * only occur because of authorization restrictions, but may change
+   * in the future.
    *
    * Any temporary allocations may be performed in @a scratch_pool.
    */
@@ -1164,7 +1202,8 @@
 /** Callback function type for svn_delta_path_driver().
  *
  * The handler of this callback is given the callback baton @a
- * callback_baton, @a path, and the @a parent_baton which represents
+ * callback_baton, @a path which is a relpath relative to the
+ * root of the edit, and the @a parent_baton which represents
  * path's parent directory as created by the editor passed to
  * svn_delta_path_driver().
  *
@@ -1190,25 +1229,51 @@
   apr_pool_t *pool);
 
 
-/** Drive @a editor (with its @a edit_baton) in such a way that
- * each path in @a paths is traversed in a depth-first fashion.  As
- * each path is hit as part of the editor drive, use @a
- * callback_func and @a callback_baton to allow the caller to handle
+/** Drive @a editor (with its @a edit_baton) to visit each path in @a paths.
+ * As each path is hit as part of the editor drive, use
+ * @a callback_func and @a callback_baton to allow the caller to handle
  * the portion of the editor drive related to that path.
  *
- * Use @a revision as the revision number passed to intermediate
- * directory openings.
+ * Each path in @a paths is a (const char *) relpath, relative
+ * to the root path of the @a edit. The editor drive will be
+ * performed in the same order as @a paths. The paths should be sorted
+ * using something like svn_sort_compare_paths to ensure that a depth-first
+ * pattern is observed for directory/file baton creation. If @a sort_paths
+ * is set, the function will sort the paths for you. Some callers may need
+ * further customization of the order (ie. libsvn_delta/compat.c).
  *
- * Use @a pool for all necessary allocations.
+ * Use @a scratch_pool for all necessary allocations.
+ *
+ * @since New in 1.8.
  */
 svn_error_t *
+svn_delta_path_driver2(const svn_delta_editor_t *editor,
+                       void *edit_baton,
+                       const apr_array_header_t *paths,
+                       svn_boolean_t sort_paths,
+                       svn_delta_path_driver_cb_func_t callback_func,
+                       void *callback_baton,
+                       apr_pool_t *scratch_pool);
+
+
+/** Similar to svn_delta_path_driver2, but takes an (unused) revision,
+ * and will sort the provided @a paths using svn_sort_compare_paths.
+ *
+ * @note In versions prior to 1.8, this function would modify the order
+ * of elements in @a paths, despite the 'const' marker on the parameter.
+ * This has been fixed in 1.8.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
 svn_delta_path_driver(const svn_delta_editor_t *editor,
                       void *edit_baton,
                       svn_revnum_t revision,
                       const apr_array_header_t *paths,
                       svn_delta_path_driver_cb_func_t callback_func,
                       void *callback_baton,
-                      apr_pool_t *pool);
+                      apr_pool_t *scratch_pool);
 
 /** @} */
 

Modified: trunk/GME/Include/subversion/svn_diff.h
==============================================================================
--- trunk/GME/Include/subversion/svn_diff.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_diff.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -279,6 +279,9 @@
  * Differences, similarities, and conflicts are described by lining up
  * "ranges" of data.
  *
+ * Any of the function pointers in this vtable may be NULL to ignore the
+ * corresponding kinds of output.
+ *
  * @note These callbacks describe data ranges in units of "tokens".
  * A "token" is whatever you've defined it to be in your datasource
  * @c svn_diff_fns_t vtable.
@@ -477,6 +480,7 @@
  * - --ignore-space-change, -b
  * - --ignore-all-space, -w
  * - --ignore-eol-style
+ * - --show-c-function, -p @since New in 1.5.
  * - --unified, -u (for compatibility, does nothing).
  */
 svn_error_t *
@@ -744,17 +748,21 @@
 /** Outputs the @a diff object generated by svn_diff_mem_string_diff()
  * in unified diff format on @a output_stream, using @a original
  * and @a modified for the text in the output.
- * A diff header is only written to the output if @a with_diff_header
- * is TRUE.
+ *
+ * If @a with_diff_header is TRUE, write a diff header ("---" and "+++"
+ * lines), using @a original_header and @a modified_header to fill the field
+ * after the "---" and "+++" markers; otherwise @a original_header and
+ * @a modified_header are ignored and may be NULL.
  *
  * Outputs the header and hunk delimiters in @a header_encoding.
  * A @a hunk_delimiter can optionally be specified.
  * If @a hunk_delimiter is NULL, use the default hunk delimiter "@@".
  *
- * @a original_header and @a modified header are
- * used to fill the field after the "---" and "+++" header markers.
+ * As a special case, if the hunk delimiter is "##", then for an incomplete
+ * final line use the text "\ No newline at end of property" instead of
+ * "\ No newline at end of file".
  *
- * @since New in 1.7.
+ * @since New in 1.7. Hunk delimiter "##" has the special meaning since 1.8.
  */
 svn_error_t *
 svn_diff_mem_string_output_unified2(svn_stream_t *output_stream,
@@ -839,7 +847,6 @@
                                  apr_pool_t *pool);
 
 
-
 
 /* Diff parsing. If you want to apply a patch to a working copy
  * rather than parse it, see svn_client_patch(). */
@@ -1044,7 +1051,7 @@
   const char *new_filename;
 
   /**
-   * An array containing an svn_diff_hunk_t object for each hunk parsed
+   * An array containing an svn_diff_hunk_t * for each hunk parsed
    * from the patch. */
   apr_array_header_t *hunks;
 
@@ -1062,12 +1069,12 @@
   svn_boolean_t reverse;
 } svn_patch_t;
 
-/* An opaque type representing an open patch file.
+/** An opaque type representing an open patch file.
  *
  * @since New in 1.7. */
 typedef struct svn_patch_file_t svn_patch_file_t;
 
-/* Open @a patch_file at @a local_abspath.
+/** Open @a patch_file at @a local_abspath.
  * Allocate @a patch_file in @a result_pool.
  *
  * @since New in 1.7. */

Modified: trunk/GME/Include/subversion/svn_dirent_uri.h
==============================================================================
--- trunk/GME/Include/subversion/svn_dirent_uri.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_dirent_uri.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -28,24 +28,24 @@
  *  - a dirent is a path on (local) disc or a UNC path (Windows) in
  *    either relative or absolute format.
  *    Examples:
- *       "/foo/bar", "X:/temp", "//server/share", "A:/" (Windows only)
+ *       "/foo/bar", "X:/temp", "//server/share", "A:/" (Windows only), ""
  *    But not:
  *       "http://server"
  *
- * - a uri, for our purposes, is a percent-encoded, absolute path
+ *  - a uri, for our purposes, is a percent-encoded, absolute path
  *    (URI) that starts with a schema definition.  In practice, these
  *    tend to look like URLs, but never carry query strings.
  *    Examples:
  *       "http://server", "file:///path/to/repos",
  *       "svn+ssh://user@host:123/My%20Stuff/file.doc"
  *    But not:
- *       "file", "dir/file", "A:/dir", "/My%20Stuff/file.doc"
+ *       "file", "dir/file", "A:/dir", "/My%20Stuff/file.doc", ""
  *
  *  - a relative path (relpath) is an unrooted path that can be joined
  *    to any other relative path, uri or dirent. A relative path is
  *    never rooted/prefixed by a '/'.
  *    Examples:
- *       "file", "dir/file", "dir/subdir/../file"
+ *       "file", "dir/file", "dir/subdir/../file", ""
  *    But not:
  *       "/file", "http://server/file"
  *
@@ -54,6 +54,8 @@
  * the path string if it's a dirent or a URI, it's up to the API user to
  * make this choice. See also issue #2028.
  *
+ * All incoming and outgoing paths are non-NULL unless otherwise documented.
+ *
  * All of these functions expect paths passed into them to be in canonical
  * form, except:
  *
@@ -122,6 +124,10 @@
  * source -- such as from the network -- is converted to a dirent it
  * should be tested with svn_dirent_is_under_root() before you can
  * assume the path to be a safe local path.
+ *
+ * MEMORY ALLOCATION: A function documented as allocating the result
+ * in a pool may instead return a static string such as "." or "". If
+ * the result is equal to an input, it will duplicate the input.
  */
 
 #ifndef SVN_DIRENT_URI_H
@@ -141,34 +147,39 @@
 /** Convert @a dirent from the local style to the canonical internal style.
  * "Local style" means native path separators and "." for the empty path.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 const char *
 svn_dirent_internal_style(const char *dirent,
-                          apr_pool_t *pool);
+                          apr_pool_t *result_pool);
 
 /** Convert @a dirent from the internal style to the local style.
  * "Local style" means native path separators and "." for the empty path.
  * If the input is not canonical, the output may not be canonical.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 const char *
 svn_dirent_local_style(const char *dirent,
-                       apr_pool_t *pool);
+                       apr_pool_t *result_pool);
 
 /** Convert @a relpath from the local style to the canonical internal style.
  * "Local style" means native path separators and "." for the empty path.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 const char *
 svn_relpath__internal_style(const char *relpath,
-                            apr_pool_t *pool);
+                            apr_pool_t *result_pool);
 
 
-/** Join a base dirent (@a base) with a component (@a component), allocated in
- * @a pool.
+/** Join a base dirent (@a base) with a component (@a component).
  *
  * If either @a base or @a component is the empty string, then the other
  * argument will be copied and returned.  If both are the empty string then
@@ -181,15 +192,17 @@
  * dirents. Only for "internal" canonicalized dirents, since it uses '/'
  * for the separator.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 char *
 svn_dirent_join(const char *base,
                 const char *component,
-                apr_pool_t *pool);
+                apr_pool_t *result_pool);
 
-/** Join multiple components onto a @a base dirent, allocated in @a pool. The
- * components are terminated by a @c NULL.
+/** Join multiple components onto a @a base dirent. The components are
+ * terminated by a @c NULL.
  *
  * If any component is the empty string, it will be ignored.
  *
@@ -198,26 +211,30 @@
  *
  * See svn_dirent_join() for further notes about joining dirents.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 char *
-svn_dirent_join_many(apr_pool_t *pool,
+svn_dirent_join_many(apr_pool_t *result_pool,
                      const char *base,
                      ...);
 
-/** Join a base relpath (@a base) with a component (@a component), allocating
- * the result in @a pool. @a component need not be a single component.
+/** Join a base relpath (@a base) with a component (@a component).
+ * @a component need not be a single component.
  *
  * If either @a base or @a component is the empty path, then the other
  * argument will be copied and returned.  If both are the empty path the
  * empty path is returned.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 char *
 svn_relpath_join(const char *base,
                  const char *component,
-                 apr_pool_t *pool);
+                 apr_pool_t *result_pool);
 
 /** Gets the name of the specified canonicalized @a dirent as it is known
  * within its parent directory. If the @a dirent is root, return "". The
@@ -225,8 +242,8 @@
  *
  * Example: svn_dirent_basename("/foo/bar") -> "bar"
  *
- * The returned basename will be allocated in @a pool. If @a pool is NULL
- * a pointer to the basename in @a dirent is returned.
+ * If @a result_pool is NULL, return a pointer to the basename in @a dirent,
+ * otherwise allocate the result in @a result_pool.
  *
  * @note If an empty string is passed, then an empty string will be returned.
  *
@@ -234,7 +251,7 @@
  */
 const char *
 svn_dirent_basename(const char *dirent,
-                    apr_pool_t *pool);
+                    apr_pool_t *result_pool);
 
 /** Get the dirname of the specified canonicalized @a dirent, defined as
  * the dirent with its basename removed.
@@ -242,16 +259,15 @@
  * If @a dirent is root  ("/", "X:/", "//server/share/") or "", it is returned
  * unchanged.
  *
- * The returned dirname will be allocated in @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.6.
  */
 char *
 svn_dirent_dirname(const char *dirent,
-                   apr_pool_t *pool);
+                   apr_pool_t *result_pool);
 
-/** Divide the canonicalized @a dirent into @a *dirpath and @a
- * *base_name, allocated in @a pool.
+/** Divide the canonicalized @a dirent into @a *dirpath and @a *base_name.
  *
  * If @a dirpath or @a base_name is NULL, then don't set that one.
  *
@@ -272,16 +288,17 @@
  *             - <pre>"X:foo"         ==>  "X:" and "foo"</pre>
  *  Posix:     - <pre>"X:foo"         ==>  ""   and "X:foo"</pre>
  *
+ * Allocate the results in @a result_pool.
+ *
  * @since New in 1.7.
  */
 void
 svn_dirent_split(const char **dirpath,
                  const char **base_name,
                  const char *dirent,
-                 apr_pool_t *pool);
+                 apr_pool_t *result_pool);
 
-/** Divide the canonicalized @a relpath into @a *dirpath and @a
- * *base_name, allocated in @a pool.
+/** Divide the canonicalized @a relpath into @a *dirpath and @a *base_name.
  *
  * If @a dirpath or @a base_name is NULL, then don't set that one.
  *
@@ -296,13 +313,15 @@
  *             - <pre>"bar"          ==>  ""  and "bar"</pre>
  *             - <pre>""              ==>  ""   and ""</pre>
  *
+ * Allocate the results in @a result_pool.
+ *
  * @since New in 1.7.
  */
 void
 svn_relpath_split(const char **dirpath,
                   const char **base_name,
                   const char *relpath,
-                  apr_pool_t *pool);
+                  apr_pool_t *result_pool);
 
 /** Get the basename of the specified canonicalized @a relpath.  The
  * basename is defined as the last component of the relpath.  If the @a
@@ -311,8 +330,8 @@
  *
  * Example: svn_relpath_basename("/trunk/foo/bar") -> "bar"
  *
- * The returned basename will be allocated in @a pool. If @a
- * pool is NULL a pointer to the basename in @a relpath is returned.
+ * If @a result_pool is NULL, return a pointer to the basename in @a relpath,
+ * otherwise allocate the result in @a result_pool.
  *
  * @note If an empty string is passed, then an empty string will be returned.
  *
@@ -320,24 +339,24 @@
  */
 const char *
 svn_relpath_basename(const char *relpath,
-                     apr_pool_t *pool);
+                     apr_pool_t *result_pool);
 
 /** Get the dirname of the specified canonicalized @a relpath, defined as
  * the relpath with its basename removed.
  *
  * If @a relpath is empty, "" is returned.
  *
- * The returned relpath will be allocated in @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
  */
 char *
 svn_relpath_dirname(const char *relpath,
-                    apr_pool_t *pool);
+                    apr_pool_t *result_pool);
 
 
 /** Divide the canonicalized @a uri into a uri @a *dirpath and a
- * (URI-decoded) relpath @a *base_name, allocated in @a pool.
+ * (URI-decoded) relpath @a *base_name.
  *
  * If @a dirpath or @a base_name is NULL, then don't set that one.
  *
@@ -350,28 +369,30 @@
  * Examples:
  *   - <pre>"http://server/foo/bar"  ==>  "http://server/foo" and "bar"</pre>
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 void
 svn_uri_split(const char **dirpath,
               const char **base_name,
               const char *uri,
-              apr_pool_t *pool);
+              apr_pool_t *result_pool);
 
 /** Get the (URI-decoded) basename of the specified canonicalized @a
  * uri.  The basename is defined as the last component of the uri.  If
- * the @a uri is root then that is returned.  Otherwise, the returned
- * value will have no slashes in it.
+ * the @a uri is root, return "".  The returned value will have no
+ * slashes in it.
  *
  * Example: svn_uri_basename("http://server/foo/bar") -> "bar"
  *
- * The returned basename will be allocated in @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
  */
 const char *
 svn_uri_basename(const char *uri,
-                 apr_pool_t *pool);
+                 apr_pool_t *result_pool);
 
 /** Get the dirname of the specified canonicalized @a uri, defined as
  * the uri with its basename removed.
@@ -379,13 +400,13 @@
  * If @a uri is root (e.g. "http://server"), it is returned
  * unchanged.
  *
- * The returned dirname will be allocated in @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
  */
 char *
 svn_uri_dirname(const char *uri,
-                apr_pool_t *pool);
+                apr_pool_t *result_pool);
 
 /** Return TRUE if @a dirent is considered absolute on the platform at
  * hand. E.g. '/foo' on Posix platforms or 'X:/foo', '//server/share/foo'
@@ -431,13 +452,13 @@
  *
  * and possibly other semantically inoperative transformations.
  *
- * The returned dirent may be allocated statically or from @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.6.
  */
 const char *
 svn_dirent_canonicalize(const char *dirent,
-                        apr_pool_t *pool);
+                        apr_pool_t *result_pool);
 
 
 /** Return a new relpath like @a relpath, but transformed such that some types
@@ -450,13 +471,13 @@
  *
  * and possibly other semantically inoperative transformations.
  *
- * The returned relpath may be allocated statically or from @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
  */
 const char *
 svn_relpath_canonicalize(const char *relpath,
-                         apr_pool_t *pool);
+                         apr_pool_t *result_pool);
 
 
 /** Return a new uri like @a uri, but transformed such that some types
@@ -474,16 +495,17 @@
  *
  * and possibly other semantically inoperative transformations.
  *
- * The returned uri may be allocated statically or from @a pool.
+ * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
  */
 const char *
 svn_uri_canonicalize(const char *uri,
-                     apr_pool_t *pool);
+                     apr_pool_t *result_pool);
 
-/** Return @c TRUE iff @a dirent is canonical.  Use @a pool for temporary
- * allocations.
+/** Return @c TRUE iff @a dirent is canonical.
+ *
+ * Use @a scratch_pool for temporary allocations.
  *
  * @note The test for canonicalization is currently defined as
  * "looks exactly the same as @c svn_dirent_canonicalize() would make
@@ -494,7 +516,7 @@
  */
 svn_boolean_t
 svn_dirent_is_canonical(const char *dirent,
-                        apr_pool_t *pool);
+                        apr_pool_t *scratch_pool);
 
 /** Return @c TRUE iff @a relpath is canonical.
  *
@@ -504,37 +526,42 @@
 svn_boolean_t
 svn_relpath_is_canonical(const char *relpath);
 
-/** Return @c TRUE iff @a uri is canonical.  Use @a pool for temporary
- * allocations.
+/** Return @c TRUE iff @a uri is canonical.
+ *
+ * Use @a scratch_pool for temporary allocations.
  *
  * @see svn_uri_canonicalize()
  * @since New in 1.7.
  */
 svn_boolean_t
 svn_uri_is_canonical(const char *uri,
-                     apr_pool_t *pool);
+                     apr_pool_t *scratch_pool);
 
 /** Return the longest common dirent shared by two canonicalized dirents,
  * @a dirent1 and @a dirent2.  If there's no common ancestor, return the
  * empty path.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 char *
 svn_dirent_get_longest_ancestor(const char *dirent1,
                                 const char *dirent2,
-                                apr_pool_t *pool);
+                                apr_pool_t *result_pool);
 
 /** Return the longest common path shared by two relative paths,
  * @a relpath1 and @a relpath2.  If there's no common ancestor, return the
  * empty path.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 char *
 svn_relpath_get_longest_ancestor(const char *relpath1,
                                  const char *relpath2,
-                                 apr_pool_t *pool);
+                                 apr_pool_t *result_pool);
 
 /** Return the longest common path shared by two canonicalized uris,
  * @a uri1 and @a uri2.  If there's no common ancestor, return the
@@ -544,37 +571,35 @@
  * resources), and (b) share a common ancestor in their path
  * component, i.e. 'protocol://' is not a sufficient ancestor.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 char *
 svn_uri_get_longest_ancestor(const char *uri1,
                              const char *uri2,
-                             apr_pool_t *pool);
+                             apr_pool_t *result_pool);
 
 /** Convert @a relative canonicalized dirent to an absolute dirent and
- * return the results in @a *pabsolute, allocated in @a pool.
+ * return the results in @a *pabsolute.
  * Raise SVN_ERR_BAD_FILENAME if the absolute dirent cannot be determined.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.6.
  */
 svn_error_t *
 svn_dirent_get_absolute(const char **pabsolute,
                         const char *relative,
-                        apr_pool_t *pool);
-
-/** Similar to svn_uri_skip_ancestor(), except that if @a child_uri is
- * the same as @a parent_uri, it is not considered a child, so the result
- * is @c NULL; an empty string is never returned.
- */
-const char *
-svn_uri__is_child(const char *parent_uri,
-                  const char *child_uri,
-                  apr_pool_t *pool);
+                        apr_pool_t *result_pool);
 
 /** Similar to svn_dirent_skip_ancestor(), except that if @a child_dirent is
  * the same as @a parent_dirent, it is not considered a child, so the result
  * is @c NULL; an empty string is never returned.
  *
+ * If @a result_pool is NULL, return a pointer into @a child_dirent, otherwise
+ * allocate the result in @a result_pool.
+ *
  * ### TODO: Deprecate, as the semantics are trivially
  * obtainable from *_skip_ancestor().
  *
@@ -583,16 +608,7 @@
 const char *
 svn_dirent_is_child(const char *parent_dirent,
                     const char *child_dirent,
-                    apr_pool_t *pool);
-
-/** Similar to svn_relpath_skip_ancestor(), except that if @a child_relpath is
- * the same as @a parent_relpath, it is not considered a child, so the result
- * is @c NULL; an empty string is never returned.
- */
-const char *
-svn_relpath__is_child(const char *parent_relpath,
-                      const char *child_relpath,
-                      apr_pool_t *pool);
+                    apr_pool_t *result_pool);
 
 /** Return TRUE if @a parent_dirent is an ancestor of @a child_dirent or
  * the dirents are equal, and FALSE otherwise.
@@ -606,13 +622,6 @@
 svn_dirent_is_ancestor(const char *parent_dirent,
                        const char *child_dirent);
 
-/** Return TRUE if @a parent_relpath is an ancestor of @a child_relpath or
- * the relpaths are equal, and FALSE otherwise.
- */
-svn_boolean_t
-svn_relpath__is_ancestor(const char *parent_relpath,
-                         const char *child_relpath);
-
 /** Return TRUE if @a parent_uri is an ancestor of @a child_uri or
  * the uris are equal, and FALSE otherwise.
  */
@@ -649,6 +658,7 @@
 /** Return the URI-decoded relative path of @a child_uri that is below
  * @a parent_uri, or just "" if @a parent_uri is equal to @a child_uri. If
  * @a child_uri is not below or equal to @a parent_uri, return NULL.
+ *
  * Allocate the result in @a result_pool.
  *
  * @since New in 1.7.
@@ -686,8 +696,8 @@
  * If there are no items in @a targets, set @a *pcommon and (if
  * applicable) @a *pcondensed_targets to @c NULL.
  *
- * Allocates @a *pcommon and @a *targets in @a result_pool. All
- * intermediate allocations will be performed in @a scratch_pool.
+ * Allocate the results in @a result_pool. Use @a scratch_pool for
+ * temporary allocations.
  *
  * @since New in 1.7.
  */
@@ -727,8 +737,8 @@
  * If there are no items in @a targets, set @a *pcommon and (if
  * applicable) @a *pcondensed_targets to @c NULL.
  *
- * Allocate @a *pcommon and @a *targets in @a result_pool. Temporary
- * allocations will be performed in @a scratch_pool.
+ * Allocate the results in @a result_pool. Use @a scratch_pool for
+ * temporary allocations.
  *
  * @since New in 1.7.
  */
@@ -745,12 +755,14 @@
  * it resolves to a path above @a base_path, or if @a path is an absolute
  * path, then set @a *under_root to @c FALSE. Otherwise, set @a *under_root
  * to @c TRUE and, if @a result_path is not @c NULL, set @a *result_path to
- * the resulting path, allocated in @a result_pool.
+ * the resulting path.
  *
  * @a path need not be canonical. @a base_path must be canonical and
  * @a *result_path will be canonical.
  *
- * Note: Use of this function is strongly encouraged. Do not roll your own.
+ * Allocate the result in @a result_pool.
+ *
+ * @note Use of this function is strongly encouraged. Do not roll your own.
  * (http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-3846)
  *
  * @since New in 1.7.
@@ -765,22 +777,26 @@
 /** Set @a *dirent to the path corresponding to the file:// URL @a url, using
  * the platform-specific file:// rules.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 svn_error_t *
 svn_uri_get_dirent_from_file_url(const char **dirent,
                                  const char *url,
-                                 apr_pool_t *pool);
+                                 apr_pool_t *result_pool);
 
 /** Set @a *url to a file:// URL, corresponding to @a dirent using the
  * platform specific dirent and file:// rules.
  *
+ * Allocate the result in @a result_pool.
+ *
  * @since New in 1.7.
  */
 svn_error_t *
 svn_uri_get_file_url_from_dirent(const char **url,
                                  const char *dirent,
-                                 apr_pool_t *pool);
+                                 apr_pool_t *result_pool);
 
 #ifdef __cplusplus
 }

Modified: trunk/GME/Include/subversion/svn_error.h
==============================================================================
--- trunk/GME/Include/subversion/svn_error.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_error.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -66,6 +66,36 @@
              apr_size_t bufsize);
 
 
+/**
+ * Return the symbolic name of an error code.  If the error code
+ * is in svn_error_codes.h, return the name of the macro as a string.
+ * If the error number is not recognised, return @c NULL.
+ *
+ * An error number may not be recognised because it was defined in a future
+ * version of Subversion (e.g., a 1.9.x server may transmit a defined-in-1.9.0
+ * error number to a 1.8.x client).
+ *
+ * An error number may be recognised @em incorrectly if the @c apr_status_t
+ * value originates in another library (such as libserf) which also uses APR.
+ * (This is a theoretical concern only: the @c apr_err member of #svn_error_t
+ * should never contain a "foreign" @c apr_status_t value, and
+ * in any case Subversion and Serf use non-overlapping subsets of the
+ * @c APR_OS_START_USERERR range.)
+ *
+ * Support for error codes returned by APR itself (i.e., not in the
+ * @c APR_OS_START_USERERR range, as defined in apr_errno.h) may be implemented
+ * in the future.
+ *
+ * @note In rare cases, a single numeric code has more than one symbolic name.
+ * (For example, #SVN_ERR_WC_NOT_DIRECTORY and #SVN_ERR_WC_NOT_WORKING_COPY).
+ * In those cases, it is not guaranteed which symbolic name is returned.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_error_symbolic_name(apr_status_t statcode);
+
+
 /** If @a err has a custom error message, return that, otherwise
  * store the generic error string associated with @a err->apr_err into
  * @a buf (terminating with NULL) and return @a buf.
@@ -210,7 +240,7 @@
 svn_error_clear(svn_error_t *error);
 
 
-#if defined(SVN_DEBUG)
+#if defined(SVN_ERR__TRACING)
 /** Set the error location for debug mode. */
 void
 svn_error__locate(const char *file,
@@ -315,9 +345,10 @@
  * @since New in 1.7.
  */
 #ifdef SVN_ERR__TRACING
-#define SVN_ERR__TRACED "traced call"
+svn_error_t *
+svn_error__trace(const char *file, long line, svn_error_t *err);
 
-#define svn_error_trace(expr)  svn_error_quick_wrap((expr), SVN_ERR__TRACED)
+#define svn_error_trace(expr)  svn_error__trace(__FILE__, __LINE__, (expr))
 #else
 #define svn_error_trace(expr)  (expr)
 #endif
@@ -408,7 +439,7 @@
    err->apr_err == SVN_ERR_RA_NOT_LOCKED ||                 \
    err->apr_err == SVN_ERR_FS_LOCK_EXPIRED)
 
-/** Evaluates to @c TRUE iff @a apr_err (of type #apr_status_t) is in the given
+/** Evaluates to @c TRUE iff @a apr_err (of type apr_status_t) is in the given
  * @a category, which should be one of the @c SVN_ERR_*_CATEGORY_START
  * constants.
  *
@@ -460,6 +491,31 @@
     abort();                                                 \
   } while (1)
 
+/** Like SVN_ERR_ASSERT(), but append ERR to the returned error chain.
+ *
+ * If EXPR is false, return a malfunction error whose chain includes ERR.
+ * If EXPR is true, do nothing.  (In particular, this does not clear ERR.)
+ *
+ * Types: (svn_boolean_t expr, svn_error_t *err)
+ *
+ * @since New in 1.8.
+ */
+#ifdef __clang_analyzer__
+#include <assert.h>
+/* Just ignore ERR.  If the assert triggers, it'll be our least concern. */
+#define SVN_ERR_ASSERT_E(expr, err)       assert((expr))
+#else
+#define SVN_ERR_ASSERT_E(expr, err)                                      \
+  do {                                                                  \
+    if (!(expr)) {                                                      \
+      return svn_error_compose_create(                                  \
+               svn_error__malfunction(TRUE, __FILE__, __LINE__, #expr), \
+               (err));                                                  \
+    }                                                                   \
+  } while (0)
+#endif
+
+
 /** Check that a condition is true: if not, report an error and possibly
  * terminate the program.
  *
@@ -478,12 +534,19 @@
  * evaluation of this expression is not compiled out in release-mode builds.
  *
  * @since New in 1.6.
+ *
+ * @see SVN_ERR_ASSERT_E()
  */
+#ifdef __clang_analyzer__
+#include <assert.h>
+#define SVN_ERR_ASSERT(expr)       assert((expr))
+#else
 #define SVN_ERR_ASSERT(expr)                                            \
   do {                                                                  \
     if (!(expr))                                                        \
       SVN_ERR(svn_error__malfunction(TRUE, __FILE__, __LINE__, #expr)); \
   } while (0)
+#endif
 
 /** Similar to SVN_ERR_ASSERT(), but without the option of returning
  * an error to the calling function.

Modified: trunk/GME/Include/subversion/svn_error_codes.h
==============================================================================
--- trunk/GME/Include/subversion/svn_error_codes.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_error_codes.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -46,6 +46,10 @@
    not defined the enumerated constants yet.  */
 #if defined(SVN_ERROR_BUILD_ARRAY) || !defined(SVN_ERROR_ENUM_DEFINED)
 
+/* Note: despite lacking double underscores in its name, the macro
+   SVN_ERROR_BUILD_ARRAY is an implementation detail of Subversion and not
+   a public API. */
+
 
 #include <apr_errno.h>     /* APR's error system */
 
@@ -59,9 +63,9 @@
 
 #define SVN_ERROR_START \
         static const err_defn error_table[] = { \
-          { SVN_WARNING, "Warning" },
-#define SVN_ERRDEF(num, offset, str) { num, str },
-#define SVN_ERROR_END { 0, NULL } };
+          { SVN_WARNING, "SVN_WARNING", "Warning" },
+#define SVN_ERRDEF(num, offset, str) { num, #num, str },
+#define SVN_ERROR_END { 0, NULL, NULL } };
 
 #elif !defined(SVN_ERROR_ENUM_DEFINED)
 
@@ -224,6 +228,11 @@
              SVN_ERR_BAD_CATEGORY_START + 14,
              "Invalid changelist name")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_BAD_ATOMIC,
+             SVN_ERR_BAD_CATEGORY_START + 15,
+             "Invalid atomic")
+
   /* xml errors */
 
   SVN_ERRDEF(SVN_ERR_XML_ATTRIB_NOT_FOUND,
@@ -528,13 +537,23 @@
   /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_WC_INVALID_OPERATION_DEPTH,
              SVN_ERR_WC_CATEGORY_START + 38,
-             "The operation can not be performed with the specified depth")
+             "The operation cannot be performed with the specified depth")
 
   /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_WC_PATH_ACCESS_DENIED,
              SVN_ERR_WC_CATEGORY_START + 39,
              "Couldn't open a working copy file because access was denied")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_WC_MIXED_REVISIONS,
+             SVN_ERR_WC_CATEGORY_START + 40,
+             "Mixed-revision working copy was found but not expected")
+
+  /** @since New in 1.8 */
+  SVN_ERRDEF(SVN_ERR_WC_DUPLICATE_EXTERNALS_TARGET,
+             SVN_ERR_WC_CATEGORY_START + 41,
+             "Duplicate targets in svn:externals property")
+
   /* fs errors */
 
   SVN_ERRDEF(SVN_ERR_FS_GENERAL,
@@ -762,6 +781,21 @@
              "Property value in filesystem differs from the provided "
              "base value")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_FS_INCORRECT_EDITOR_COMPLETION,
+             SVN_ERR_FS_CATEGORY_START + 50,
+             "The filesystem editor completion process was not followed")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_FS_PACKED_REVPROP_READ_FAILURE,
+             SVN_ERR_FS_CATEGORY_START + 51,
+             "A packed revprop could not be read")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_FS_REVPROP_CACHE_INIT_FAILURE,
+             SVN_ERR_FS_CATEGORY_START + 52,
+             "Could not initialize the revprop caching infrastructure.")
+
   /* repos errors */
 
   SVN_ERRDEF(SVN_ERR_REPOS_LOCKED,
@@ -871,6 +905,11 @@
              SVN_ERR_RA_CATEGORY_START + 11,
              "Session URL does not match expected session URL")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_RA_CANNOT_CREATE_TUNNEL,
+             SVN_ERR_RA_CATEGORY_START + 12,
+             "Can't create tunnel")
+
   /* ra_dav errors */
 
   SVN_ERRDEF(SVN_ERR_RA_DAV_SOCK_INIT,
@@ -905,7 +944,7 @@
              "Invalid configuration value")
 
   /** @deprecated To improve consistency between ra layers, this error code
-      is replaced in ra_{neon|serf} by SVN_ERR_FS_NOT_FOUND.
+      is replaced in ra_serf by SVN_ERR_FS_NOT_FOUND.
       Slated for removal in the next major release. */
   SVN_ERRDEF(SVN_ERR_RA_DAV_PATH_NOT_FOUND,
              SVN_ERR_RA_DAV_CATEGORY_START + 7,
@@ -949,114 +988,6 @@
   SVN_ERRDEF(SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED,
              SVN_ERR_RA_LOCAL_CATEGORY_START + 1,
              "Couldn't open a repository")
-  /* ra_svn errors */
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_CMD_ERR,
-             SVN_ERR_RA_SVN_CATEGORY_START + 0,
-             "Special code for wrapping server errors to report to client")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_UNKNOWN_CMD,
-             SVN_ERR_RA_SVN_CATEGORY_START + 1,
-             "Unknown svn protocol command")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_CONNECTION_CLOSED,
-             SVN_ERR_RA_SVN_CATEGORY_START + 2,
-             "Network connection closed unexpectedly")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_IO_ERROR,
-             SVN_ERR_RA_SVN_CATEGORY_START + 3,
-             "Network read/write error")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_MALFORMED_DATA,
-             SVN_ERR_RA_SVN_CATEGORY_START + 4,
-             "Malformed network data")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_REPOS_NOT_FOUND,
-             SVN_ERR_RA_SVN_CATEGORY_START + 5,
-             "Couldn't find a repository")
-
-  SVN_ERRDEF(SVN_ERR_RA_SVN_BAD_VERSION,
-             SVN_ERR_RA_SVN_CATEGORY_START + 6,
-             "Client/server version mismatch")
-
-  /** @since New in 1.5. */
-  SVN_ERRDEF(SVN_ERR_RA_SVN_NO_MECHANISMS,
-             SVN_ERR_RA_SVN_CATEGORY_START + 7,
-             "Cannot negotiate authentication mechanism")
-
-  /** @since New in 1.7  */
-  SVN_ERRDEF(SVN_ERR_RA_SVN_EDIT_ABORTED,
-             SVN_ERR_RA_SVN_CATEGORY_START + 8,
-             "Editor drive was aborted")
-
-  /* libsvn_ra_serf errors */
-  /** @since New in 1.5. */
-  SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,
-             SVN_ERR_RA_SERF_CATEGORY_START + 0,
-             "Initialization of SSPI library failed")
-  /** @since New in 1.5. */
-  SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,
-             SVN_ERR_RA_SERF_CATEGORY_START + 1,
-             "Server SSL certificate untrusted")
-  /** @since New in 1.7. */
-  SVN_ERRDEF(SVN_ERR_RA_SERF_GSSAPI_INITIALISATION_FAILED,
-             SVN_ERR_RA_SERF_CATEGORY_START + 2,
-             "Initialization of the GSSAPI context failed")
-
-  /** @since New in 1.7. */
-  SVN_ERRDEF(SVN_ERR_RA_SERF_WRAPPED_ERROR,
-             SVN_ERR_RA_SERF_CATEGORY_START + 3,
-             "While handling serf response:")
-
-  /* libsvn_auth errors */
-
-       /* this error can be used when an auth provider doesn't have
-          the creds, but no other "real" error occurred. */
-  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_UNAVAILABLE,
-             SVN_ERR_AUTHN_CATEGORY_START + 0,
-             "Credential data unavailable")
-
-  SVN_ERRDEF(SVN_ERR_AUTHN_NO_PROVIDER,
-             SVN_ERR_AUTHN_CATEGORY_START + 1,
-             "No authentication provider available")
-
-  SVN_ERRDEF(SVN_ERR_AUTHN_PROVIDERS_EXHAUSTED,
-             SVN_ERR_AUTHN_CATEGORY_START + 2,
-             "All authentication providers exhausted")
-
-  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_NOT_SAVED,
-             SVN_ERR_AUTHN_CATEGORY_START + 3,
-             "Credentials not saved")
-
-  /** @since New in 1.5. */
-  SVN_ERRDEF(SVN_ERR_AUTHN_FAILED,
-             SVN_ERR_AUTHN_CATEGORY_START + 4,
-             "Authentication failed")
-
-  /* authorization errors */
-
-  SVN_ERRDEF(SVN_ERR_AUTHZ_ROOT_UNREADABLE,
-             SVN_ERR_AUTHZ_CATEGORY_START + 0,
-             "Read access denied for root of edit")
-
-  /** @since New in 1.1. */
-  SVN_ERRDEF(SVN_ERR_AUTHZ_UNREADABLE,
-             SVN_ERR_AUTHZ_CATEGORY_START + 1,
-             "Item is not readable")
-
-  /** @since New in 1.1. */
-  SVN_ERRDEF(SVN_ERR_AUTHZ_PARTIALLY_READABLE,
-             SVN_ERR_AUTHZ_CATEGORY_START + 2,
-             "Item is partially readable")
-
-  SVN_ERRDEF(SVN_ERR_AUTHZ_INVALID_CONFIG,
-             SVN_ERR_AUTHZ_CATEGORY_START + 3,
-             "Invalid authz configuration")
-
-  /** @since New in 1.3 */
-  SVN_ERRDEF(SVN_ERR_AUTHZ_UNWRITABLE,
-             SVN_ERR_AUTHZ_CATEGORY_START + 4,
-             "Item is not writable")
 
   /* svndiff errors */
 
@@ -1084,12 +1015,6 @@
              SVN_ERR_SVNDIFF_CATEGORY_START + 5,
              "Svndiff compressed data is invalid")
 
-  /* libsvn_diff errors */
-
-  SVN_ERRDEF(SVN_ERR_DIFF_DATASOURCE_MODIFIED,
-             SVN_ERR_DIFF_CATEGORY_START + 0,
-             "Diff data source modified unexpectedly")
-
   /* mod_dav_svn errors */
 
   SVN_ERRDEF(SVN_ERR_APMOD_MISSING_PATH_TO_FS,
@@ -1219,7 +1144,7 @@
              SVN_ERR_CLIENT_CATEGORY_START + 22,
              "Can't perform this operation without a valid lock token")
 
-/** @since New in 1.7. */
+  /** @since New in 1.7. */
   SVN_ERRDEF(SVN_ERR_CLIENT_FORBIDDEN_BY_SERVER,
              SVN_ERR_CLIENT_CATEGORY_START + 23,
              "The operation is forbidden by the server")
@@ -1350,7 +1275,7 @@
   /** @since New in 1.6. */
   SVN_ERRDEF(SVN_ERR_NO_APR_MEMCACHE,
              SVN_ERR_MISC_CATEGORY_START + 28,
-             "apr memcache library not available")
+             "APR memcache library not available")
 
   /** @since New in 1.6. */
   SVN_ERRDEF(SVN_ERR_ATOMIC_INIT_FAILURE,
@@ -1367,7 +1292,9 @@
              SVN_ERR_MISC_CATEGORY_START + 31,
              "Attempted to write to readonly SQLite db")
 
-  /** @since New in 1.6. */
+  /** @since New in 1.6.
+   * @deprecated the internal sqlite support code does not manage schemas
+   * any longer.  */
   SVN_ERRDEF(SVN_ERR_SQLITE_UNSUPPORTED_SCHEMA,
              SVN_ERR_MISC_CATEGORY_START + 32,
              "Unsupported schema found in SQLite db")
@@ -1388,6 +1315,21 @@
              SVN_ERR_MISC_CATEGORY_START + 35,
              "Constraint error in SQLite db")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_TOO_MANY_MEMCACHED_SERVERS,
+             SVN_ERR_MISC_CATEGORY_START + 36,
+             "Too many memcached servers configured")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_MALFORMED_VERSION_STRING,
+             SVN_ERR_MISC_CATEGORY_START + 37,
+             "Failed to parse version number string")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_CORRUPTED_ATOMIC_STORAGE,
+             SVN_ERR_MISC_CATEGORY_START + 38,
+             "Atomic data storage is corrupt")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,
@@ -1438,6 +1380,123 @@
              SVN_ERR_CL_CATEGORY_START + 11,
              "Failed processing one or more externals definitions")
 
+  /* ra_svn errors */
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_CMD_ERR,
+             SVN_ERR_RA_SVN_CATEGORY_START + 0,
+             "Special code for wrapping server errors to report to client")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_UNKNOWN_CMD,
+             SVN_ERR_RA_SVN_CATEGORY_START + 1,
+             "Unknown svn protocol command")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_CONNECTION_CLOSED,
+             SVN_ERR_RA_SVN_CATEGORY_START + 2,
+             "Network connection closed unexpectedly")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_IO_ERROR,
+             SVN_ERR_RA_SVN_CATEGORY_START + 3,
+             "Network read/write error")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_MALFORMED_DATA,
+             SVN_ERR_RA_SVN_CATEGORY_START + 4,
+             "Malformed network data")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_REPOS_NOT_FOUND,
+             SVN_ERR_RA_SVN_CATEGORY_START + 5,
+             "Couldn't find a repository")
+
+  SVN_ERRDEF(SVN_ERR_RA_SVN_BAD_VERSION,
+             SVN_ERR_RA_SVN_CATEGORY_START + 6,
+             "Client/server version mismatch")
+
+  /** @since New in 1.5. */
+  SVN_ERRDEF(SVN_ERR_RA_SVN_NO_MECHANISMS,
+             SVN_ERR_RA_SVN_CATEGORY_START + 7,
+             "Cannot negotiate authentication mechanism")
+
+  /** @since New in 1.7  */
+  SVN_ERRDEF(SVN_ERR_RA_SVN_EDIT_ABORTED,
+             SVN_ERR_RA_SVN_CATEGORY_START + 8,
+             "Editor drive was aborted")
+
+  /* libsvn_auth errors */
+
+       /* this error can be used when an auth provider doesn't have
+          the creds, but no other "real" error occurred. */
+  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_UNAVAILABLE,
+             SVN_ERR_AUTHN_CATEGORY_START + 0,
+             "Credential data unavailable")
+
+  SVN_ERRDEF(SVN_ERR_AUTHN_NO_PROVIDER,
+             SVN_ERR_AUTHN_CATEGORY_START + 1,
+             "No authentication provider available")
+
+  SVN_ERRDEF(SVN_ERR_AUTHN_PROVIDERS_EXHAUSTED,
+             SVN_ERR_AUTHN_CATEGORY_START + 2,
+             "All authentication providers exhausted")
+
+  SVN_ERRDEF(SVN_ERR_AUTHN_CREDS_NOT_SAVED,
+             SVN_ERR_AUTHN_CATEGORY_START + 3,
+             "Credentials not saved")
+
+  /** @since New in 1.5. */
+  SVN_ERRDEF(SVN_ERR_AUTHN_FAILED,
+             SVN_ERR_AUTHN_CATEGORY_START + 4,
+             "Authentication failed")
+
+  /* authorization errors */
+
+  SVN_ERRDEF(SVN_ERR_AUTHZ_ROOT_UNREADABLE,
+             SVN_ERR_AUTHZ_CATEGORY_START + 0,
+             "Read access denied for root of edit")
+
+  /** @since New in 1.1. */
+  SVN_ERRDEF(SVN_ERR_AUTHZ_UNREADABLE,
+             SVN_ERR_AUTHZ_CATEGORY_START + 1,
+             "Item is not readable")
+
+  /** @since New in 1.1. */
+  SVN_ERRDEF(SVN_ERR_AUTHZ_PARTIALLY_READABLE,
+             SVN_ERR_AUTHZ_CATEGORY_START + 2,
+             "Item is partially readable")
+
+  SVN_ERRDEF(SVN_ERR_AUTHZ_INVALID_CONFIG,
+             SVN_ERR_AUTHZ_CATEGORY_START + 3,
+             "Invalid authz configuration")
+
+  /** @since New in 1.3 */
+  SVN_ERRDEF(SVN_ERR_AUTHZ_UNWRITABLE,
+             SVN_ERR_AUTHZ_CATEGORY_START + 4,
+             "Item is not writable")
+
+
+  /* libsvn_diff errors */
+
+  SVN_ERRDEF(SVN_ERR_DIFF_DATASOURCE_MODIFIED,
+             SVN_ERR_DIFF_CATEGORY_START + 0,
+             "Diff data source modified unexpectedly")
+
+  /* libsvn_ra_serf errors */
+  /** @since New in 1.5. */
+  SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,
+             SVN_ERR_RA_SERF_CATEGORY_START + 0,
+             "Initialization of SSPI library failed")
+  /** @since New in 1.5. */
+  SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,
+             SVN_ERR_RA_SERF_CATEGORY_START + 1,
+             "Server SSL certificate untrusted")
+  /** @since New in 1.7.
+      @deprecated GSSAPI now handled by serf rather than libsvn_ra_serf. */
+  SVN_ERRDEF(SVN_ERR_RA_SERF_GSSAPI_INITIALISATION_FAILED,
+             SVN_ERR_RA_SERF_CATEGORY_START + 2,
+             "Initialization of the GSSAPI context failed")
+
+  /** @since New in 1.7. */
+  SVN_ERRDEF(SVN_ERR_RA_SERF_WRAPPED_ERROR,
+             SVN_ERR_RA_SERF_CATEGORY_START + 3,
+             "While handling serf response:")
+
   /* malfunctions such as assertion failures */
 
   SVN_ERRDEF(SVN_ERR_ASSERTION_FAIL,

Modified: trunk/GME/Include/subversion/svn_fs.h
==============================================================================
--- trunk/GME/Include/subversion/svn_fs.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_fs.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -85,6 +85,34 @@
  */
 #define SVN_FS_CONFIG_FSFS_CACHE_FULLTEXTS      "fsfs-cache-fulltexts"
 
+/** Enable / disable revprop caching for a FSFS repository.
+ *
+ * "2" is allowed, too and means "enable if efficient",
+ * i.e. this will not create warning at runtime if there
+ * if no efficient support for revprop caching.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_FS_CONFIG_FSFS_CACHE_REVPROPS       "fsfs-cache-revprops"
+
+/** Select the cache namespace.  If you potentially share the cache with
+ * another FS object for the same repository, objects read through one FS
+ * will not need to be read again for the other.  In most cases, that is
+ * a very desirable behavior and the default is, therefore, an empty
+ * namespace.
+ *
+ * If you want to be sure that your FS instance will actually read all
+ * requested data at least once, you need to specify a separate namespace
+ * for it.  All repository verification code, for instance, should use
+ * some GUID here that is different each time you open an FS instance.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_FS_CONFIG_FSFS_CACHE_NS             "fsfs-cache-namespace"
+
+/* Note to maintainers: if you add further SVN_FS_CONFIG_FSFS_CACHE_* knobs,
+   update fs_fs.c:verify_as_revision_before_current_plus_plus(). */
+
 /* See also svn_fs_type(). */
 /** @since New in 1.1. */
 #define SVN_FS_CONFIG_FS_TYPE                   "fs-type"
@@ -113,6 +141,13 @@
  * @since New in 1.6.
  */
 #define SVN_FS_CONFIG_PRE_1_6_COMPATIBLE        "pre-1.6-compatible"
+
+/** Create repository format compatible with Subversion versions
+ * earlier than 1.8.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_FS_CONFIG_PRE_1_8_COMPATIBLE        "pre-1.8-compatible"
 /** @} */
 
 
@@ -246,6 +281,19 @@
                apr_pool_t *pool);
 
 /**
+ * Callback function type for progress notification.
+ *
+ * @a revision is the number of the revision currently begin processed,
+ * #SVN_INVALID_REVNUM if the current stage is not linked to any specific
+ * revision. @a baton is the callback baton.
+ *
+ * @since New in 1.8.
+ */
+typedef void (*svn_fs_progress_notify_func_t)(svn_revnum_t revision,
+                                              void *baton,
+                                              apr_pool_t *pool);
+
+/**
  * Return, in @a *fs_type, a string identifying the back-end type of
  * the Subversion filesystem located in @a path.  Allocate @a *fs_type
  * in @a pool.
@@ -277,8 +325,26 @@
             apr_pool_t *pool);
 
 /**
+ * Return a shallow copy of the configuration parameters used to open
+ * @a fs, allocated in @a pool.  It may be @c NULL.  The contents of the
+ * hash contents remains valid only for @a fs's lifetime.
+ * 
+ * @note This is just what was passed to svn_fs_create() or svn_fs_open().
+ * You may not modify it.
+ *
+ * @since New in 1.8.
+ */
+apr_hash_t *
+svn_fs_config(svn_fs_t *fs,
+              apr_pool_t *pool);
+
+/**
  * Delete the filesystem at @a path.
  *
+ * @note: Deleting a filesystem that has an open svn_fs_t is not
+ * supported.  Clear/destroy all pools used to create/open @a path.
+ * See issue 4264.
+ *
  * @since New in 1.1.
  */
 svn_error_t *
@@ -292,8 +358,32 @@
  * means deleting copied, unused logfiles for a Berkeley DB source
  * filesystem.
  *
+ * If @a incremental is TRUE, make an effort to avoid re-copying
+ * information already present in the destination where possible.  If
+ * incremental hotcopy is not implemented, raise
+ * #SVN_ERR_UNSUPPORTED_FEATURE.
+ *
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_hotcopy2(const char *src_path,
+                const char *dest_path,
+                svn_boolean_t clean,
+                svn_boolean_t incremental,
+                svn_cancel_func_t cancel_func,
+                void *cancel_baton,
+                apr_pool_t *scratch_pool);
+
+/**
+ * Like svn_fs_hotcopy2(), but with @a incremental always passed as @c
+ * TRUE and without cancellation support.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.1.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_fs_hotcopy(const char *src_path,
                const char *dest_path,
@@ -342,6 +432,32 @@
                apr_pool_t *pool);
 
 
+/**
+ * Callback for svn_fs_freeze().
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *(*svn_fs_freeze_func_t)(void *baton, apr_pool_t *pool);
+
+/**
+ * Take an exclusive lock on @a fs to prevent commits and then invoke
+ * @a freeze_func passing @a freeze_baton.
+ *
+ * @note The BDB backend doesn't implement this feature so most
+ * callers should not call this function directly but should use the
+ * higher level svn_repos_freeze() instead.
+ *
+ * @see svn_repos_freeze()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_freeze(svn_fs_t *fs,
+              svn_fs_freeze_func_t freeze_func,
+              void *freeze_baton,
+              apr_pool_t *pool);
+
+
 /** Subversion filesystems based on Berkeley DB.
  *
  * The following functions are specific to Berkeley DB filesystems.
@@ -755,6 +871,7 @@
  * if a caller tries to edit a locked item without having rights to the lock.
  */
 #define SVN_FS_TXN_CHECK_LOCKS                   0x00002
+
 /** @} */
 
 /**
@@ -811,7 +928,7 @@
  * If @a conflict_p is non-zero, use it to provide details on any
  * conflicts encountered merging @a txn with the most recent committed
  * revisions.  If a conflict occurs, set @a *conflict_p to the path of
- * the conflict in @a txn, with the same lifetime as @a txn;
+ * the conflict in @a txn, allocated within @a pool;
  * otherwise, set @a *conflict_p to NULL.
  *
  * If the commit succeeds, @a txn is invalid.
@@ -826,6 +943,25 @@
  * the value is a valid revision number, the commit was successful,
  * even though a non- at c NULL function return value may indicate that
  * something else went wrong in post commit FS processing.
+ *
+ * @note See api-errata/1.8/fs001.txt for information on how this
+ * function was documented in versions prior to 1.8.
+ *
+ * ### need to document this better. there are four combinations of
+ * ### return values:
+ * ### 1) err=NULL. conflict=NULL. new_rev is valid
+ * ### 2) err=SVN_ERR_FS_CONFLICT. conflict is set. new_rev=SVN_INVALID_REVNUM
+ * ### 3) err=!NULL. conflict=NULL. new_rev is valid
+ * ### 4) err=!NULL. conflict=NULL. new_rev=SVN_INVALID_REVNUM
+ * ###
+ * ### some invariants:
+ * ###   *conflict_p will be non-NULL IFF SVN_ERR_FS_CONFLICT
+ * ###   if *conflict_p is set (and SVN_ERR_FS_CONFLICT), then new_rev
+ * ###     will always be SVN_INVALID_REVNUM
+ * ###   *conflict_p will always be initialized to NULL, or to a valid
+ * ###     conflict string
+ * ###   *new_rev will always be initialized to SVN_INVALID_REVNUM, or
+ * ###     to a valid, committed revision number
  */
 svn_error_t *
 svn_fs_commit_txn(const char **conflict_p,
@@ -1454,7 +1590,6 @@
 /** Set @a *root_p and @a *path_p to the revision root and path of the
  * destination of the most recent copy event that caused @a path to
  * exist where it does in @a root, or to NULL if no such copy exists.
- * When non-NULL, allocate @a *root_p and @a *path_p in @a pool.
  *
  * @a *path_p might be a parent of @a path, rather than @a path
  * itself.  However, it will always be the deepest relevant path.
@@ -1462,6 +1597,9 @@
  * this function makes sure to set @a *path_p to the longest copy
  * destination path that is still a parent of or equal to @a path.
  *
+ * Values returned in @a *root_p and @a *path_p will be allocated
+ * from @a pool.
+ *
  * @since New in 1.3.
  */
 svn_error_t *
@@ -1484,6 +1622,15 @@
  * @a inherit indicates whether to retrieve explicit,
  * explicit-or-inherited, or only inherited mergeinfo.
  *
+ * If @a adjust_inherited_mergeinfo is @c TRUE, then any inherited
+ * mergeinfo returned in @a *catalog is normalized to represent the
+ * inherited mergeinfo on the path which inherits it.  If
+ * @a adjust_inherited_mergeinfo is @c FALSE, then any inherited
+ * mergeinfo is the raw explicit mergeinfo from the nearest parent
+ * of the path with explicit mergeinfo, unadjusted for the path-wise
+ * difference between the path and its parent.  This may include
+ * non-inheritable mergeinfo.
+ *
  * If @a include_descendants is TRUE, then additionally return the
  * mergeinfo for any descendant of any element of @a paths which has
  * the #SVN_PROP_MERGEINFO property explicitly set on it.  (Note
@@ -1491,10 +1638,28 @@
  * paths; descendants of the elements in @a paths which get their
  * mergeinfo via inheritance are not included in @a *catalog.)
  *
- * Do any necessary temporary allocation in @a pool.
+ * Allocate @a *catalog in result_pool.  Do any necessary temporary
+ * allocations in @a scratch_pool.
  *
- * @since New in 1.5.
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_get_mergeinfo2(svn_mergeinfo_catalog_t *catalog,
+                      svn_fs_root_t *root,
+                      const apr_array_header_t *paths,
+                      svn_mergeinfo_inheritance_t inherit,
+                      svn_boolean_t include_descendants,
+                      svn_boolean_t adjust_inherited_mergeinfo,
+                      apr_pool_t *result_pool,
+                      apr_pool_t *scratch_pool);
+
+/**
+ * Same as svn_fs_get_mergeinfo2(), but with @a adjust_inherited_mergeinfo
+ * set always set to @c TRUE and with only one pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.5 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_fs_get_mergeinfo(svn_mergeinfo_catalog_t *catalog,
                      svn_fs_root_t *root,
@@ -1736,6 +1901,43 @@
                      const char *path,
                      apr_pool_t *pool);
 
+/**
+ * Callback function type used with svn_fs_try_process_file_contents()
+ * that delivers the immutable, non-NULL @a contents of @a len bytes.
+ * @a baton is an implementation-specific closure.
+ *
+ * Use @a scratch_pool for allocations.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *
+(*svn_fs_process_contents_func_t)(const unsigned char *contents,
+                                  apr_size_t len,
+                                  void *baton,
+                                  apr_pool_t *scratch_pool);
+
+/** Efficiently deliver the contents of the file @a path in @a root
+ * via @a processor (with @a baton), setting @a *success to @c TRUE
+ * upon doing so.  Use @a pool for allocations.
+ *
+ * This function is intended to support zero copy data processing.  It may
+ * not be implemented for all data backends or not applicable for certain
+ * content.  In that case, @a *success will always be @c FALSE.  Also, this
+ * is a best-effort function which means that there is no guarantee that
+ * @a processor gets called at all for some content.
+ *
+ * @note @a processor is expected to be relatively short function with
+ * at most O(content size) runtime.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_try_process_file_contents(svn_boolean_t *success,
+                                 svn_fs_root_t *root,
+                                 const char *path,
+                                 svn_fs_process_contents_func_t processor,
+                                 void* baton,
+                                 apr_pool_t *pool);
 
 /** Create a new file named @a path in @a root.  The file's initial contents
  * are the empty string, and it has no properties.  @a root must be the
@@ -2184,7 +2386,8 @@
 
 /**
  * Append a textual list of all available FS modules to the stringbuf
- * @a output.
+ * @a output.  Third-party modules are only included if repository
+ * access has caused them to be loaded.
  *
  * @since New in 1.2.
  */
@@ -2237,8 +2440,88 @@
             apr_pool_t *pool);
 
 
-/** @} */
+/**
+ * Perform backend-specific data consistency and correctness validations
+ * to the Subversion filesystem (mainly the meta-data) located in the
+ * directory @a path.  Use the backend-specific configuration @a fs_config
+ * when opening the filesystem.  @a NULL is valid for all backends.
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @a start and @a end define the (minimum) range of revisions to check.
+ * If @a start is #SVN_INVALID_REVNUM, it defaults to @c r0.  Likewise,
+ * @a end will default to the current youngest repository revision when
+ * given as #SVN_INVALID_REVNUM.  Since meta data checks may have to touch
+ * other revisions as well, you may receive notifications for revisions
+ * outside the specified range.   In fact, it is perfectly legal for a FS
+ * implementation to always check all revisions.
+ *
+ * Global invariants are only guaranteed to get verified when @a r0 has
+ * been included in the range of revisions to check.
+ *
+ * The optional @a notify_func callback is only a general feedback that
+ * the operation is still in process but may be called in random revisions
+ * order and more than once for the same revision, i.e. r2, r1, r2 would
+ * be a valid sequence.
+ *
+ * The optional @a cancel_func callback will be invoked as usual to allow
+ * the user to preempt this potentially lengthy operation.
+ *
+ * @note You probably don't want to use this directly.  Take a look at
+ * svn_repos_verify_fs2() instead, which does non-backend-specific
+ * verifications as well.
+ *
+ * @note To ensure a full verification using all tests and covering all
+ * revisions, you must call this function *and* #svn_fs_verify_root.
+ *
+ * @note Implementors, please do tests that can be done efficiently for
+ * a single revision in #svn_fs_verify_root.  This function is meant for
+ * global checks or tests that require an expensive context setup.
+ *
+ * @see svn_repos_verify_fs2()
+ * @see svn_fs_verify_root()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_verify(const char *path,
+              apr_hash_t *fs_config,
+              svn_revnum_t start,
+              svn_revnum_t end,
+              svn_fs_progress_notify_func_t notify_func,
+              void *notify_baton,
+              svn_cancel_func_t cancel_func,
+              void *cancel_baton,
+              apr_pool_t *scratch_pool);
+
+/**
+ * Perform backend-specific data consistency and correctness validations
+ * of @a root in the Subversion filesystem @a fs.  @a root is typically
+ * a revision root (see svn_fs_revision_root()), but may be a
+ * transaction root.  Use @a scratch_pool for temporary allocations.
+ *
+ * @note You probably don't want to use this directly.  Take a look at
+ * svn_repos_verify_fs2() instead, which does non-backend-specific
+ * verifications as well.
+ *
+ * @note To ensure a full verification using all available tests and
+ * covering all revisions, you must call both this function and
+ * #svn_fs_verify.
+ *
+ * @note Implementors, please perform tests that cannot be done
+ * efficiently for a single revision in #svn_fs_verify.  This function
+ * is intended for local checks that don't require an expensive context
+ * setup.
+ *
+ * @see svn_repos_verify_fs2()
+ * @see svn_fs_verify()
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_fs_verify_root(svn_fs_root_t *root,
+                   apr_pool_t *scratch_pool);
 
+/** @} */
 
 #ifdef __cplusplus
 }

Modified: trunk/GME/Include/subversion/svn_hash.h
==============================================================================
--- trunk/GME/Include/subversion/svn_hash.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_hash.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -240,47 +240,19 @@
                            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.
+/** Shortcut for apr_hash_get() with a const char * key.
  *
- * @since New in 1.5.
+ * @since New in 1.8.
  */
-svn_error_t *
-svn_hash__clear(apr_hash_t *hash, apr_pool_t *pool);
+#define svn_hash_gets(ht, key) \
+            apr_hash_get(ht, key, APR_HASH_KEY_STRING)
 
-/** @} */
-
-
-/**
- * @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.
+/** Shortcut for apr_hash_set() with a const char * key.
  *
- * @since New in 1.7.
+ * @since New in 1.8.
  */
-svn_boolean_t
-svn_hash__get_bool(apr_hash_t *hash,
-                   const char *key,
-                   svn_boolean_t default_value);
+#define svn_hash_sets(ht, key, val) \
+            apr_hash_set(ht, key, APR_HASH_KEY_STRING, val)
 
 /** @} */
 

Modified: trunk/GME/Include/subversion/svn_io.h
==============================================================================
--- trunk/GME/Include/subversion/svn_io.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_io.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -240,7 +240,7 @@
 /** Create a writable file, with an arbitrary and unique name, in the
  * directory @a dirpath.  Set @a *temp_path to its full path, and set
  * @a *file to the file handle, both allocated from @a result_pool.  Either
- * @a file or @a unique_name may be @c NULL.  If @a file is @c NULL, the file
+ * @a file or @a temp_path may be @c NULL.  If @a file is @c NULL, the file
  * will be created but not open.
  *
  * If @a dirpath is @c NULL, use the path returned from svn_io_temp_dir().
@@ -592,14 +592,14 @@
 void
 svn_io_sleep_for_timestamps(const char *path, apr_pool_t *pool);
 
-/** Set @a *different_p to non-zero if @a file1 and @a file2 have different
- * sizes, else set to zero.  Both @a file1 and @a file2 are utf8-encoded.
+/** Set @a *different_p to TRUE if @a file1 and @a file2 have different
+ * sizes, else set to FALSE.  Both @a file1 and @a file2 are utf8-encoded.
  *
  * Setting @a *different_p to zero does not mean the files definitely
  * have the same size, it merely means that the sizes are not
  * definitely different.  That is, if the size of one or both files
  * cannot be determined, then the sizes are not known to be different,
- * so @a *different_p is set to 0.
+ * so @a *different_p is set to FALSE.
  */
 svn_error_t *
 svn_io_filesizes_different_p(svn_boolean_t *different_p,
@@ -607,6 +607,27 @@
                              const char *file2,
                              apr_pool_t *pool);
 
+/** Set @a *different_p12 to non-zero if @a file1 and @a file2 have different
+ * sizes, else set to zero.  Do the similar for @a *different_p23 with
+ * @a file2 and @a file3, and @a *different_p13 for @a file1 and @a file3.
+ * The filenames @a file1, @a file2 and @a file3 are utf8-encoded.
+ *
+ * Setting @a *different_p12 to zero does not mean the files definitely
+ * have the same size, it merely means that the sizes are not
+ * definitely different.  That is, if the size of one or both files
+ * cannot be determined (due to stat() returning an error), then the sizes
+ * are not known to be different, so @a *different_p12 is set to 0.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_filesizes_three_different_p(svn_boolean_t *different_p12,
+                                   svn_boolean_t *different_p23,
+                                   svn_boolean_t *different_p13,
+                                   const char *file1,
+                                   const char *file2,
+                                   const char *file3,
+                                   apr_pool_t *scratch_pool);
 
 /** Return in @a *checksum the checksum of type @a kind of @a file
  * Use @a pool for temporary allocations and to allocate @a *checksum.
@@ -642,6 +663,23 @@
                              const char *file2,
                              apr_pool_t *pool);
 
+/** Set @a *same12 to TRUE if @a file1 and @a file2 have the same
+ * contents, else set it to FALSE.  Do the similar for @a *same23
+ * with @a file2 and @a file3, and @a *same13 for @a file1 and @a
+ * file3. The filenames @a file1, @a file2 and @a file3 are
+ * utf8-encoded. Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_files_contents_three_same_p(svn_boolean_t *same12,
+                                   svn_boolean_t *same23,
+                                   svn_boolean_t *same13,
+                                   const char *file1,
+                                   const char *file2,
+                                   const char *file3,
+                                   apr_pool_t *scratch_pool);
+
 /** Create file at utf8-encoded @a file with contents @a contents.
  * @a file must not already exist.
  * Use @a pool for memory allocations.
@@ -682,6 +720,39 @@
                   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 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
+ * was passed to svn_io_lock_open_file().
+ *
+ * @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.
@@ -989,6 +1060,16 @@
 svn_stream_from_string(const svn_string_t *str,
                        apr_pool_t *pool);
 
+/** Return a generic stream which implements buffered reads and writes.
+ *  The stream will preferentially store data in-memory, but may use
+ *  disk storage as backup if the amount of data is large.
+ *  Allocate the stream in @a result_pool
+ *
+ * @since New in 1.8.
+ */
+svn_stream_t *
+svn_stream_buffered(apr_pool_t *result_pool);
+
 /** Return a stream that decompresses all data read and compresses all
  * data written. The stream @a stream is used to read and write all
  * compressed data. All compression data structures are allocated on
@@ -1079,9 +1160,9 @@
 svn_error_t *
 svn_stream_close(svn_stream_t *stream);
 
-/** Reset a generic stream back to its origin. E.g. On a file this would be
+/** Reset a generic stream back to its origin. (E.g. On a file this would be
  * implemented as a seek to position 0).  This function returns a
- * #SVN_ERR_STREAM_RESET_NOT_SUPPORTED error when the stream doesn't
+ * #SVN_ERR_STREAM_SEEK_NOT_SUPPORTED error when the stream doesn't
  * implement resetting.
  *
  * @since New in 1.7.
@@ -1136,6 +1217,14 @@
                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.
@@ -1278,6 +1367,47 @@
                        apr_pool_t *scratch_pool);
 
 
+/** A function type provided for use as a callback from
+ * @c svn_stream_lazyopen_create().
+ *
+ * The callback function shall open a new stream and set @a *stream to
+ * the stream object, allocated in @a result_pool.  @a baton is the
+ * callback baton that was passed to svn_stream_lazyopen_create().
+ *
+ * @a result_pool is the result pool that was passed to
+ * svn_stream_lazyopen_create().  The callback function may use
+ * @a scratch_pool for temporary allocations; the caller may clear or
+ * destroy @a scratch_pool any time after the function returns.
+ *
+ * @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
+ * returned stream is accessed.
+ *
+ * @a open_func and @a open_baton are a callback function/baton pair
+ * which will be invoked upon the first access of the returned
+ * stream (read, write, mark, seek, skip, or possibly close).  The
+ * callback shall open the primary stream.
+ *
+ * If the only "access" the returned stream gets is to close it
+ * then @a open_func will only be called if @a open_on_close is TRUE.
+ *
+ * @since New in 1.8.
+ */
+svn_stream_t *
+svn_stream_lazyopen_create(svn_stream_lazyopen_func_t open_func,
+                           void *open_baton,
+                           svn_boolean_t open_on_close,
+                           apr_pool_t *result_pool);
+
 /** @} */
 
 /** Set @a *result to a string containing the contents of @a
@@ -1439,11 +1569,33 @@
 /** Create a svn_io_dirent2_t instance for path. Specialized variant of
  * svn_io_stat() that directly translates node_kind and special.
  *
+ * If @a verify_truename is @c TRUE, an additional check is performed to
+ * verify the truename of the last path component on case insensitive
+ * filesystems. This check is expensive compared to a just a stat,
+ * but certainly cheaper than a full truename calculation using
+ * apr_filepath_merge() which verifies all path components.
+ *
  * If @a ignore_enoent is set to @c TRUE, set *dirent_p->kind to
  * svn_node_none instead of returning an error.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_stat_dirent2(const svn_io_dirent2_t **dirent_p,
+                    const char *path,
+                    svn_boolean_t verify_truename,
+                    svn_boolean_t ignore_enoent,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
+
+/** Similar to svn_io_stat_dirent2, but always passes FALSE for
+ * verify_truename.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_io_stat_dirent(const svn_io_dirent2_t **dirent_p,
                    const char *path,
@@ -1518,15 +1670,44 @@
  *
  * If @a inherit is TRUE, the invoked program inherits its environment from
  * the caller and @a cmd, if not absolute, is searched for in PATH.
- * Otherwise, the invoked program runs with an empty environment and @a cmd
- * must be an absolute path.
+ *
+ * If @a inherit is FALSE @a cmd must be an absolute path and the invoked
+ * program inherits the environment defined by @a env or runs with an empty
+ * environment in @a env is NULL.
  *
  * @note On some platforms, failure to execute @a cmd in the child process
  * will result in error output being written to @a errfile, if non-NULL, and
  * a non-zero exit status being returned to the parent process.
  *
+ * @note An APR bug affects Windows: passing a NULL @a env does not
+ * guarantee the invoked program to run with an empty environment when
+ * @a inherits is FALSE, the program may inherit its parent's environment.
+ * Explicitly pass an empty @a env to get an empty environment.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *svn_io_start_cmd3(apr_proc_t *cmd_proc,
+                               const char *path,
+                               const char *cmd,
+                               const char *const *args,
+                               const char *const *env,
+                               svn_boolean_t inherit,
+                               svn_boolean_t infile_pipe,
+                               apr_file_t *infile,
+                               svn_boolean_t outfile_pipe,
+                               apr_file_t *outfile,
+                               svn_boolean_t errfile_pipe,
+                               apr_file_t *errfile,
+                               apr_pool_t *pool);
+
+
+/**
+ * Similar to svn_io_start_cmd3() but with @a env always set to NULL.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API
  * @since New in 1.7.
  */
+SVN_DEPRECATED
 svn_error_t *svn_io_start_cmd2(apr_proc_t *cmd_proc,
                                const char *path,
                                const char *cmd,
@@ -1796,7 +1977,8 @@
 svn_io_is_binary_data(const void *buf, apr_size_t len);
 
 
-/** Wrapper for apr_file_open().  @a fname is utf8-encoded. */
+/** Wrapper for apr_file_open().  @a fname is utf8-encoded.
+    Always passed flag | APR_BINARY to apr. */
 svn_error_t *
 svn_io_file_open(apr_file_t **new_file,
                  const char *fname,
@@ -2061,6 +2243,36 @@
                           int version,
                           apr_pool_t *pool);
 
+/** Read a line of text from a file, up to a specified length.
+ *
+ * Allocate @a *stringbuf in @a result_pool, and read into it one line
+ * from @a file. Reading stops either after a line-terminator was found
+ * or after @a max_len bytes have been read.
+ *
+ * If end-of-file is reached or @a max_len bytes have been read, and @a eof
+ * is not NULL, then set @a *eof to @c TRUE.
+ *
+ * The line-terminator is not stored in @a *stringbuf.
+ * The line-terminator is detected automatically and stored in @a *eol
+ * if @a eol is not NULL. If EOF is reached and @a file does not end
+ * with a newline character, and @a eol is not NULL, @ *eol is set to NULL.
+ *
+ * @a scratch_pool is used for temporary allocations.
+ *
+ * Hint: To read all data until a line-terminator is hit, pass APR_SIZE_MAX
+ * for @a max_len.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_io_file_readline(apr_file_t *file,
+                     svn_stringbuf_t **stringbuf,
+                     const char **eol,
+                     svn_boolean_t *eof,
+                     apr_size_t max_len,
+                     apr_pool_t *result_pool,
+                     apr_pool_t *scratch_pool);
+
 /** @} */
 
 #ifdef __cplusplus

Modified: trunk/GME/Include/subversion/svn_mergeinfo.h
==============================================================================
--- trunk/GME/Include/subversion/svn_mergeinfo.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_mergeinfo.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -113,8 +113,8 @@
  *
  * (a) Strings (@c svn_string_t *) containing "unparsed mergeinfo".
  *
- * (b) A "rangelist".  An array (@c apr_array_header_t *) of non-overlapping
- *     merge ranges (@c svn_merge_range_t *), sorted as said by
+ * (b) @c svn_rangelist_t, called a "rangelist".  An array of non-
+ *     overlapping merge ranges (@c svn_merge_range_t *), sorted as said by
  *     @c svn_sort_compare_ranges().  An empty range list is represented by
  *     an empty array.  Unless specifically noted otherwise, all APIs require
  *     rangelists that describe only forward ranges, i.e. the range's start
@@ -139,6 +139,7 @@
  * else, such as an RA session root.
  */
 
+typedef apr_array_header_t svn_rangelist_t;
 typedef apr_hash_t *svn_mergeinfo_t;
 typedef apr_hash_t *svn_mergeinfo_catalog_t;
 
@@ -166,8 +167,10 @@
                     apr_pool_t *pool);
 
 /** Calculate the delta between two mergeinfos, @a mergefrom and @a mergeto
- * (which may be @c NULL), and place the result in @a *deleted and @a
- * *added (neither output argument may be @c NULL).
+ * (either or both of which may be @c NULL meaning an empty mergeinfo).
+ * Place the result in @a *deleted and @a *added (neither output argument
+ * may be @c NULL), both allocated in @a result_pool.  The resulting
+ * @a *deleted and @a *added will not be null.
  *
  * @a consider_inheritance determines how the rangelists in the two
  * hashes are compared for equality.  If @a consider_inheritance is FALSE,
@@ -184,8 +187,21 @@
  *       '/trunk: 1,3-4*,5' == '/trunk: 1,3-4*,5'
  *       '/trunk: 1,3-4,5'  == '/trunk: 1,3-4,5'
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_mergeinfo_diff2(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
+                    svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto,
+                    svn_boolean_t consider_inheritance,
+                    apr_pool_t *result_pool,
+                    apr_pool_t *scratch_pool);
+
+/** Similar to svn_mergeinfo_diff2(), but users only one pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.5.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added,
                    svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto,
@@ -195,6 +211,10 @@
 /** Merge a shallow copy of one mergeinfo, @a changes, into another mergeinfo
  * @a mergeinfo.
  *
+ * Rangelists for merge source paths common to @a changes and @a mergeinfo may
+ * result in new rangelists; these are allocated in @a result_pool.
+ * Temporary allocations are made in @a scratch_pool.
+ *
  * When intersecting rangelists for a path are merged, the inheritability of
  * the resulting svn_merge_range_t depends on the inheritability of the
  * operands.  If two non-inheritable ranges are merged the result is always
@@ -203,10 +223,22 @@
  *  e.g. '/A: 1,3-4'  merged with '/A: 1,3,4*,5' --> '/A: 1,3-5'
  *       '/A: 1,3-4*' merged with '/A: 1,3,4*,5' --> '/A: 1,3,4*,5'
  *
- * @since New in 1.5.
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_mergeinfo_merge2(svn_mergeinfo_t mergeinfo,
+                     svn_mergeinfo_t changes,
+                     apr_pool_t *result_pool,
+                     apr_pool_t *scratch_pool);
+
+/** Like svn_mergeinfo_merge2, but uses only one pool.
+ *
+ * @deprecated Provided for backward compatibility with the 1.5 API.
  */
+SVN_DEPRECATED
 svn_error_t *
-svn_mergeinfo_merge(svn_mergeinfo_t mergeinfo, svn_mergeinfo_t changes,
+svn_mergeinfo_merge(svn_mergeinfo_t mergeinfo,
+                    svn_mergeinfo_t changes,
                     apr_pool_t *pool);
 
 /** Combine one mergeinfo catalog, @a changes_catalog, into another mergeinfo
@@ -264,29 +296,54 @@
  * @since New in 1.5.
  */
 svn_error_t *
-svn_rangelist_diff(apr_array_header_t **deleted, apr_array_header_t **added,
-                   const apr_array_header_t *from, const apr_array_header_t *to,
+svn_rangelist_diff(svn_rangelist_t **deleted, svn_rangelist_t **added,
+                   const svn_rangelist_t *from, const svn_rangelist_t *to,
                    svn_boolean_t consider_inheritance,
                    apr_pool_t *pool);
 
 /** Merge two rangelists consisting of @c svn_merge_range_t *
- * elements, @a *rangelist and @a changes, placing the results in
- * @a *rangelist.  Either rangelist may be empty.
+ * elements, @a rangelist and @a changes, placing the results in
+ * @a rangelist. New elements added to @a rangelist are allocated
+ * in @a result_pool. Either rangelist may be empty.
  *
  * When intersecting rangelists are merged, the inheritability of
  * the resulting svn_merge_range_t depends on the inheritability of the
  * operands: see svn_mergeinfo_merge().
  *
- * Note: @a *rangelist and @a changes must be sorted as said by @c
- * svn_sort_compare_ranges().  @a *rangelist is guaranteed to remain
+ * Note: @a rangelist and @a changes must be sorted as said by @c
+ * svn_sort_compare_ranges().  @a rangelist is guaranteed to remain
  * in sorted order and be compacted to the minimal number of ranges
  * needed to represent the merged result.
  *
+ * If the original rangelist contains non-collapsed adjacent ranges,
+ * the final result is not guaranteed to be compacted either.
+ *
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_rangelist_merge2(svn_rangelist_t *rangelist,
+                     const svn_rangelist_t *changes,
+                     apr_pool_t *result_pool,
+                     apr_pool_t *scratch_pool);
+
+/** Like svn_rangelist_merge2(), but with @a rangelist as an input/output
+ * argument. This function always allocates a new rangelist in @a pool and
+ * returns its result in @a *rangelist. It does not modify @a *rangelist
+ * in place. If not used carefully, this function can use up a lot of memory
+ * if called in a loop.
+ *
+ * It performs an extra adjacent range compaction round to make sure non
+ * collapsed input ranges are compacted in the result.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
-svn_rangelist_merge(apr_array_header_t **rangelist,
-                    const apr_array_header_t *changes,
+svn_rangelist_merge(svn_rangelist_t **rangelist,
+                    const svn_rangelist_t *changes,
                     apr_pool_t *pool);
 
 /** Removes @a eraser (the subtrahend) from @a whiteboard (the
@@ -303,8 +360,8 @@
  * @since New in 1.5.
  */
 svn_error_t *
-svn_rangelist_remove(apr_array_header_t **output, const apr_array_header_t *eraser,
-                     const apr_array_header_t *whiteboard,
+svn_rangelist_remove(svn_rangelist_t **output, const svn_rangelist_t *eraser,
+                     const svn_rangelist_t *whiteboard,
                      svn_boolean_t consider_inheritance,
                      apr_pool_t *pool);
 
@@ -345,7 +402,7 @@
  * @a consider_inheritance determines how to account for the inheritability
  * of the two rangelist's ranges when calculating the intersection,
  * @see svn_mergeinfo_diff().  If @a consider_inheritance is FALSE then
- * ranges with different inheritance can intersect, but the the resulting
+ * ranges with different inheritance can intersect, but the resulting
  * @a *rangelist is non-inheritable only if the corresponding ranges from
  * both @a rangelist1 and @a rangelist2 are non-inheritable.
  * If @a consider_inheritance is TRUE, then ranges with different
@@ -357,9 +414,9 @@
  * @since New in 1.5.
  */
 svn_error_t *
-svn_rangelist_intersect(apr_array_header_t **rangelist,
-                        const apr_array_header_t *rangelist1,
-                        const apr_array_header_t *rangelist2,
+svn_rangelist_intersect(svn_rangelist_t **rangelist,
+                        const svn_rangelist_t *rangelist1,
+                        const svn_rangelist_t *rangelist2,
                         svn_boolean_t consider_inheritance,
                         apr_pool_t *pool);
 
@@ -374,7 +431,7 @@
  * @since New in 1.5.
  */
 svn_error_t *
-svn_rangelist_reverse(apr_array_header_t *rangelist, apr_pool_t *pool);
+svn_rangelist_reverse(svn_rangelist_t *rangelist, apr_pool_t *pool);
 
 /** Take an array of svn_merge_range_t *'s in @a rangelist, and convert it
  * back to a text format rangelist in @a output.  If @a rangelist contains
@@ -384,7 +441,7 @@
  */
 svn_error_t *
 svn_rangelist_to_string(svn_string_t **output,
-                        const apr_array_header_t *rangelist,
+                        const svn_rangelist_t *rangelist,
                         apr_pool_t *pool);
 
 /** Return a deep copy of @c svn_merge_range_t *'s in @a rangelist excluding
@@ -399,8 +456,8 @@
  * @since New in 1.7.
  */
 svn_error_t *
-svn_rangelist_inheritable2(apr_array_header_t **inheritable_rangelist,
-                           const apr_array_header_t *rangelist,
+svn_rangelist_inheritable2(svn_rangelist_t **inheritable_rangelist,
+                           const svn_rangelist_t *rangelist,
                            svn_revnum_t start,
                            svn_revnum_t end,
                            svn_boolean_t inheritable,
@@ -414,8 +471,8 @@
  */
 SVN_DEPRECATED
 svn_error_t *
-svn_rangelist_inheritable(apr_array_header_t **inheritable_rangelist,
-                          const apr_array_header_t *rangelist,
+svn_rangelist_inheritable(svn_rangelist_t **inheritable_rangelist,
+                          const svn_rangelist_t *rangelist,
                           svn_revnum_t start,
                           svn_revnum_t end,
                           apr_pool_t *pool);
@@ -502,8 +559,8 @@
  *
  * @since New in 1.5.
  */
-apr_array_header_t *
-svn_rangelist_dup(const apr_array_header_t *rangelist, apr_pool_t *pool);
+svn_rangelist_t *
+svn_rangelist_dup(const svn_rangelist_t *rangelist, apr_pool_t *pool);
 
 
 /**
@@ -521,8 +578,9 @@
       ancestor. */
   svn_mergeinfo_inherited,
 
-  /** Mergeinfo on target's nearest (path-wise, not history-wise)
-      ancestor, regardless of whether target has explicit mergeinfo. */
+  /** Mergeinfo inherited from a target's nearest (path-wise, not
+      history-wise) ancestor, regardless of whether target has explicit
+      mergeinfo. */
   svn_mergeinfo_nearest_ancestor
 } svn_mergeinfo_inheritance_t;
 

Modified: trunk/GME/Include/subversion/svn_opt.h
==============================================================================
--- trunk/GME/Include/subversion/svn_opt.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_opt.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -680,7 +680,8 @@
  * Else, if @a print_version is TRUE, then print version info, in
  * brief form if @a quiet is also TRUE; if @a quiet is FALSE, then if
  * @a version_footer is non-NULL, print it following the version
- * information.
+ * information. If @a verbose is TRUE, also print information about
+ * the running system and loaded shared libraries, where available.
  *
  * Else, if @a os is not @c NULL and does not contain arguments, print
  * generic help, via svn_opt_print_generic_help2() with the @a header,
@@ -695,8 +696,30 @@
  * --version flag *and* subcommand arguments on a help command line.
  * The logic for handling such a situation should be in one place.
  *
- * @since New in 1.5.
+ * @since New in 1.8.
  */
+
+svn_error_t *
+svn_opt_print_help4(apr_getopt_t *os,
+                    const char *pgm_name,
+                    svn_boolean_t print_version,
+                    svn_boolean_t quiet,
+                    svn_boolean_t verbose,
+                    const char *version_footer,
+                    const char *header,
+                    const svn_opt_subcommand_desc2_t *cmd_table,
+                    const apr_getopt_option_t *option_table,
+                    const int *global_options,
+                    const char *footer,
+                    apr_pool_t *pool);
+
+/**
+ * Same as svn_opt_print_help4(), but with @a verbose always @c FALSE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+
+SVN_DEPRECATED
 svn_error_t *
 svn_opt_print_help3(apr_getopt_t *os,
                     const char *pgm_name,

Modified: trunk/GME/Include/subversion/svn_path.h
==============================================================================
--- trunk/GME/Include/subversion/svn_path.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_path.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -106,8 +106,8 @@
  * for the base.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
- * New code should use svn_dirent_join(), svn_uri_join(),
- * svn_relpath_join() or svn_fspath__join().
+ * New code should use svn_dirent_join(), svn_relpath_join() or
+ * svn_fspath__join().
  */
 SVN_DEPRECATED
 char *
@@ -296,6 +296,10 @@
 
 /** Return an integer greater than, equal to, or less than 0, according
  * as @a path1 is greater than, equal to, or less than @a path2.
+ *
+ * This function works like strcmp() except that it orders children in
+ * subdirectories directly after their parents. This allows using the
+ * given ordering for a depth first walk.
  */
 int
 svn_path_compare_paths(const char *path1, const char *path2);
@@ -509,8 +513,9 @@
  *       identify the remainder path.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
- * New code should use svn_dirent_is_child(), svn_uri_is_child(),
- * svn_relpath_is_child() or svn_fspath__is_child().
+ * For replacement functionality, see svn_dirent_skip_ancestor(),
+ * svn_dirent_is_child(), svn_uri_skip_ancestor(), and
+ * svn_relpath_skip_ancestor().
  */
 SVN_DEPRECATED
 const char *
@@ -522,8 +527,8 @@
  * @since New in 1.3.
  *
  * @deprecated Provided for backward compatibility with the 1.6 API.
- * New code should use svn_dirent_is_ancestor(), svn_uri_is_ancestor(),
- * svn_relpath_is_ancestor() or svn_fspath__is_ancestor().
+ * For replacement functionality, see svn_dirent_skip_ancestor(),
+ * svn_uri_skip_ancestor(), and svn_relpath_skip_ancestor().
  */
 SVN_DEPRECATED
 svn_boolean_t
@@ -665,6 +670,62 @@
 
 /** @} */
 
+
+/** Repository relative URLs
+ *
+ * @defgroup svn_path_repos_relative_urls Repository relative URLs
+ * @{
+ */
+
+/**
+ * Return @c TRUE iff @a path is a repository-relative URL:  specifically
+ * that it starts with the characters "^/"
+ *
+ * @a path is in UTF-8 encoding.
+ *
+ * Does not check whether @a path is a properly URI-encoded, canonical, or
+ * valid in any other way.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_path_is_repos_relative_url(const char *path);
+
+/**
+ * Set @a absolute_url to the absolute URL represented by @a relative_url
+ * relative to @a repos_root_url, preserving any peg revision
+ * specifier present in @a relative_url.  Allocate @a absolute_url
+ * from @a pool.
+ *
+ * @a relative_url is in repository-relative syntax: "^/[REL-URL][@PEG]"
+ *
+ * @a repos_root_url is the absolute URL of the repository root.
+ *
+ * All strings are in UTF-8 encoding.
+ *
+ * @a repos_root_url and @a relative_url do not have to be properly
+ * URI-encoded, canonical, or valid in any other way.  The caller is
+ * expected to perform canonicalization on @a absolute_url after the
+ * call to the function.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_path_resolve_repos_relative_url(const char **absolute_url,
+                                    const char *relative_url,
+                                    const char *repos_root_url,
+                                    apr_pool_t *pool);
+
+/* Return a copy of @a path, allocated from @a pool, for which control
+ * characters have been escaped using the form \NNN (where NNN is the
+ * octal representation of the byte's ordinal value).
+ * 
+ * @since New in 1.8. */
+const char *
+svn_path_illegal_path_escape(const char *path, apr_pool_t *pool);
+
+/** @} */
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_pools.h
==============================================================================
--- trunk/GME/Include/subversion/svn_pools.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_pools.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -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,26 @@
  */
 #define svn_pool_destroy apr_pool_destroy
 
+/** Return a new allocator.  This function limits the unused memory in the
+ * new allocator to #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; otherwise, set @a
+ * thread_safe to @c FALSE to maximize performance.
+ *
+ * @note Even if @a thread_safe is @c TRUE, pools themselves will
+ * still not be thread-safe and their access may require explicit
+ * serialization.
+ *
+ * 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: trunk/GME/Include/subversion/svn_props.h
==============================================================================
--- trunk/GME/Include/subversion/svn_props.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_props.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -85,6 +85,26 @@
                    apr_pool_t *pool);
 
 
+/** A structure to represent inherited properties.
+ *
+ * @since New in 1.8.
+ */
+typedef struct svn_prop_inherited_item_t
+{
+  /** The absolute working copy path, relative filesystem path, or URL
+   * from which the properties in @a prop_hash are inherited.  (For
+   * details about which path specification format is in use for a
+   * particular instance of this structure, consult the documentation
+   * for the API which produced it.) */
+  const char *path_or_url;
+
+  /** A hash of (<tt>const char *</tt>) inherited property names, and
+   * (<tt>svn_string_t *</tt>) property values. */
+  apr_hash_t *prop_hash;
+
+} svn_prop_inherited_item_t;
+
+
 /**
  * Given a hash (keys <tt>const char *</tt> and values <tt>const
  * svn_string_t</tt>) of properties, returns an array of svn_prop_t
@@ -93,7 +113,7 @@
  * @since New in 1.5.
  */
 apr_array_header_t *
-svn_prop_hash_to_array(apr_hash_t *hash,
+svn_prop_hash_to_array(const apr_hash_t *hash,
                        apr_pool_t *pool);
 
 /**
@@ -111,12 +131,12 @@
 
 /**
  * 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.
  */
 apr_hash_t *
-svn_prop_hash_dup(apr_hash_t *hash,
+svn_prop_hash_dup(const apr_hash_t *hash,
                   apr_pool_t *pool);
 
 /**
@@ -127,7 +147,7 @@
  * @since New in 1.7.
  */
 const char *
-svn_prop_get_value(apr_hash_t *properties,
+svn_prop_get_value(const apr_hash_t *properties,
                    const char *prop_name);
 
 /**
@@ -150,24 +170,37 @@
   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- at 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);
 
 
 /** Return @c TRUE iff @a prop_name represents the name of a Subversion
- * property.
+ * property.  That is, any property name in Subversion's name space for
+ * versioned or unversioned properties, regardless whether the particular
+ * property name is recognized.
  */
 svn_boolean_t
 svn_prop_is_svn_prop(const char *prop_name);
 
 
 /** Return @c TRUE iff @a props has at least one property whose name
- * represents the name of a Subversion property.
+ * represents the name of a Subversion property, in the sense of
+ * svn_prop_is_svn_prop().
  *
  * @since New in 1.5.
  */
@@ -178,11 +211,62 @@
 /** Return @c TRUE iff @a prop_name is a Subversion property whose
  * value is interpreted as a boolean.
  *
- * @since New in 1.5
+ * @since New in 1.5.
  */
 svn_boolean_t
 svn_prop_is_boolean(const char *prop_name);
 
+/** Return @c TRUE iff @a prop_name is in the "svn:" name space and is a
+ * known revision property ("svn:log" or "svn:date", e.g.).
+ *
+ * This will return @c FALSE for any property name that is not known by this
+ * version of the library, even though the name may be known to other (for
+ * example, later) Subversion software.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_prop_is_known_svn_rev_prop(const char *prop_name);
+
+/** Return @c TRUE iff @a prop_name is in the "svn:" name space and is a
+ * known versioned property that is allowed on a file and/or on a
+ * directory ("svn:eol-style", "svn:ignore", or "svn:mergeinfo", e.g.).
+ *
+ * This will return @c FALSE for any property name that is not known
+ * by this version of the library, even though the name may be known
+ * to other (for example, later) Subversion software.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_prop_is_known_svn_node_prop(const char *prop_name);
+
+/** Return @c TRUE iff @a prop_name is in the "svn:" name space and is
+ * a known versioned property that is allowed on a file
+ * ("svn:eol-style" or "svn:mergeinfo", e.g.).
+ *
+ * This will return @c FALSE for any property name that is not known
+ * by this version of the library, even though the name may be known
+ * to other (for example, later) Subversion software.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_prop_is_known_svn_file_prop(const char *prop_name);
+
+/** Return @c TRUE iff @a prop_name is in the "svn:" name space and is
+ * a known versioned property that is allowed on a directory
+ * ("svn:ignore" or "svn:mergeinfo", e.g.).
+ *
+ * This will return @c FALSE for any property name that is not known
+ * by this version of the library, even though the name may be known
+ * to other (for example, later) Subversion software.
+ *
+ * @since New in 1.8.
+ */
+svn_boolean_t
+svn_prop_is_known_svn_dir_prop(const char *prop_name);
+
 /** If @a prop_name requires that its value be stored as UTF8/LF in the
  * repository, then return @c TRUE.  Else return @c FALSE.  This is for
  * users of libsvn_client or libsvn_fs, since it their responsibility
@@ -236,8 +320,8 @@
  */
 svn_error_t *
 svn_prop_diffs(apr_array_header_t **propdiffs,
-               apr_hash_t *target_props,
-               apr_hash_t *source_props,
+               const apr_hash_t *target_props,
+               const apr_hash_t *source_props,
                apr_pool_t *pool);
 
 
@@ -330,19 +414,21 @@
 
 /** Describes external items to check out into this directory.
  *
- * The format is a series of lines, such as:
- *
- * <pre reason="Should use 'verbatim' instead, but Doxygen v1.6.1 & v1.7.1
- *              then doesn't recognize the #define; presumably a bug.">
-     localdir1           http://url.for.external.source/etc/
-     localdir1/foo       http://url.for.external.source/foo
-     localdir1/bar       http://blah.blah.blah/repositories/theirproj
-     localdir1/bar/baz   http://blorg.blorg.blorg/basement/code
-     localdir2           http://another.url/blah/blah/blah
-     localdir3           http://and.so.on/and/so/forth </pre>
- *
- * The subdir names on the left side are relative to the directory on
- * which this property is set.
+ * The format is a series of lines, each in the following format:
+ *   [-r REV] URL[@PEG] LOCALPATH
+ * LOCALPATH is relative to the directory having this property.
+ * REV pins the external to revision REV.
+ * URL may be a full URL or a relative URL starting with one of:
+ *   ../  to the parent directory of the extracted external
+ *   ^/   to the repository root
+ *   /    to the server root
+ *   //   to the URL scheme
+ * The following format is supported for interoperability with
+ * Subversion 1.4 and earlier clients:
+ *   LOCALPATH [-r PEG] URL
+ * The ambiguous format 'relative_path relative_path' is taken as
+ * 'relative_url relative_path' with peg revision support.
+ * Lines starting with a '#' character are ignored.
  */
 #define SVN_PROP_EXTERNALS  SVN_PROP_PREFIX "externals"
 
@@ -357,6 +443,11 @@
  */
 #define SVN_PROP_MERGEINFO SVN_PROP_PREFIX "mergeinfo"
 
+/** Property used to record inheritable configuration auto-props. */
+#define SVN_PROP_INHERITABLE_AUTO_PROPS SVN_PROP_PREFIX "auto-props"
+
+/** Property used to record inheritable configuration ignores. */
+#define SVN_PROP_INHERITABLE_IGNORES SVN_PROP_PREFIX "global-ignores"
 
 /** Meta-data properties.
  *
@@ -397,6 +488,28 @@
 
 /** @} */ /* Meta-data properties */
 
+/**
+ * This is a list of all user-visible and -settable versioned node
+ * properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_PROP_NODE_ALL_PROPS SVN_PROP_MIME_TYPE, \
+                                SVN_PROP_IGNORE, \
+                                SVN_PROP_EOL_STYLE, \
+                                SVN_PROP_KEYWORDS, \
+                                SVN_PROP_EXECUTABLE, \
+                                SVN_PROP_NEEDS_LOCK, \
+                                SVN_PROP_SPECIAL, \
+                                SVN_PROP_EXTERNALS, \
+                                SVN_PROP_MERGEINFO, \
+                                SVN_PROP_INHERITABLE_AUTO_PROPS, \
+                                SVN_PROP_INHERITABLE_IGNORES, \
+                                \
+                                SVN_PROP_TEXT_TIME, \
+                                SVN_PROP_OWNER, \
+                                SVN_PROP_GROUP, \
+                                SVN_PROP_UNIX_MODE,
 
 /** @} */
 
@@ -492,25 +605,37 @@
 /* More reserved revision props in the 'svn:' namespace, used by the
    svnsync tool:   */
 
-/** Prefix for all svnsync custom properties. */
+/** Prefix for all svnsync custom properties.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_PREFIX             SVN_PROP_PREFIX "sync-"
 
 /* The following revision properties are set on revision 0 of
  * destination repositories by svnsync:
  */
 
-/** Used to enforce mutually exclusive destination repository access. */
+/** Used to enforce mutually exclusive destination repository access.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_LOCK               SVNSYNC_PROP_PREFIX "lock"
 
-/** Identifies the repository's source URL. */
+/** Identifies the repository's source URL.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_FROM_URL           SVNSYNC_PROP_PREFIX "from-url"
-/** Identifies the repository's source UUID. */
+/** Identifies the repository's source UUID.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_FROM_UUID          SVNSYNC_PROP_PREFIX "from-uuid"
 
-/** Identifies the last completely mirrored revision. */
+/** Identifies the last completely mirrored revision.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_LAST_MERGED_REV    SVNSYNC_PROP_PREFIX "last-merged-rev"
 
-/** Identifies the revision currently being copied. */
+/** Identifies the revision currently being copied.
+ * @since New in 1.4.
+ */
 #define SVNSYNC_PROP_CURRENTLY_COPYING  SVNSYNC_PROP_PREFIX "currently-copying"
 
 
@@ -530,6 +655,54 @@
 
 /** @} */
 
+/**
+ * These are reserved properties attached to a "transaction" object in
+ * the repository filesystem in advance of the pre-commit hook script
+ * running on the server, but then automatically removed from the
+ * transaction before its promotion to a new revision.
+ *
+ * @defgroup svn_props_ephemeral_txnprops Ephemeral transaction properties
+ * @{
+ */
+
+/** The prefix used for all (ephemeral) transaction properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_PROP_TXN_PREFIX  SVN_PROP_PREFIX "txn-"
+
+/** Identifies the client version compability level.  For clients
+ * compiled against Subversion libraries, this is @c SVN_VER_NUMBER.
+ * Third-party implementations are advised to use similar formatting
+ * for values of this property.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_PROP_TXN_CLIENT_COMPAT_VERSION \
+            SVN_PROP_TXN_PREFIX "client-compat-version"
+
+/** Identifies the client's user agent string, if any.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_PROP_TXN_USER_AGENT \
+            SVN_PROP_TXN_PREFIX "user-agent"
+
+/** The prefix reserved for copies of (ephemeral) transaction
+ * properties designed to outlive the transaction.  Administrators may
+ * choose to, in their pre-commit hook scripts, copy the values of one
+ * or more properties named @c SVN_PROP_TXN_PREFIX + "something"
+ * to new properties named @c SVN_PROP_REVISION_PREFIX + "something",
+ * allowing that information to survive the commit-time removal of
+ * ephemeral transaction properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_PROP_REVISION_PREFIX  SVN_PROP_PREFIX "revision-"
+
+
+/** @} */
+
 /** @} */
 
 

Modified: trunk/GME/Include/subversion/svn_ra.h
==============================================================================
--- trunk/GME/Include/subversion/svn_ra.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_ra.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -120,6 +120,19 @@
                                                           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 checksum is @a 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 *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 @@
                                                         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 @@
    */
   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
@@ -573,7 +592,7 @@
 
 /**
  * A repository access session.  This object is used to perform requests
- * to a repository, identified by an URL.
+ * to a repository, identified by a URL.
  *
  * @since New in 1.2.
  */
@@ -594,6 +613,17 @@
  * corrected_url is NULL, return an #SVN_ERR_RA_SESSION_URL_MISMATCH
  * error.  Allocate all returned items in @a pool.
  *
+ * The @a repos_URL need not point to the root of the repository: subject
+ * to authorization, it may point to any path within the repository, even
+ * a path at which no node exists in the repository.  The session will
+ * remember this URL as its "session URL" (also called "session root URL"),
+ * until changed by svn_ra_reparent().  Many RA functions take or return
+ * paths that are relative to the session URL.
+ *
+ * If a @a corrected_url is returned, it will point to the same path
+ * within the new repository root URL that @a repos_URL pointed to within
+ * the old repository root URL.
+ *
  * Return @c SVN_ERR_RA_UUID_MISMATCH if @a uuid is non-NULL and not equal
  * to the UUID of the repository at @c repos_URL.
  *
@@ -602,7 +632,10 @@
  *
  * @a config is a hash mapping <tt>const char *</tt> keys to
  * @c svn_config_t * values.  For example, the @c svn_config_t for the
- * "~/.subversion/config" file is under the key "config".
+ * "~/.subversion/config" file is under the key "config".  @a config may
+ * be NULL.  This function examines some config settings under the
+ * "servers" key (if present) before loading the required RA module, and
+ * the RA module may also examine any config settings.
  *
  * All RA requests require a session; they will continue to
  * use @a pool for memory allocation.
@@ -680,7 +713,7 @@
                 const char *url,
                 apr_pool_t *pool);
 
-/** Set @a *url to the repository URL to which @a ra_session was
+/** Set @a *url to the session URL -- the URL to which @a ra_session was
  * opened or most recently reparented.
  *
  * @since New in 1.5.
@@ -691,8 +724,8 @@
                        apr_pool_t *pool);
 
 
-/** Convert @a url into a path relative to the URL at which @a ra_session
- * is parented, setting @a *rel_path to that value.  If @a url is not
+/** Convert @a url into a path relative to the session URL of @a ra_session,
+ * setting @a *rel_path to that value.  If @a url is not
  * a child of the session URL, return @c SVN_ERR_RA_ILLEGAL_URL.
  *
  * The returned path is uri decoded to allow using it with the ra or other
@@ -841,12 +874,12 @@
  * or @c SVN_PROP_REVISION_AUTHOR.
  *
  * Before @c close_edit returns, but after the commit has succeeded,
- * it will invoke @a callback (if non-NULL) with the new revision number,
- * the commit date (as a <tt>const char *</tt>), commit author (as a
- * <tt>const char *</tt>), and @a callback_baton as arguments.  If
- * @a callback returns an error, that error will be returned from @c
- * close_edit, otherwise @c close_edit will return successfully
- * (unless it encountered an error before invoking @a callback).
+ * it will invoke @a commit_callback (if non-NULL) with filled-in
+ * #svn_commit_info_t *, @a commit_baton, and @a pool or some subpool
+ * thereof as arguments.  If @a commit_callback returns an error, that error
+ * will be returned from @c * close_edit, otherwise @c close_edit will return
+ * successfully (unless it encountered an error before invoking
+ * @a commit_callback).
  *
  * The callback will not be called if the commit was a no-op
  * (i.e. nothing was committed);
@@ -872,8 +905,8 @@
                           const svn_delta_editor_t **editor,
                           void **edit_baton,
                           apr_hash_t *revprop_table,
-                          svn_commit_callback2_t callback,
-                          void *callback_baton,
+                          svn_commit_callback2_t commit_callback,
+                          void *commit_baton,
                           apr_hash_t *lock_tokens,
                           svn_boolean_t keep_locks,
                           apr_pool_t *pool);
@@ -893,8 +926,8 @@
                           const svn_delta_editor_t **editor,
                           void **edit_baton,
                           const char *log_msg,
-                          svn_commit_callback2_t callback,
-                          void *callback_baton,
+                          svn_commit_callback2_t commit_callback,
+                          void *commit_baton,
                           apr_hash_t *lock_tokens,
                           svn_boolean_t keep_locks,
                           apr_pool_t *pool);
@@ -1045,7 +1078,7 @@
                      apr_pool_t *pool);
 
 /**
- * Ask the RA layer to update a working copy.
+ * Ask the RA layer to update a working copy to a new revision.
  *
  * The client initially provides an @a update_editor/@a update_baton to the
  * RA layer; this editor contains knowledge of where the change will
@@ -1071,6 +1104,12 @@
  * (Note: this means that any subsequent txdeltas coming from the
  * server are presumed to apply against the copied file!)
  *
+ * Use @a ignore_ancestry to control whether or not items being
+ * updated will be checked for relatedness first.  Unrelated items
+ * are typically transmitted to the editor as a deletion of one thing
+ * and the addition of another, but if this flag is @c TRUE,
+ * unrelated items will be diffed as if they were related.
+ *
  * The working copy will be updated to @a revision_to_update_to, or the
  * "latest" revision if this arg is invalid.
  *
@@ -1078,7 +1117,8 @@
  * finishing the report, and may not perform any RA operations using
  * @a session from within the editing operations of @a update_editor.
  *
- * Use @a pool for memory allocation.
+ * Allocate @a *reporter and @a *report_baton in @a result_pool.  Use
+ * @a scratch_pool for temporary allocations.
  *
  * @note The reporter provided by this function does NOT supply copy-
  * from information to the diff editor callbacks.
@@ -1087,8 +1127,36 @@
  * needed, and sending too much data back, a pre-1.5 'recurse'
  * directive may be sent to the server, based on @a depth.
  *
+ * @note Pre Subversion 1.8 svnserve based servers never ignore ancestry.
+ *
+ * @note This differs from calling svn_ra_do_switch3() with the current
+ * URL of the target node.  Update changes only the revision numbers,
+ * leaving any switched subtrees still switched, whereas switch changes
+ * every node in the tree to a child of the same URL.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_ra_do_update3(svn_ra_session_t *session,
+                  const svn_ra_reporter3_t **reporter,
+                  void **report_baton,
+                  svn_revnum_t revision_to_update_to,
+                  const char *update_target,
+                  svn_depth_t depth,
+                  svn_boolean_t send_copyfrom_args,
+                  svn_boolean_t ignore_ancestry,
+                  const svn_delta_editor_t *update_editor,
+                  void *update_baton,
+                  apr_pool_t *result_pool,
+                  apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_ra_do_update3(), but always ignoring ancestry.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for compatibility with the 1.4 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_do_update2(svn_ra_session_t *session,
                   const svn_ra_reporter3_t **reporter,
@@ -1123,47 +1191,41 @@
 
 
 /**
- * Ask the RA layer to 'switch' a working copy to a new
- * @a switch_url;  it's another form of svn_ra_do_update().
- *
- * The client initially provides a @a switch_editor/@a switch_baton to the RA
- * layer; this editor contains knowledge of where the change will
- * begin in the working copy (when open_root() is called).
- *
- * In return, the client receives a @a reporter/@a report_baton.  The
- * client then describes its working copy by making calls into the
- * @a reporter.
- *
- * When finished, the client calls @a reporter->finish_report().  The
- * RA layer then does a complete drive of @a switch_editor, ending with
- * close_edit(), to switch the working copy.
- *
- * @a switch_target is an optional single path component will restrict
- * the scope of things affected by the switch to an entry in the
- * directory represented by the @a session's URL, or empty if the
- * entire directory is meant to be switched.
- *
- * Switch the target only as deeply as @a depth indicates.
- *
- * The working copy will be switched to @a revision_to_switch_to, or the
- * "latest" revision if this arg is invalid.
- *
- * The caller may not perform any RA operations using
- * @a session before finishing the report, and may not perform
- * any RA operations using @a session from within the editing
- * operations of @a switch_editor.
+ * Ask the RA layer to switch a working copy to a new revision and URL.
  *
- * Use @a pool for memory allocation.
+ * This is similar to svn_ra_do_update3(), but also changes the URL of
+ * every node in the target tree to a child of the @a switch_url.  In
+ * contrast, update changes only the revision numbers, leaving any
+ * switched subtrees still switched.
  *
- * @note The reporter provided by this function does NOT supply copy-
- * from information to the diff editor callbacks.
+ * @note Pre Subversion 1.8 svnserve based servers always ignore ancestry
+ * and never send copyfrom data.
  *
- * @note In order to prevent pre-1.5 servers from doing more work than
- * needed, and sending too much data back, a pre-1.5 'recurse'
- * directive may be sent to the server, based on @a depth.
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_ra_do_switch3(svn_ra_session_t *session,
+                  const svn_ra_reporter3_t **reporter,
+                  void **report_baton,
+                  svn_revnum_t revision_to_switch_to,
+                  const char *switch_target,
+                  svn_depth_t depth,
+                  const char *switch_url,
+                  svn_boolean_t send_copyfrom_args,
+                  svn_boolean_t ignore_ancestry,
+                  const svn_delta_editor_t *switch_editor,
+                  void *switch_baton,
+                  apr_pool_t *result_pool,
+                  apr_pool_t *scratch_pool);
+
+/**
+ * Similar to svn_ra_do_switch3(), but always ignoring ancestry and
+ * never sending copyfrom_args.
  *
  * @since New in 1.5.
+ * @deprecated Provided for compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_do_switch2(svn_ra_session_t *session,
                   const svn_ra_reporter3_t **reporter,
@@ -1277,7 +1339,7 @@
  * it's another form of svn_ra_do_update2().
  *
  * @note This function cannot be used to diff a single file, only a
- * working copy directory.  See the svn_ra_do_switch2() function
+ * working copy directory.  See the svn_ra_do_switch3() function
  * for more details.
  *
  * The client initially provides a @a diff_editor/@a diff_baton to the RA
@@ -1406,8 +1468,9 @@
  *
  * If @a discover_changed_paths, then each call to @a receiver passes a
  * <tt>const apr_hash_t *</tt> for the receiver's @a changed_paths argument;
- * the hash's keys are all the paths committed in that revision.
- * Otherwise, each call to receiver passes NULL for @a changed_paths.
+ * the hash's keys are all the paths committed in that revision, the hash's
+ * values are <tt>const svn_log_changed_path2_t *</tt> for each committed
+ * path. Otherwise, each call to receiver passes NULL for @a changed_paths.
  *
  * If @a strict_node_history is set, copy history will not be traversed
  * (if any exists) when harvesting the revision logs for each path.
@@ -1415,8 +1478,9 @@
  * If @a include_merged_revisions is set, log information for revisions
  * which have been merged to @a targets will also be returned.
  *
- * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
- * revprops named in the array (i.e. retrieve none if the array is empty).
+ * If @a revprops is NULL, retrieve all revision properties; else, retrieve
+ * only the revision properties named by the (const char *) array elements
+ * (i.e. retrieve none if the array is empty).
  *
  * If any invocation of @a receiver returns error, return that error
  * immediately and without wrapping it.
@@ -1640,6 +1704,10 @@
  * server doesn't implement it, an alternative (but much slower)
  * implementation based on svn_ra_get_log2() is used.
  *
+ * On subversion 1.8 and newer servers this function has been enabled
+ * to support reversion of the revision range for @a include_merged_revision
+ * @c FALSE reporting by switching  @a end with @a start.
+ *
  * @since New in 1.5.
  */
 svn_error_t *
@@ -1672,7 +1740,8 @@
 /**
  * Lock each path in @a path_revs, which is a hash whose keys are the
  * paths to be locked, and whose values are the corresponding base
- * revisions for each path.
+ * revisions for each path.  The keys are (const char *) and the
+ * revisions are (svn_revnum_t *).
  *
  * Note that locking is never anonymous, so any server implementing
  * this function will have to "pull" a username from the client, if
@@ -1886,6 +1955,33 @@
                        apr_pool_t *pool);
 
 /**
+ * Set @a *inherited_props to a depth-first ordered array of
+ * #svn_prop_inherited_item_t * structures representing the properties
+ * inherited by @a path at @a revision (or the 'head' revision if
+ * @a revision is @c SVN_INVALID_REVNUM).  Interpret @a path relative to
+ * the URL in @a session.  Use @a pool for all allocations.  If no
+ * inheritable properties are found, then set @a *inherited_props to
+ * an empty array.
+ *
+ * The #svn_prop_inherited_item_t->path_or_url members of the
+ * #svn_prop_inherited_item_t * structures in @a *inherited_props are
+ * paths relative to the repository root URL (of the repository which
+ * @a ra_session is associated).
+ *
+ * Allocate @a *inherited_props in @a result_pool.  Use @a scratch_pool
+ * for temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_ra_get_inherited_props(svn_ra_session_t *session,
+                           apr_array_header_t **inherited_props,
+                           const char *path,
+                           svn_revnum_t revision,
+                           apr_pool_t *result_pool,
+                           apr_pool_t *scratch_pool);
+
+/**
  * @defgroup Capabilities Dynamically query the server's capabilities.
  *
  * @{
@@ -1957,6 +2053,30 @@
  */
 #define SVN_RA_CAPABILITY_ATOMIC_REVPROPS "atomic-revprops"
 
+/**
+ * The capability to get inherited properties.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_RA_CAPABILITY_INHERITED_PROPS "inherited-props"
+
+/**
+ * The capability of a server to automatically remove transaction
+ * properties prefixed with SVN_PROP_EPHEMERAL_PREFIX.
+ *
+ * @since New in 1.8.
+ */
+#define SVN_RA_CAPABILITY_EPHEMERAL_TXNPROPS "ephemeral-txnprops"
+
+/**
+ * The capability of a server to walk revisions backwards in
+ * svn_ra_get_file_revs2
+ *
+ * @since New in 1.8.
+ */
+#define SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE "get-file-revs-reversed"
+
+
 /*       *** PLEASE READ THIS IF YOU ADD A NEW CAPABILITY ***
  *
  * RA layers generally fetch all capabilities when asked about any
@@ -2005,7 +2125,7 @@
  */
 typedef struct svn_ra_plugin_t
 {
-  /** The proper name of the RA library, (like "ra_neon" or "ra_local") */
+  /** The proper name of the RA library, (like "ra_serf" or "ra_local") */
   const char *name;
 
   /** Short doc string printed out by `svn --version` */
@@ -2276,7 +2396,7 @@
 
 /* Public RA implementations. */
 
-/** Initialize libsvn_ra_neon.
+/** Initialize libsvn_ra_serf.
  *
  * @deprecated Provided for backward compatibility with the 1.1 API. */
 SVN_DEPRECATED

Modified: trunk/GME/Include/subversion/svn_ra_svn.h
==============================================================================
--- trunk/GME/Include/subversion/svn_ra_svn.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_ra_svn.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -62,6 +62,13 @@
 #define SVN_RA_SVN_CAP_PARTIAL_REPLAY "partial-replay"
 /* maps to SVN_RA_CAPABILITY_ATOMIC_REVPROPS */
 #define SVN_RA_SVN_CAP_ATOMIC_REVPROPS "atomic-revprops"
+/* maps to SVN_RA_CAPABILITY_INHERITED_PROPERTIES: */
+#define SVN_RA_SVN_CAP_INHERITED_PROPS "inherited-props"
+/* maps to SVN_RA_CAPABILITY_EPHEMERAL_TXNPROPS */
+#define SVN_RA_SVN_CAP_EPHEMERAL_TXNPROPS "ephemeral-txnprops"
+/* maps to SVN_RA_CAPABILITY_GET_FILE_REVS_REVERSE */
+#define SVN_RA_SVN_CAP_GET_FILE_REVS_REVERSE "file-revs-reverse"
+
 
 /** ra_svn passes @c svn_dirent_t fields over the wire as a list of
  * words, these are the values used to represent each field.
@@ -161,11 +168,42 @@
  * input/output files.
  *
  * Either @a sock or @a in_file/@a out_file must be set, not both.
- * Specify the desired network data compression level (zlib) from
- * 0 (no compression) to 9 (best but slowest).
+ * @a compression_level specifies the desired network data compression
+ * level (zlib) from 0 (no compression) to 9 (best but slowest).
+ *
+ * If @a zero_copy_limit is not 0, cached file contents smaller than the
+ * given limit may be sent directly to the network socket.  Otherwise,
+ * it will be copied into a temporary buffer before being forwarded to
+ * the network stack.  Since the zero-copy code path has to enforce strict
+ * time-outs, the receiver must be able to process @a zero_copy_limit
+ * bytes within one second.  Even temporary failure to do so may cause
+ * the server to cancel the respective operation with a time-out error.
+ *
+ * To reduce the overhead of checking for cancellation requests from the
+ * data receiver, set @a error_check_interval to some non-zero value.
+ * It defines the number of bytes that must have been sent since the last
+ * check before the next check will be made.
+ *
+ * Allocate the result in @a pool.
+ *
+ * @since New in 1.8
+ */
+svn_ra_svn_conn_t *svn_ra_svn_create_conn3(apr_socket_t *sock,
+                                           apr_file_t *in_file,
+                                           apr_file_t *out_file,
+                                           int compression_level,
+                                           apr_size_t zero_copy_limit,
+                                           apr_size_t error_check_interval,
+                                           apr_pool_t *pool);
+
+/** Similar to svn_ra_svn_create_conn3() but disables the zero copy code
+ * path and sets the error checking interval to 0.
  *
  * @since New in 1.7.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_ra_svn_conn_t *
 svn_ra_svn_create_conn2(apr_socket_t *sock,
                         apr_file_t *in_file,
@@ -173,7 +211,7 @@
                         int compression_level,
                         apr_pool_t *pool);
 
-/** Similar to svn_ra_svn_create_conn2() but uses default
+/** Similar to svn_ra_svn_create_conn2() but uses the default
  * compression level (#SVN_DELTA_COMPRESSION_LEVEL_DEFAULT) for network
  * transmissions.
  *
@@ -203,22 +241,104 @@
 svn_ra_svn_has_capability(svn_ra_svn_conn_t *conn,
                           const char *capability);
 
-/** Return the data compression level to use for network transmissions
+/** Return the data compression level to use for network transmissions.
  *
  * @since New in 1.7.
  */
 int
 svn_ra_svn_compression_level(svn_ra_svn_conn_t *conn);
 
+/** Return the zero-copy data block limit to use for network
+ * transmissions.
+ *
+ * @see http://en.wikipedia.org/wiki/Zero-copy
+ *
+ * @since New in 1.8.
+ */
+apr_size_t
+svn_ra_svn_zero_copy_limit(svn_ra_svn_conn_t *conn);
+
 /** Returns the remote address of the connection as a string, if known,
  *  or NULL if inapplicable. */
 const char *
 svn_ra_svn_conn_remote_host(svn_ra_svn_conn_t *conn);
 
+/** Set @a *editor and @a *edit_baton to an editor which will pass editing
+ * operations over the network, using @a conn and @a pool.
+ *
+ * Upon successful completion of the edit, the editor will invoke @a callback
+ * with @a callback_baton as an argument.
+ */
+void
+svn_ra_svn_get_editor(const svn_delta_editor_t **editor,
+                      void **edit_baton,
+                      svn_ra_svn_conn_t *conn,
+                      apr_pool_t *pool,
+                      svn_ra_svn_edit_callback callback,
+                      void *callback_baton);
+
+/** Receive edit commands over the network and use them to drive @a editor
+ * with @a edit_baton.  On return, @a *aborted will be set if the edit was
+ * aborted.  The drive can be terminated with a finish-replay command only
+ * if @a for_replay is TRUE.
+ *
+ * @since New in 1.4.
+ */
+svn_error_t *
+svn_ra_svn_drive_editor2(svn_ra_svn_conn_t *conn,
+                         apr_pool_t *pool,
+                         const svn_delta_editor_t *editor,
+                         void *edit_baton,
+                         svn_boolean_t *aborted,
+                         svn_boolean_t for_replay);
+
+/** Like svn_ra_svn_drive_editor2, but with @a for_replay always FALSE.
+ *
+ * @deprecated Provided for backward compatibility with the 1.3 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
+svn_ra_svn_drive_editor(svn_ra_svn_conn_t *conn,
+                        apr_pool_t *pool,
+                        const svn_delta_editor_t *editor,
+                        void *edit_baton,
+                        svn_boolean_t *aborted);
+
+/** This function is only intended for use by svnserve.
+ *
+ * Perform CRAM-MD5 password authentication.  On success, return
+ * SVN_NO_ERROR with *user set to the username and *success set to
+ * TRUE.  On an error which can be reported to the client, report the
+ * error and return SVN_NO_ERROR with *success set to FALSE.  On
+ * communications failure, return an error.
+ */
+svn_error_t *
+svn_ra_svn_cram_server(svn_ra_svn_conn_t *conn,
+                       apr_pool_t *pool,
+                       svn_config_t *pwdb,
+                       const char **user,
+                       svn_boolean_t *success);
+
+/**
+ * Get libsvn_ra_svn version information.
+ * @since New in 1.1.
+ */
+const svn_version_t *
+svn_ra_svn_version(void);
+
+/**
+ * @defgroup ra_svn_deprecated ra_svn low-level functions
+ * @{
+ */
+
 /** Write a number over the net.
  *
  * Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_number(svn_ra_svn_conn_t *conn,
                         apr_pool_t *pool,
@@ -227,7 +347,11 @@
 /** Write a string over the net.
  *
  * Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_string(svn_ra_svn_conn_t *conn,
                         apr_pool_t *pool,
@@ -236,7 +360,11 @@
 /** Write a cstring over the net.
  *
  * Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_cstring(svn_ra_svn_conn_t *conn,
                          apr_pool_t *pool,
@@ -245,7 +373,11 @@
 /** Write a word over the net.
  *
  * Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_word(svn_ra_svn_conn_t *conn,
                       apr_pool_t *pool,
@@ -255,18 +387,32 @@
  * in which case an empty list will be written out.
  *
  * @since New in 1.5.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_proplist(svn_ra_svn_conn_t *conn,
                           apr_pool_t *pool,
                           apr_hash_t *props);
 
-/** Begin a list.  Writes will be buffered until the next read or flush. */
+/** Begin a list.  Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_start_list(svn_ra_svn_conn_t *conn,
                       apr_pool_t *pool);
 
-/** End a list.  Writes will be buffered until the next read or flush. */
+/** End a list.  Writes will be buffered until the next read or flush.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_end_list(svn_ra_svn_conn_t *conn,
                     apr_pool_t *pool);
@@ -275,7 +421,11 @@
  *
  * Normally this shouldn't be necessary, since the write buffer is flushed
  * when a read is attempted.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_flush(svn_ra_svn_conn_t *conn,
                  apr_pool_t *pool);
@@ -318,13 +468,22 @@
      for (i = 0; i < n; i++)
        SVN_ERR(svn_ra_svn_write_word(conn, pool, words[i]));
      SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)b", flag)); @endcode
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_tuple(svn_ra_svn_conn_t *conn,
                        apr_pool_t *pool,
                        const char *fmt, ...);
 
-/** Read an item from the network into @a *item. */
+/** Read an item from the network into @a *item.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_read_item(svn_ra_svn_conn_t *conn,
                      apr_pool_t *pool,
@@ -336,7 +495,11 @@
  * a client connection opened in tunnel mode, since people's dotfiles
  * sometimes write output to stdout.  It may only be called at the
  * beginning of a client connection.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_skip_leading_garbage(svn_ra_svn_conn_t *conn,
                                 apr_pool_t *pool);
@@ -372,7 +535,11 @@
  * SVN_RA_SVN_UNSPECIFIED_NUMBER, and 's', 'c', 'w', and 'l' values
  * will be set to @c NULL.  'b' may not appear inside an optional
  * tuple specification; use 'B' instead.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_parse_tuple(const apr_array_header_t *list,
                        apr_pool_t *pool,
@@ -380,7 +547,11 @@
 
 /** Read a tuple from the network and parse it as a tuple, using the
  * format string notation from svn_ra_svn_parse_tuple().
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_read_tuple(svn_ra_svn_conn_t *conn,
                       apr_pool_t *pool,
@@ -390,7 +561,11 @@
  * properties, storing the properties in a hash table.
  *
  * @since New in 1.5.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_parse_proplist(const apr_array_header_t *list,
                           apr_pool_t *pool,
@@ -398,7 +573,11 @@
 
 /** Read a command response from the network and parse it as a tuple, using
  * the format string notation from svn_ra_svn_parse_tuple().
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_read_cmd_response(svn_ra_svn_conn_t *conn,
                              apr_pool_t *pool,
@@ -417,7 +596,10 @@
  *
  * @since New in 1.6.
  *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_handle_commands2(svn_ra_svn_conn_t *conn,
                             apr_pool_t *pool,
@@ -439,7 +621,11 @@
 
 /** Write a command over the network, using the same format string notation
  * as svn_ra_svn_write_tuple().
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_cmd(svn_ra_svn_conn_t *conn,
                      apr_pool_t *pool,
@@ -450,75 +636,30 @@
  * same format string notation as svn_ra_svn_write_tuple().  Do not use
  * partial tuples with this function; if you need to use partial
  * tuples, just write out the "success" and argument tuple by hand.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_cmd_response(svn_ra_svn_conn_t *conn,
                               apr_pool_t *pool,
                               const char *fmt, ...);
 
-/** Write an unsuccessful command response over the network. */
+/** Write an unsuccessful command response over the network.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ *             RA_SVN low-level functions are no longer considered public.
+ */
+SVN_DEPRECATED
 svn_error_t *
 svn_ra_svn_write_cmd_failure(svn_ra_svn_conn_t *conn,
                              apr_pool_t *pool,
                              svn_error_t *err);
 
-/** Set @a *editor and @a *edit_baton to an editor which will pass editing
- * operations over the network, using @a conn and @a pool.
- *
- * Upon successful completion of the edit, the editor will invoke @a callback
- * with @a callback_baton as an argument.
- */
-void
-svn_ra_svn_get_editor(const svn_delta_editor_t **editor,
-                      void **edit_baton,
-                      svn_ra_svn_conn_t *conn,
-                      apr_pool_t *pool,
-                      svn_ra_svn_edit_callback callback,
-                      void *callback_baton);
-
-/** Receive edit commands over the network and use them to drive @a editor
- * with @a edit_baton.  On return, @a *aborted will be set if the edit was
- * aborted.  The drive can be terminated with a finish-replay command only
- * if @a for_replay is TRUE.
- */
-svn_error_t *
-svn_ra_svn_drive_editor2(svn_ra_svn_conn_t *conn,
-                         apr_pool_t *pool,
-                         const svn_delta_editor_t *editor,
-                         void *edit_baton,
-                         svn_boolean_t *aborted,
-                         svn_boolean_t for_replay);
-
-/** Like svn_ra_svn_drive_editor2, but with @a for_replay always FALSE.
- */
-svn_error_t *
-svn_ra_svn_drive_editor(svn_ra_svn_conn_t *conn,
-                        apr_pool_t *pool,
-                        const svn_delta_editor_t *editor,
-                        void *edit_baton,
-                        svn_boolean_t *aborted);
-
-/** This function is only intended for use by svnserve.
- *
- * Perform CRAM-MD5 password authentication.  On success, return
- * SVN_NO_ERROR with *user set to the username and *success set to
- * TRUE.  On an error which can be reported to the client, report the
- * error and return SVN_NO_ERROR with *success set to FALSE.  On
- * communications failure, return an error.
- */
-svn_error_t *
-svn_ra_svn_cram_server(svn_ra_svn_conn_t *conn,
-                       apr_pool_t *pool,
-                       svn_config_t *pwdb,
-                       const char **user,
-                       svn_boolean_t *success);
-
 /**
- * Get libsvn_ra_svn version information.
- * @since New in 1.1.
+ * @}
  */
-const svn_version_t *
-svn_ra_svn_version(void);
 
 #ifdef __cplusplus
 }

Modified: trunk/GME/Include/subversion/svn_repos.h
==============================================================================
--- trunk/GME/Include/subversion/svn_repos.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_repos.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -69,8 +69,11 @@
 /** The different policies for processing the UUID in the dumpfile. */
 enum svn_repos_load_uuid
 {
+  /** only update uuid if the repos has no revisions. */
   svn_repos_load_uuid_default,
+  /** never update uuid. */
   svn_repos_load_uuid_ignore,
+  /** always update uuid. */
   svn_repos_load_uuid_force
 };
 
@@ -242,7 +245,13 @@
   svn_repos_notify_recover_start,
 
   /** Upgrade has started. */
-  svn_repos_notify_upgrade_start
+  svn_repos_notify_upgrade_start,
+
+  /** A revision was skipped during loading. @since New in 1.8. */
+  svn_repos_notify_load_skipped_rev,
+
+  /** The structure of a revision is being verified.  @since New in 1.8. */
+  svn_repos_notify_verify_rev_structure
 
 } svn_repos_notify_action_t;
 
@@ -300,10 +309,10 @@
       #svn_repos_notify_pack_shard_end_revprop, the shard processed. */
   apr_int64_t shard;
 
-  /** For #svn_repos_notify_load_committed_rev, the revision committed. */
+  /** For #svn_repos_notify_load_node_done, the revision committed. */
   svn_revnum_t new_revision;
 
-  /** For #svn_repos_notify_load_committed_rev, the source revision, if
+  /** For #svn_repos_notify_load_node_done, the source revision, if
       different from @a new_revision, otherwise #SVN_INVALID_REVNUM.
       For #svn_repos_notify_load_txn_start, the source revision. */
   svn_revnum_t old_revision;
@@ -434,6 +443,11 @@
  * It does *not* guarantee the most optimized repository state as a
  * dump and subsequent load would.
  *
+ * @note On some platforms the exclusive lock does not exclude other
+ * threads in the same process so this function should only be called
+ * by a single threaded process, or by a multi-threaded process when
+ * no other threads are accessing the repository.
+ *
  * @since New in 1.7.
  */
 svn_error_t *
@@ -483,6 +497,8 @@
                          const char *capability,
                          apr_pool_t *pool);
 
+/** @} */
+
 /**
  * The capability of doing the right thing with merge-tracking
  * information, both storing it and responding to queries about it.
@@ -497,6 +513,8 @@
  * colons for their own reasons.  While this RA limitation has no
  * direct impact on repository capabilities, there's no reason to be
  * gratuitously different either.
+ *
+ * If you add a capability, update svn_repos_capabilities().
  */
 
 
@@ -513,7 +531,29 @@
  * source filesystem as part of the copy operation; currently, this
  * means deleting copied, unused logfiles for a Berkeley DB source
  * repository.
+ *
+ * If @a incremental is TRUE, make an effort to not re-copy information
+ * already present in the destination. If incremental hotcopy is not
+ * implemented by the filesystem backend, raise SVN_ERR_UNSUPPORTED_FEATURE.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_hotcopy2(const char *src_path,
+                   const char *dst_path,
+                   svn_boolean_t clean_logs,
+                   svn_boolean_t incremental,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
+                   apr_pool_t *pool);
+
+/**
+ * Like svn_repos_hotcopy2(), but with @a incremental always passed as
+ * @c FALSE and without cancellation support.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_hotcopy(const char *src_path,
                   const char *dst_path,
@@ -628,6 +668,34 @@
 svn_repos_recover(const char *path,
                   apr_pool_t *pool);
 
+/**
+ * Callback for svn_repos_freeze.
+ *
+ * @since New in 1.8.
+ */
+typedef svn_error_t *(*svn_repos_freeze_func_t)(void *baton, apr_pool_t *pool);
+
+/**
+ * Take an exclusive lock on each of the repositories in @a paths to
+ * prevent commits and then while holding all the locks invoke @a
+ * freeze_func passing @a freeze_baton.  Each repository may be readable by
+ * Subversion while frozen, or may be unreadable, depending on which
+ * FS backend the repository uses.  Repositories are locked in the
+ * order in which they are specified in the array.
+ *
+ * @note On some platforms the exclusive lock does not exclude other
+ * threads in the same process so this function should only be called
+ * by a single threaded process, or by a multi-threaded process when
+ * no other threads are accessing the repositories.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_freeze(apr_array_header_t *paths,
+                 svn_repos_freeze_func_t freeze_func,
+                 void *freeze_baton,
+                 apr_pool_t *pool);
+
 /** This function is a wrapper around svn_fs_berkeley_logfiles(),
  * returning log file paths relative to the root of the repository.
  *
@@ -739,6 +807,27 @@
 svn_repos_post_unlock_hook(svn_repos_t *repos,
                            apr_pool_t *pool);
 
+/** Specify that Subversion should consult the configuration file
+ * located at @a hooks_env_path to determine how to setup the
+ * environment for hook scripts invoked for the repository @a repos.
+ * As a special case, if @a hooks_env_path is @c NULL, look for the
+ * file in its default location within the repository disk structure.
+ * If @a hooks_env_path is not absolute, it specifies a path relative
+ * to the parent of the file's default location.
+ *
+ * Use @a scratch_pool for temporary allocations.
+ *
+ * If this function is not called, or if the specified configuration
+ * file does not define any environment variables, hooks will run in
+ * an empty environment.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_hooks_setenv(svn_repos_t *repos,
+                       const char *hooks_env_path,
+                       apr_pool_t *scratch_pool);
+
 /** @} */
 
 /* ---------------------------------------------------------------*/
@@ -783,6 +872,18 @@
  * avoid sending data through @a editor/@a edit_baton which is not
  * authorized for transmission.
  *
+ * @a zero_copy_limit controls the maximum size (in bytes) at which
+ * data blocks may be sent using the zero-copy code path.  On that
+ * path, a number of in-memory copy operations have been eliminated to
+ * maximize throughput.  However, until the whole block has been
+ * pushed to the network stack, other clients block, so be careful
+ * when using larger values here.  Pass 0 for @a zero_copy_limit to
+ * disable this optimization altogether.
+ *
+ * @a note Never activate this optimization if @a editor might access
+ * any FSFS data structures (and, hence, caches).  So, it is basically
+ * safe for networked editors only.
+ *
  * All allocation for the context and collected state will occur in
  * @a pool.
  *
@@ -815,8 +916,34 @@
  * than or equal to the depth of the working copy, then the editor
  * operations will affect only paths at or above @a depth.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_begin_report3(void **report_baton,
+                        svn_revnum_t revnum,
+                        svn_repos_t *repos,
+                        const char *fs_base,
+                        const char *target,
+                        const char *tgt_path,
+                        svn_boolean_t text_deltas,
+                        svn_depth_t depth,
+                        svn_boolean_t ignore_ancestry,
+                        svn_boolean_t send_copyfrom_args,
+                        const svn_delta_editor_t *editor,
+                        void *edit_baton,
+                        svn_repos_authz_func_t authz_read_func,
+                        void *authz_read_baton,
+                        apr_size_t zero_copy_limit,
+                        apr_pool_t *pool);
+
+/**
+ * The same as svn_repos_begin_report3(), but with @a zero_copy_limit
+ * always passed as 0.
+ *
  * @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_begin_report2(void **report_baton,
                         svn_revnum_t revnum,
@@ -867,7 +994,7 @@
 
 
 /**
- * Given a @a report_baton constructed by svn_repos_begin_report2(),
+ * Given a @a report_baton constructed by svn_repos_begin_report3(),
  * record the presence of @a path, at @a revision with depth @a depth,
  * in the current tree.
  *
@@ -938,7 +1065,7 @@
                    apr_pool_t *pool);
 
 /**
- * Given a @a report_baton constructed by svn_repos_begin_report2(),
+ * Given a @a report_baton constructed by svn_repos_begin_report3(),
  * record the presence of @a path in the current tree, containing the contents
  * of @a link_path at @a revision with depth @a depth.
  *
@@ -1004,7 +1131,7 @@
                     svn_boolean_t start_empty,
                     apr_pool_t *pool);
 
-/** Given a @a report_baton constructed by svn_repos_begin_report2(),
+/** Given a @a report_baton constructed by svn_repos_begin_report3(),
  * record the non-existence of @a path in the current tree.
  *
  * @a path may not be underneath a path on which svn_repos_set_path3()
@@ -1020,7 +1147,7 @@
                       const char *path,
                       apr_pool_t *pool);
 
-/** Given a @a report_baton constructed by svn_repos_begin_report2(),
+/** Given a @a report_baton constructed by svn_repos_begin_report3(),
  * finish the report and drive the editor as specified when the report
  * baton was constructed.
  *
@@ -1037,7 +1164,7 @@
                         apr_pool_t *pool);
 
 
-/** Given a @a report_baton constructed by svn_repos_begin_report2(),
+/** Given a @a report_baton constructed by svn_repos_begin_report3(),
  * abort the report.  This function can be called anytime before
  * svn_repos_finish_report() is called.
  *
@@ -1111,13 +1238,15 @@
  * the total size of the delta.
  *
  * ### svn_repos_dir_delta2 is mostly superseded by the reporter
- * ### functionality (svn_repos_begin_report2 and friends).
+ * ### functionality (svn_repos_begin_report3 and friends).
  * ### svn_repos_dir_delta2 does allow the roots to be transaction
  * ### roots rather than just revision roots, and it has the
  * ### entry_props flag.  Almost all of Subversion's own code uses the
  * ### reporter instead; there are some stray references to the
  * ### svn_repos_dir_delta[2] in comments which should probably
  * ### actually refer to the reporter.
+ *
+ * @since New in 1.5.
  */
 svn_error_t *
 svn_repos_dir_delta2(svn_fs_root_t *src_root,
@@ -1229,7 +1358,8 @@
  *
  * @a repos is a previously opened repository.  @a repos_url is the
  * decoded URL to the base of the repository, and is used to check
- * copyfrom paths.  @a txn is a filesystem transaction object to use
+ * copyfrom paths.  copyfrom paths passed to the editor must be full,
+ * URI-encoded, URLs.  @a txn is a filesystem transaction object to use
  * during the commit, or @c NULL to indicate that this function should
  * create (and fully manage) a new transaction.
  *
@@ -1248,14 +1378,14 @@
  *
  * Calling @a (*editor)->close_edit completes the commit.
  *
- * If @a callback is non-NULL, then before @c close_edit returns (but
+ * If @a commit_callback is non-NULL, then before @c close_edit returns (but
  * after the commit has succeeded) @c close_edit will invoke
- * @a callback with a filled-in #svn_commit_info_t *, @a callback_baton,
- * and @a pool or some subpool thereof as arguments.  If @a callback
+ * @a commit_callback with a filled-in #svn_commit_info_t *, @a commit_baton,
+ * and @a pool or some subpool thereof as arguments.  If @a commit_callback
  * returns an error, that error will be returned from @c close_edit,
  * otherwise if there was a post-commit hook failure, then that error
  * will be returned with code SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.
- * (Note that prior to Subversion 1.6, @a callback cannot be NULL; if
+ * (Note that prior to Subversion 1.6, @a commit_callback cannot be NULL; if
  * you don't need a callback, pass a dummy function.)
  *
  * Calling @a (*editor)->abort_edit aborts the commit, and will also
@@ -1276,8 +1406,8 @@
                              const char *repos_url,
                              const char *base_path,
                              apr_hash_t *revprop_table,
-                             svn_commit_callback2_t callback,
-                             void *callback_baton,
+                             svn_commit_callback2_t commit_callback,
+                             void *commit_baton,
                              svn_repos_authz_callback_t authz_callback,
                              void *authz_baton,
                              apr_pool_t *pool);
@@ -1302,8 +1432,8 @@
                              const char *base_path,
                              const char *user,
                              const char *log_msg,
-                             svn_commit_callback2_t callback,
-                             void *callback_baton,
+                             svn_commit_callback2_t commit_callback,
+                             void *commit_baton,
                              svn_repos_authz_callback_t authz_callback,
                              void *authz_baton,
                              apr_pool_t *pool);
@@ -1628,8 +1758,9 @@
  * filesystem, as limited by @a paths. In the latter case those revisions
  * are skipped and @a receiver is not invoked.
  *
- * If @a revprops is NULL, retrieve all revprops; else, retrieve only the
- * revprops named in the array (i.e. retrieve none if the array is empty).
+ * If @a revprops is NULL, retrieve all revision properties; else, retrieve
+ * only the revision properties named by the (const char *) array elements
+ * (i.e. retrieve none if the array is empty).
  *
  * If any invocation of @a receiver returns error, return that error
  * immediately and without wrapping it.
@@ -1743,6 +1874,8 @@
  * set @a *catalog to a catalog of this mergeinfo.  @a *catalog will
  * never be @c NULL but may be empty.
  *
+ * The paths in @a paths, and the keys of @a catalog, start with '/'.
+ *
  * @a inherit indicates whether explicit, explicit or inherited, or
  * only inherited mergeinfo for @a paths is fetched.
  *
@@ -1810,6 +1943,10 @@
  * If @a include_merged_revisions is TRUE, revisions which a included as a
  * result of a merge between @a start and @a end will be included.
  *
+ * Since Subversion 1.8 this function has been enabled to support reversion
+ * the revision range for @a include_merged_revision @c FALSE reporting by
+ * switching @a start with @a end.
+ *
  * @since New in 1.5.
  */
 svn_error_t *
@@ -1932,7 +2069,11 @@
  *
  * ### 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,
@@ -1941,6 +2082,8 @@
                                   apr_pool_t *pool);
 
 
+/** @} */
+
 /** @defgroup svn_repos_fs_locks Repository lock wrappers
  * @{
  */
@@ -2238,7 +2381,6 @@
                               const apr_array_header_t *props,
                               apr_pool_t *pool);
 
-/** @} */
 
 /* ---------------------------------------------------------------*/
 
@@ -2248,7 +2390,7 @@
  * @{
  *
  * As it turns out, the svn_repos_replay2(), svn_repos_dir_delta2() and
- * svn_repos_begin_report2() interfaces can be extremely useful for
+ * svn_repos_begin_report3() interfaces can be extremely useful for
  * examining the repository, or more exactly, changes to the repository.
  * These drivers allows for differences between two trees to be
  * described using an editor.
@@ -2301,7 +2443,7 @@
  * repos's filesystem.
  *
  * The editor can also be driven by svn_repos_dir_delta2() or
- * svn_repos_begin_report2(), but unless you have special needs,
+ * svn_repos_begin_report3(), but unless you have special needs,
  * svn_repos_replay2() is preferred.
  *
  * Invoke svn_repos_node_from_baton() on @a edit_baton to obtain the root
@@ -2359,6 +2501,7 @@
 /* The RFC822-style headers in our dumpfile format. */
 #define SVN_REPOS_DUMPFILE_MAGIC_HEADER            "SVN-fs-dump-format-version"
 #define SVN_REPOS_DUMPFILE_FORMAT_VERSION           3
+#define SVN_REPOS_DUMPFILE_FORMAT_VERSION_DELTAS    3
 #define SVN_REPOS_DUMPFILE_UUID                      "UUID"
 #define SVN_REPOS_DUMPFILE_CONTENT_LENGTH            "Content-length"
 
@@ -2450,7 +2593,7 @@
  * revision up through @a end_rev.  Use @a pool for all allocation.  If
  * non- at c NULL, send feedback to @a feedback_stream.  If @a dumpstream is
  * @c NULL, this is effectively a primitive verify.  It is not complete,
- * however; see svn_fs_verify instead.
+ * however; svn_repos_verify_fs2() and svn_fs_verify().
  *
  * If @a start_rev is #SVN_INVALID_REVNUM, then start dumping at revision
  * 0.  If @a end_rev is #SVN_INVALID_REVNUM, then dump through the @c HEAD
@@ -2546,6 +2689,13 @@
  * If the dumpstream contains no UUID, then @a uuid_action is
  * ignored and the repository UUID is not touched.
  *
+ * @a start_rev and @a end_rev act as filters, the lower and upper
+ * (inclusive) range values of revisions in @a dumpstream which will
+ * be loaded.  Either both of these values are #SVN_INVALID_REVNUM (in
+ * which case no revision-based filtering occurs at all), or both are
+ * valid revisions (where @a start_rev is older than or equivalent to
+ * @a end_rev).
+ *
  * If @a parent_dir is not NULL, then the parser will reparent all the
  * loaded nodes, from root to @a parent_dir.  The directory @a parent_dir
  * must be an existing directory in the repository.
@@ -2567,8 +2717,31 @@
  * @a cancel_baton as argument to see if the client wishes to cancel
  * the load.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_load_fs4(svn_repos_t *repos,
+                   svn_stream_t *dumpstream,
+                   svn_revnum_t start_rev,
+                   svn_revnum_t end_rev,
+                   enum svn_repos_load_uuid uuid_action,
+                   const char *parent_dir,
+                   svn_boolean_t use_pre_commit_hook,
+                   svn_boolean_t use_post_commit_hook,
+                   svn_boolean_t validate_props,
+                   svn_repos_notify_func_t notify_func,
+                   void *notify_baton,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
+                   apr_pool_t *pool);
+
+/** Similar to svn_repos_load_fs4(), but with @a start_rev and @a
+ * end_rev always passed as #SVN_INVALID_REVNUM.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_load_fs3(svn_repos_t *repos,
                    svn_stream_t *dumpstream,
@@ -2623,21 +2796,17 @@
 
 
 /**
- * A vtable that is driven by svn_repos_parse_dumpstream2().
+ * A vtable that is driven by svn_repos_parse_dumpstream3().
  *
- * @since New in 1.1.
+ * @since New in 1.8.
  */
-typedef struct svn_repos_parse_fns2_t
+typedef struct svn_repos_parse_fns3_t
 {
-  /** The parser has discovered a new revision record within the
-   * parsing session represented by @a parse_baton.  All the headers are
-   * placed in @a headers (allocated in @a pool), which maps <tt>const
-   * char *</tt> header-name ==> <tt>const char *</tt> header-value.
-   * The @a revision_baton received back (also allocated in @a pool)
-   * represents the revision.
+  /** The parser has discovered a new "magic header" record within the
+   * parsing session represented by @a parse_baton.  The dump-format
+   * version number is @a version.
    */
-  svn_error_t *(*new_revision_record)(void **revision_baton,
-                                      apr_hash_t *headers,
+  svn_error_t *(*magic_header_record)(int version,
                                       void *parse_baton,
                                       apr_pool_t *pool);
 
@@ -2649,6 +2818,18 @@
                               void *parse_baton,
                               apr_pool_t *pool);
 
+  /** The parser has discovered a new revision record within the
+   * parsing session represented by @a parse_baton.  All the headers are
+   * placed in @a headers (allocated in @a pool), which maps <tt>const
+   * char *</tt> header-name ==> <tt>const char *</tt> header-value.
+   * The @a revision_baton received back (also allocated in @a pool)
+   * represents the revision.
+   */
+  svn_error_t *(*new_revision_record)(void **revision_baton,
+                                      apr_hash_t *headers,
+                                      void *parse_baton,
+                                      apr_pool_t *pool);
+
   /** The parser has discovered a new node record within the current
    * revision represented by @a revision_baton.  All the headers are
    * placed in @a headers (as with @c new_revision_record), allocated in
@@ -2711,22 +2892,28 @@
    */
   svn_error_t *(*close_revision)(void *revision_baton);
 
-} svn_repos_parse_fns2_t;
-
-/** @deprecated Provided for backward compatibility with the 1.2 API. */
-typedef svn_repos_parse_fns2_t svn_repos_parser_fns2_t;
+} svn_repos_parse_fns3_t;
 
 
 /**
  * Read and parse dumpfile-formatted @a stream, calling callbacks in
  * @a parse_fns/@a parse_baton, and using @a pool for allocations.
  *
+ * If @a deltas_are_text is @c TRUE, handle text-deltas with the @a
+ * set_fulltext callback.  This is useful when manipulating a dump
+ * stream without loading it.  Otherwise handle text-deltas with the
+ * @a apply_textdelta callback.
+ *
  * If @a cancel_func is not @c NULL, it is called periodically with
  * @a cancel_baton as argument to see if the client wishes to cancel
  * the dump.
  *
  * This parser has built-in knowledge of the dumpfile format, but only
- * in a general sense:
+ * in a limited sense:
+ *
+ *    * it recognizes the "magic" format-version header.
+ *
+ *    * it recognizes the UUID header.
  *
  *    * it recognizes revision and node records by looking for either
  *      a REVISION_NUMBER or NODE_PATH headers.
@@ -2738,14 +2925,16 @@
  *      and text, and pass the pieces to the vtable.
  *
  * This is enough knowledge to make it easy on vtable implementors,
- * but still allow expansion of the format:  most headers are ignored.
+ * but still allow expansion of the format: most headers do not have
+ * to be handled explicitly.
  *
- * @since New in 1.1.
+ * @since New in 1.8.
  */
 svn_error_t *
-svn_repos_parse_dumpstream2(svn_stream_t *stream,
-                            const svn_repos_parse_fns2_t *parse_fns,
+svn_repos_parse_dumpstream3(svn_stream_t *stream,
+                            const svn_repos_parse_fns3_t *parse_fns,
                             void *parse_baton,
+                            svn_boolean_t deltas_are_text,
                             svn_cancel_func_t cancel_func,
                             void *cancel_baton,
                             apr_pool_t *pool);
@@ -2757,6 +2946,13 @@
  * UUID records in a manner consistent with @a uuid_action.  Use @a pool
  * to operate on the fs.
  *
+ * @a start_rev and @a end_rev act as filters, the lower and upper
+ * (inclusive) range values of revisions in @a dumpstream which will
+ * be loaded.  Either both of these values are #SVN_INVALID_REVNUM (in
+ * which case no revision-based filtering occurs at all), or both are
+ * valid revisions (where @a start_rev is older than or equivalent to
+ * @a end_rev).
+ *
  * If @a use_history is set, then the parser will require relative
  * 'copyfrom' history to exist in the repository when it encounters
  * nodes that are added-with-history.
@@ -2769,14 +2965,14 @@
  * loaded nodes, from root to @a parent_dir.  The directory @a parent_dir
  * must be an existing directory in the repository.
  *
- * Print all parsing feedback to @a outstream (if non- at c NULL).
- *
- * @since New in 1.7.
+ * @since New in 1.8.
  */
 svn_error_t *
-svn_repos_get_fs_build_parser3(const svn_repos_parse_fns2_t **parser,
+svn_repos_get_fs_build_parser4(const svn_repos_parse_fns3_t **parser,
                                void **parse_baton,
                                svn_repos_t *repos,
+                               svn_revnum_t start_rev,
+                               svn_revnum_t end_rev,
                                svn_boolean_t use_history,
                                svn_boolean_t validate_props,
                                enum svn_repos_load_uuid uuid_action,
@@ -2785,24 +2981,59 @@
                                void *notify_baton,
                                apr_pool_t *pool);
 
+
 /**
- * Similar to svn_repos_get_fs_build_parser3(), but with @a outstream
- * in place if a #svn_repos_notify_func_t and baton and with
- * @a validate_props always FALSE.
+ * A vtable that is driven by svn_repos_parse_dumpstream2().
+ * Similar to #svn_repos_parse_fns3_t except that it lacks
+ * the delete_node_property and apply_textdelta callbacks.
  *
- * @since New in 1.1.
- * @deprecated Provided for backward compatibility with the 1.6 API.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
-SVN_DEPRECATED
-svn_error_t *
-svn_repos_get_fs_build_parser2(const svn_repos_parse_fns2_t **parser,
-                               void **parse_baton,
-                               svn_repos_t *repos,
-                               svn_boolean_t use_history,
-                               enum svn_repos_load_uuid uuid_action,
-                               svn_stream_t *outstream,
-                               const char *parent_dir,
-                               apr_pool_t *pool);
+typedef struct svn_repos_parse_fns2_t
+{
+  /** Same as #svn_repos_parse_fns3_t.new_revision_record. */
+  svn_error_t *(*new_revision_record)(void **revision_baton,
+                                      apr_hash_t *headers,
+                                      void *parse_baton,
+                                      apr_pool_t *pool);
+  /** Same as #svn_repos_parse_fns3_t.uuid_record. */
+  svn_error_t *(*uuid_record)(const char *uuid,
+                              void *parse_baton,
+                              apr_pool_t *pool);
+  /** Same as #svn_repos_parse_fns3_t.new_node_record. */
+  svn_error_t *(*new_node_record)(void **node_baton,
+                                  apr_hash_t *headers,
+                                  void *revision_baton,
+                                  apr_pool_t *pool);
+  /** Same as #svn_repos_parse_fns3_t.set_revision_property. */
+  svn_error_t *(*set_revision_property)(void *revision_baton,
+                                        const char *name,
+                                        const svn_string_t *value);
+  /** Same as #svn_repos_parse_fns3_t.set_node_property. */
+  svn_error_t *(*set_node_property)(void *node_baton,
+                                    const char *name,
+                                    const svn_string_t *value);
+  /** Same as #svn_repos_parse_fns3_t.delete_node_property. */
+  svn_error_t *(*delete_node_property)(void *node_baton,
+                                       const char *name);
+  /** Same as #svn_repos_parse_fns3_t.remove_node_props. */
+  svn_error_t *(*remove_node_props)(void *node_baton);
+  /** Same as #svn_repos_parse_fns3_t.set_fulltext. */
+  svn_error_t *(*set_fulltext)(svn_stream_t **stream,
+                               void *node_baton);
+  /** Same as #svn_repos_parse_fns3_t.apply_textdelta. */
+  svn_error_t *(*apply_textdelta)(svn_txdelta_window_handler_t *handler,
+                                  void **handler_baton,
+                                  void *node_baton);
+  /** Same as #svn_repos_parse_fns3_t.close_node. */
+  svn_error_t *(*close_node)(void *node_baton);
+  /** Same as #svn_repos_parse_fns3_t.close_revision. */
+  svn_error_t *(*close_revision)(void *revision_baton);
+} svn_repos_parse_fns2_t;
+
+/** @deprecated Provided for backward compatibility with the 1.7 API. */
+typedef svn_repos_parse_fns2_t svn_repos_parser_fns2_t;
+
 
 /**
  * A vtable that is driven by svn_repos_parse_dumpstream().
@@ -2848,6 +3079,21 @@
 
 
 /**
+ * Similar to svn_repos_parse_dumpstream3(), but uses the more limited
+ * #svn_repos_parser_fns2_t vtable type.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
+svn_repos_parse_dumpstream2(svn_stream_t *stream,
+                            const svn_repos_parser_fns2_t *parse_fns,
+                            void *parse_baton,
+                            svn_cancel_func_t cancel_func,
+                            void *cancel_baton,
+                            apr_pool_t *pool);
+
+/**
  * Similar to svn_repos_parse_dumpstream2(), but uses the more limited
  * #svn_repos_parser_fns_t vtable type.
  *
@@ -2862,6 +3108,45 @@
                            void *cancel_baton,
                            apr_pool_t *pool);
 
+/**
+ * Similar to svn_repos_get_fs_build_parser4(), but with @a start_rev
+ * and @a end_rev always passed as #SVN_INVALID_REVNUM, and yielding
+ * the more limited svn_repos_parse_fns2_t.
+ *
+ * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
+svn_repos_get_fs_build_parser3(const svn_repos_parse_fns2_t **parser,
+                               void **parse_baton,
+                               svn_repos_t *repos,
+                               svn_boolean_t use_history,
+                               svn_boolean_t validate_props,
+                               enum svn_repos_load_uuid uuid_action,
+                               const char *parent_dir,
+                               svn_repos_notify_func_t notify_func,
+                               void *notify_baton,
+                               apr_pool_t *pool);
+
+/**
+ * Similar to svn_repos_get_fs_build_parser3(), but with @a outstream
+ * in place if a #svn_repos_notify_func_t and baton and with
+ * @a validate_props always FALSE.
+ *
+ * @since New in 1.1.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
+SVN_DEPRECATED
+svn_error_t *
+svn_repos_get_fs_build_parser2(const svn_repos_parse_fns2_t **parser,
+                               void **parse_baton,
+                               svn_repos_t *repos,
+                               svn_boolean_t use_history,
+                               enum svn_repos_load_uuid uuid_action,
+                               svn_stream_t *outstream,
+                               const char *parent_dir,
+                               apr_pool_t *pool);
 
 /**
  * Similar to svn_repos_get_fs_build_parser2(), but yields the more
@@ -2889,16 +3174,37 @@
  */
 typedef struct svn_authz_t svn_authz_t;
 
-/** Read authz configuration data from @a file (a file or registry
- * path) into @a *authz_p, allocated in @a pool.
+/**
+ * Read authz configuration data from @a path (a dirent, an absolute file url
+ * or a registry path) into @a *authz_p, allocated in @a pool.
  *
- * If @a file is not a valid authz rule file, then return
- * SVN_AUTHZ_INVALID_CONFIG.  The contents of @a *authz_p is then
- * undefined.  If @a must_exist is TRUE, a missing authz file is also
- * an error.
+ * If @a groups_path (a dirent, an absolute file url, or a registry path) is
+ * set, use the global groups parsed from it.
+ *
+ * If @a path or @a groups_path is not a valid authz rule file, then return
+ * #SVN_ERR_AUTHZ_INVALID_CONFIG.  The contents of @a *authz_p is then
+ * undefined.  If @a must_exist is TRUE, a missing authz or groups file
+ * is also an error other than #SVN_ERR_AUTHZ_INVALID_CONFIG (exact error
+ * depends on the access type).
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_authz_read2(svn_authz_t **authz_p,
+                      const char *path,
+                      const char *groups_path,
+                      svn_boolean_t must_exist,
+                      apr_pool_t *pool);
+
+
+/**
+ * Similar to svn_repos_authz_read2(), but with @a groups_path and @a
+ * repos_root always passed as @c NULL.
  *
  * @since New in 1.3.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_repos_authz_read(svn_authz_t **authz_p,
                      const char *file,
@@ -2906,6 +3212,20 @@
                      apr_pool_t *pool);
 
 /**
+ * Read authz configuration data from @a stream into @a *authz_p,
+ * allocated in @a pool.
+ *
+ * If @a groups_stream is set, use the global groups parsed from it.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_authz_parse(svn_authz_t **authz_p,
+                      svn_stream_t *stream,
+                      svn_stream_t *groups_stream,
+                      apr_pool_t *pool);
+
+/**
  * Check whether @a user can access @a path in the repository @a
  * repos_name with the @a required_access.  @a authz lists the ACLs to
  * check against.  Set @a *access_granted to indicate if the requested
@@ -2919,6 +3239,10 @@
  * For compatibility with 1.6, and earlier, @a repos_name can be NULL
  * in which case it is equivalent to a @a repos_name of "".
  *
+ * @note Presently, @a repos_name must byte-for-byte match the repos_name
+ * specified in the authz file; it is treated as an opaque string, and not
+ * as a dirent.
+ *
  * @since New in 1.3.
  */
 svn_error_t *
@@ -2988,8 +3312,14 @@
  */
 typedef enum svn_repos_revision_access_level_t
 {
+  /** no access allowed to the revision properties and all changed-paths
+   * information. */ 
   svn_repos_revision_access_none,
+  /** access granted to some (svn:date and svn:author) revision properties and
+   * changed-paths information on paths the read has access to. */
   svn_repos_revision_access_partial,
+  /** access granted to all revision properites and changed-paths
+   * information. */
   svn_repos_revision_access_full
 }
 svn_repos_revision_access_level_t;
@@ -3013,6 +3343,35 @@
                                 void *authz_read_baton,
                                 apr_pool_t *pool);
 
+/**
+ * Set @a *inherited_values to a depth-first ordered array of
+ * #svn_prop_inherited_item_t * structures (the path_or_url members of
+ * which are relative filesystem paths) representing the properties
+ * inherited by @a path in @a root.  If no properties are inherited,
+ * then set @a *inherited_values to an empty array.
+ *
+ * if @a propname is NULL then retrieve all explicit and/or inherited
+ * properties.  Otherwise retrieve only the properties named @a propname.
+ *
+ * If optional @a authz_read_func is non-NULL, then use this function
+ * (along with optional @a authz_read_baton) to check the readability
+ * of each parent path from which properties are inherited. Silently omit
+ * properties for unreadable parent paths.
+ *
+ * Allocate @a *inherited_props in @a result_pool.  Use @a scratch_pool for
+ * temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_repos_fs_get_inherited_props(apr_array_header_t **inherited_props,
+                                 svn_fs_root_t *root,
+                                 const char *path,
+                                 const char *propname,
+                                 svn_repos_authz_func_t authz_read_func,
+                                 void *authz_read_baton,
+                                 apr_pool_t *result_pool,
+                                 apr_pool_t *scratch_pool);
 
 
 /** Capabilities **/
@@ -3040,7 +3399,6 @@
                                        const apr_array_header_t *capabilities);
 
 
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_sorts.h
==============================================================================
--- trunk/GME/Include/subversion/svn_sorts.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_sorts.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -80,6 +80,13 @@
      apr_array_header_t *array;
      array = svn_sort__hash(hsh, svn_sort_compare_items_as_paths, pool);
    @endcode
+ *
+ * This function works like svn_sort_compare_items_lexically() except that it
+ * orders children in subdirectories directly after their parents. This allows
+ * using the given ordering for a depth first walk, but at a performance
+ * penalty. Code that doesn't need this special behavior for children, e.g. when
+ * sorting files at a single directory level should use
+ * svn_sort_compare_items_lexically() instead.
  */
 int
 svn_sort_compare_items_as_paths(const svn_sort__item_t *a,
@@ -112,9 +119,9 @@
 
 
 /**
- * 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 +132,13 @@
                        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.
@@ -145,7 +152,7 @@
 /** Sort @a ht according to its keys, return an @c apr_array_header_t
  * containing @c svn_sort__item_t structures holding those keys and values
  * (i.e. for each @c svn_sort__item_t @a item in the returned array,
- * @a item->key and @a item->size are the hash key, and @a item->data points to
+ * @a item->key and @a item->size are the hash key, and @a item->value points to
  * the hash value).
  *
  * Storage is shared with the original hash, not copied.
@@ -164,34 +171,51 @@
                                       const svn_sort__item_t *),
                apr_pool_t *pool);
 
-/* Return the lowest index at which the element *KEY should be inserted into
-   the array ARRAY, according to the ordering defined by COMPARE_FUNC.
-   The array must already be sorted in the ordering defined by COMPARE_FUNC.
-   COMPARE_FUNC is defined as for the C stdlib function bsearch(). */
+/* 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().
+ *
+ * @note Private. For use by Subversion's own code only.
+ */
 int
 svn_sort__bsearch_lower_bound(const void *key,
                               const apr_array_header_t *array,
                               int (*compare_func)(const void *, const void *));
 
-/* Insert a shallow copy of *NEW_ELEMENT into the array ARRAY at the index
-   INSERT_INDEX, growing the array and shuffling existing elements along to
-   make room. */
+/* Insert a shallow copy of @a *new_element into the array @a array at the index
+ * @a insert_index, growing the array and shuffling existing elements along to
+ * make room.
+ *
+ * @note Private. For use by Subversion's own code only.
+ */
 void
 svn_sort__array_insert(const void *new_element,
                        apr_array_header_t *array,
                        int insert_index);
 
 
-/* Remove ELEMENTS_TO_DELETE elements starting  at DELETE_INDEX from the
-   array ARR. If DELETE_INDEX is not a valid element of ARR,
-   ELEMENTS_TO_DELETE is not greater than zero, or
-   DELETE_INDEX + ELEMENTS_TO_DELETE is greater than ARR->NELTS, then do
-   nothing. */
+/* Remove @a elements_to_delete elements starting at @a delete_index from the
+ * array @a arr. If @a delete_index is not a valid element of @a arr,
+ * @a elements_to_delete is not greater than zero, or
+ * @a delete_index + @a elements_to_delete is greater than @a arr->nelts,
+ * then do nothing.
+ *
+ * @note Private. For use by Subversion's own code only.
+ */
 void
 svn_sort__array_delete(apr_array_header_t *arr,
                        int delete_index,
                        int elements_to_delete);
 
+/* Reverse the order of elements in @a array, in place.
+ *
+ * @note Private. For use by Subversion's own code only.
+ */
+void
+svn_sort__array_reverse(apr_array_header_t *array,
+                        apr_pool_t *scratch_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_string.h
==============================================================================
--- trunk/GME/Include/subversion/svn_string.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_string.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -54,13 +54,13 @@
  *
  *      Note that an @c svn_string(buf)_t may contain binary data,
  *      which means that strlen(s->data) does not have to equal @c
- *      s->len. The NULL terminator is provided to make it easier to
+ *      s->len. The null terminator is provided to make it easier to
  *      pass @c s->data to C string interfaces.
  *
  *
  *   2. Non-NULL input:
  *
- *      All the functions assume their input data is non-NULL,
+ *      All the functions assume their input data pointer is non-NULL,
  *      unless otherwise documented, and may seg fault if passed
  *      NULL.  The input data may *contain* null bytes, of course, just
  *      the data pointer itself must not be NULL.
@@ -125,34 +125,46 @@
  * @{
  */
 
-/** Create a new bytestring containing a C string (NULL-terminated). */
+/** Create a new string copied from the null-terminated C string @a cstring.
+ */
 svn_string_t *
 svn_string_create(const char *cstring, apr_pool_t *pool);
 
-/** Create a new bytestring containing a generic string of bytes
- * (NOT NULL-terminated) */
+/** Create a new, empty string.
+ *
+ * @since New in 1.8.
+ */
+svn_string_t *
+svn_string_create_empty(apr_pool_t *pool);
+
+/** Create a new string copied from a generic string of bytes, @a bytes, of
+ * length @a size bytes.  @a bytes is NOT assumed to be null-terminated, but
+ * the new string will be.
+ */
 svn_string_t *
 svn_string_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool);
 
-/** Create a new string with the contents of the given stringbuf */
+/** Create a new string copied from the stringbuf @a strbuf.
+ */
 svn_string_t *
 svn_string_create_from_buf(const svn_stringbuf_t *strbuf, apr_pool_t *pool);
 
-/** Create a new bytestring by formatting @a cstring (NULL-terminated)
- * from varargs, which are as appropriate for apr_psprintf().
+/** Create a new string by printf-style formatting using @a fmt and the
+ * variable arguments, which are as appropriate for apr_psprintf().
  */
 svn_string_t *
 svn_string_createf(apr_pool_t *pool, const char *fmt, ...)
   __attribute__((format(printf, 2, 3)));
 
-/** Create a new bytestring by formatting @a cstring (NULL-terminated)
- * from a @c va_list (see svn_stringbuf_createf()).
+/** Create a new string by printf-style formatting using @c fmt and @a ap.
+ * This is the same as svn_string_createf() except for the different
+ * way of passing the variable arguments.
  */
 svn_string_t *
 svn_string_createv(apr_pool_t *pool, const char *fmt, va_list ap)
   __attribute__((format(printf, 2, 0)));
 
-/** Return TRUE if a bytestring is empty (has length zero). */
+/** Return TRUE if @a str is empty (has length zero). */
 svn_boolean_t
 svn_string_isempty(const svn_string_t *str);
 
@@ -184,62 +196,80 @@
  * @{
  */
 
-/** Create a new bytestring containing a C string (NULL-terminated). */
+/** Create a new stringbuf copied from the null-terminated C string
+ * @a cstring.
+ */
 svn_stringbuf_t *
 svn_stringbuf_create(const char *cstring, apr_pool_t *pool);
 
-/** Create a new bytestring containing a generic string of bytes
- * (NON-NULL-terminated)
+/** Create a new stringbuf copied from the generic string of bytes, @a bytes,
+ * of length @a size bytes.  @a bytes is NOT assumed to be null-terminated,
+ * but the new stringbuf will be.
  */
 svn_stringbuf_t *
 svn_stringbuf_ncreate(const char *bytes, apr_size_t size, apr_pool_t *pool);
 
-/** Create a new empty bytestring with at least @a minimum_size bytes of
+/** Create a new, empty stringbuf.
+ *
+ * @since New in 1.8.
+ */
+svn_stringbuf_t *
+svn_stringbuf_create_empty(apr_pool_t *pool);
+
+/** Create a new, empty stringbuf 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.
  */
 svn_stringbuf_t *
 svn_stringbuf_create_ensure(apr_size_t minimum_size, apr_pool_t *pool);
 
-/** Create a new stringbuf with the contents of the given string */
+/** Create a new stringbuf copied from the string @a str.
+ */
 svn_stringbuf_t *
 svn_stringbuf_create_from_string(const svn_string_t *str, apr_pool_t *pool);
 
-/** Create a new bytestring by formatting @a cstring (NULL-terminated)
- * from varargs, which are as appropriate for apr_psprintf().
+/** Create a new stringbuf by printf-style formatting using @a fmt and the
+ * variable arguments, which are as appropriate for apr_psprintf().
  */
 svn_stringbuf_t *
 svn_stringbuf_createf(apr_pool_t *pool, const char *fmt, ...)
   __attribute__((format(printf, 2, 3)));
 
-/** Create a new bytestring by formatting @a cstring (NULL-terminated)
- * from a @c va_list (see svn_stringbuf_createf()).
+/** Create a new stringbuf by printf-style formatting using @c fmt and @a ap.
+ * This is the same as svn_stringbuf_createf() except for the different
+ * way of passing the variable arguments.
  */
 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 @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);
 
-/** Set a bytestring @a str to @a value */
+/** Set @a str to a copy of the null-terminated C string @a value. */
 void
 svn_stringbuf_set(svn_stringbuf_t *str, const char *value);
 
-/** Set a bytestring @a str to empty (0 length). */
+/** Set @a str to empty (zero length). */
 void
 svn_stringbuf_setempty(svn_stringbuf_t *str);
 
-/** Return @c TRUE if a bytestring is empty (has length zero). */
+/** Return @c TRUE if @a str is empty (has length zero). */
 svn_boolean_t
 svn_stringbuf_isempty(const svn_stringbuf_t *str);
 
@@ -247,11 +277,12 @@
 void
 svn_stringbuf_chop(svn_stringbuf_t *str, apr_size_t nbytes);
 
-/** Fill bytestring @a str with character @a c. */
+/** Fill @a str with character @a c. */
 void
 svn_stringbuf_fillchar(svn_stringbuf_t *str, unsigned char c);
 
-/** Append a single character @a byte onto @a targetstr.
+/** Append the single character @a byte onto @a targetstr.
+ *
  * This is an optimized version of svn_stringbuf_appendbytes()
  * that is much faster to call and execute. Gains vary with the ABI.
  * The advantages extend beyond the actual call because the reduced
@@ -273,7 +304,7 @@
                           const char *bytes,
                           apr_size_t count);
 
-/** Append an @c svn_stringbuf_t onto @a targetstr.
+/** Append the stringbuf @c appendstr onto @a targetstr.
  *
  * reallocs if necessary. @a targetstr is affected, nothing else is.
  */
@@ -281,7 +312,7 @@
 svn_stringbuf_appendstr(svn_stringbuf_t *targetstr,
                         const svn_stringbuf_t *appendstr);
 
-/** Append a C string onto @a targetstr.
+/** Append the C string @a cstr onto @a targetstr.
  *
  * reallocs if necessary. @a targetstr is affected, nothing else is.
  */
@@ -289,6 +320,55 @@
 svn_stringbuf_appendcstr(svn_stringbuf_t *targetstr,
                          const char *cstr);
 
+/** Read @a count bytes from @a bytes and insert them into @a str at
+ * position @a pos and following.  The resulting string will be
+ * @c count+str->len bytes long.  If @c pos is larger or equal to the
+ * number of bytes currently used in @a str,  simply append @a bytes.
+ *
+ * Reallocs if necessary. @a str is affected, nothing else is.
+ *
+ * @note The inserted string may be a sub-range if @a str.
+ *
+ * @since New in 1.8.
+ */
+void
+svn_stringbuf_insert(svn_stringbuf_t *str,
+                     apr_size_t pos,
+                     const char *bytes,
+                     apr_size_t count);
+
+/** Removes @a count bytes from @a str, starting at position @a pos.
+ * If that range exceeds the current string data,  @a str gets truncated
+ * at @a pos.  If the latter is larger or equal to @c str->pos, this will
+ * be a no-op.  Otherwise, the resulting string will be @c str->len-count
+ * bytes long.
+ *
+ * @since New in 1.8.
+ */
+void
+svn_stringbuf_remove(svn_stringbuf_t *str,
+                     apr_size_t pos,
+                     apr_size_t count);
+
+/** Replace in @a str the substring which starts at @a pos and is @a
+ * old_count bytes long with a new substring @a bytes (which is @a
+ * new_count bytes long).
+ *
+ * This is faster but functionally equivalent to the following sequence:
+ * @code
+     svn_stringbuf_remove(str, pos, old_count);
+     svn_stringbuf_insert(str, pos, bytes, new_count);
+ * @endcode
+ *
+ * @since New in 1.8.
+ */
+void
+svn_stringbuf_replace(svn_stringbuf_t *str,
+                      apr_size_t pos,
+                      apr_size_t old_count,
+                      const char *bytes,
+                      apr_size_t new_count);
+
 /** Return a duplicate of @a original_string. */
 svn_stringbuf_t *
 svn_stringbuf_dup(const svn_stringbuf_t *original_string, apr_pool_t *pool);
@@ -371,6 +451,20 @@
 svn_cstring_match_list(const char *str, const apr_array_header_t *list);
 
 /**
+ * Get the next token from @a *str interpreting any char from @a sep as a
+ * token separator.  Separators at the beginning of @a str will be skipped.
+ * Returns a pointer to the beginning of the first token in @a *str or NULL
+ * if no token is left.  Modifies @a str such that the next call will return
+ * the next token.
+ *
+ * @note The content of @a *str may be modified by this function.
+ *
+ * @since New in 1.8.
+ */
+char *
+svn_cstring_tokenize(const char *sep, char **str);
+
+/**
  * Return the number of line breaks in @a msg, allowing any kind of newline
  * termination (CR, LF, CRLF, or LFCR), even inconsistent.
  *

Modified: trunk/GME/Include/subversion/svn_subst.h
==============================================================================
--- trunk/GME/Include/subversion/svn_subst.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_subst.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -127,17 +127,60 @@
  * Set @a *kw to a new keywords hash filled with the appropriate contents
  * given a @a keywords_string (the contents of the svn:keywords
  * property for the file in question), the revision @a rev, the @a url,
- * the @a date the file was committed on, and the @a author of the last
- * commit.  Any of these can be @c NULL to indicate that the information is
- * not present, or @c 0 for @a date.
+ * the @a date the file was committed on, the @a author of the last
+ * commit, and the URL of the repository root @a repos_root_url.
+ *
+ * Custom keywords defined in svn:keywords properties are expanded
+ * using the provided parameters and in accordance with the following
+ * format substitutions in the @a keywords_string:
+ *   %a   - The author.
+ *   %b   - The basename of the URL.
+ *   %d   - Short format of the date.
+ *   %D   - Long format of the date.
+ *   %P   - The file's path, relative to the repository root URL.
+ *   %r   - The revision.
+ *   %R   - The URL to the root of the repository.
+ *   %u   - The URL of the file.
+ *   %_   - A space (keyword definitions cannot contain a literal space).
+ *   %%   - A literal '%'.
+ *   %H   - Equivalent to %P%_%r%_%d%_%a.
+ *   %I   - Equivalent to %b%_%r%_%d%_%a.
+ *
+ * Custom keywords are defined by appending '=' to the keyword name, followed
+ * by a string containing any combination of the format substitutions.
+ *
+ * Any of the inputs @a rev, @a url, @a date, @a author, and @a repos_root_url
+ * can be @c NULL, or @c 0 for @a date, to indicate that the information is
+ * not present. Each piece of information that is not present expands to the
+ * empty string wherever it appears in an expanded keyword value.  (This can
+ * result in multiple adjacent spaces in the expansion of a multi-valued
+ * keyword such as "Id".)
  *
  * Hash keys are of type <tt>const char *</tt>.
  * Hash values are of type <tt>svn_string_t *</tt>.
  *
  * All memory is allocated out of @a pool.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_subst_build_keywords3(apr_hash_t **kw,
+                          const char *keywords_string,
+                          const char *rev,
+                          const char *url,
+                          const char *repos_root_url,
+                          apr_time_t date,
+                          const char *author,
+                          apr_pool_t *pool);
+
+/** Similar to svn_subst_build_keywords3() except that it does not accept
+ * the @a repos_root_url parameter and hence supports less substitutions,
+ * and also does not support custom keyword definitions.
+ *
  * @since New in 1.3.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_subst_build_keywords2(apr_hash_t **kw,
                           const char *keywords_string,

Modified: trunk/GME/Include/subversion/svn_types.h
==============================================================================
--- trunk/GME/Include/subversion/svn_types.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_types.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -29,6 +29,7 @@
 
 /* ### this should go away, but it causes too much breakage right now */
 #include <stdlib.h>
+#include <limits.h> /* for ULONG_MAX */
 
 #include <apr.h>         /* for apr_size_t, apr_int64_t, ... */
 #include <apr_errno.h>   /* for apr_status_t */
@@ -71,16 +72,38 @@
  * Unaligned access on other machines (e.g. IA64) will trigger memory
  * access faults or simply misbehave.
  *
+ * Note: Some platforms may only support unaligned access for integers
+ * (PowerPC).  As a result this macro should only be used to determine
+ * if unaligned access is supported for integers.
+ *
  * @since New in 1.7.
  */
 #ifndef SVN_UNALIGNED_ACCESS_IS_OK
-# if defined(_M_IX86) || defined(_M_X64) || defined(i386) || defined(__x86_64)
+# if defined(_M_IX86) || defined(i386) \
+     || defined(_M_X64) || defined(__x86_64) \
+     || defined(__powerpc__) || defined(__ppc__)
 #  define SVN_UNALIGNED_ACCESS_IS_OK 1
 # else
 #  define SVN_UNALIGNED_ACCESS_IS_OK 0
 # endif
 #endif
 
+
+
+/** YABT:  Yet Another Boolean Type */
+typedef int svn_boolean_t;
+
+#ifndef TRUE
+/** uhh... true */
+#define TRUE 1
+#endif /* TRUE */
+
+#ifndef FALSE
+/** uhh... false */
+#define FALSE 0
+#endif /* FALSE */
+
+
 
 /** Subversion error object.
  *
@@ -131,9 +154,13 @@
 
 } svn_error_t;
 
+
+
 /* See svn_version.h.
    Defined here to avoid including svn_version.h from all public headers. */
 typedef struct svn_version_t svn_version_t;
+
+
 
 /** @defgroup APR_ARRAY_compat_macros APR Array Compatibility Helper Macros
  * These macros are provided by APR itself from version 1.3.
@@ -152,6 +179,8 @@
 #endif
 
 /** @} */
+
+
 
 /** @defgroup apr_hash_utilities APR Hash Table Helpers
  * These functions enable the caller to dereference an APR hash table index
@@ -173,6 +202,10 @@
 void *
 svn__apr_hash_index_val(const apr_hash_index_t *hi);
 
+/** @} */
+
+
+
 /** On Windows, APR_STATUS_IS_ENOTDIR includes several kinds of
  * invalid-pathname error but not ERROR_INVALID_NAME, so we include it.
  * We also include ERROR_DIRECTORY as that was not included in apr versions
@@ -187,6 +220,8 @@
 #endif
 
 /** @} */
+
+
 
 /** The various types of nodes in the Subversion filesystem. */
 typedef enum svn_node_kind_t
@@ -201,7 +236,14 @@
   svn_node_dir,
 
   /** something's here, but we don't know what */
-  svn_node_unknown
+  svn_node_unknown,
+
+  /**
+   * symbolic link
+   * @note This value is not currently used by the public API.
+   * @since New in 1.8.
+   */
+  svn_node_symlink
 } svn_node_kind_t;
 
 /** Return a constant string expressing @a kind as an English word, e.g.,
@@ -223,6 +265,7 @@
 svn_node_kind_t
 svn_node_kind_from_word(const char *word);
 
+
 /** Generic three-state property to represent an unknown value for values
  * that are just like booleans.  The values have been set deliberately to
  * make tristates disjoint from #svn_boolean_t.
@@ -233,8 +276,11 @@
  * @since New in 1.7. */
 typedef enum svn_tristate_t
 {
+  /** state known to be false (the constant does not evaulate to false) */
   svn_tristate_false = 2,
+  /** state known to be true */
   svn_tristate_true,
+  /** state could be true or false */
   svn_tristate_unknown
 } svn_tristate_t;
 
@@ -256,6 +302,7 @@
 svn_tristate__from_word(const char * word);
 
 
+
 /** About Special Files in Subversion
  *
  * Subversion denotes files that cannot be portably created or
@@ -293,6 +340,8 @@
  *     routines from 1.
  */
 
+
+
 /** A revision number. */
 typedef long int svn_revnum_t;
 
@@ -339,6 +388,7 @@
 #define SVN_REVNUM_T_FMT "ld"
 
 
+
 /** The size of a file in the Subversion FS. */
 typedef apr_int64_t svn_filesize_t;
 
@@ -356,20 +406,7 @@
 #endif
 
 
-/** YABT:  Yet Another Boolean Type */
-typedef int svn_boolean_t;
-
-#ifndef TRUE
-/** uhh... true */
-#define TRUE 1
-#endif /* TRUE */
-
-#ifndef FALSE
-/** uhh... false */
-#define FALSE 0
-#endif /* FALSE */
-
-
+
 /** An enum to indicate whether recursion is needed. */
 enum svn_recurse_kind
 {
@@ -427,7 +464,6 @@
 
 } svn_depth_t;
 
-
 /** Return a constant string expressing @a depth as an English word,
  * e.g., "infinity", "immediates", etc.  The string is not localized,
  * as it may be used for client<->server communications.
@@ -437,7 +473,6 @@
 const char *
 svn_depth_to_word(svn_depth_t depth);
 
-
 /** Return the appropriate depth for @a depth_str.  @a word is as
  * returned from svn_depth_to_word().  If @a depth_str does not
  * represent a recognized depth, return #svn_depth_unknown.
@@ -447,8 +482,7 @@
 svn_depth_t
 svn_depth_from_word(const char *word);
 
-
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
  * return #svn_depth_files.
  *
  * @note New code should never need to use this, it is called only
@@ -459,8 +493,7 @@
 #define SVN_DEPTH_INFINITY_OR_FILES(recurse) \
   ((recurse) ? svn_depth_infinity : svn_depth_files)
 
-
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
  * return #svn_depth_immediates.
  *
  * @note New code should never need to use this, it is called only
@@ -471,8 +504,7 @@
 #define SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse) \
   ((recurse) ? svn_depth_infinity : svn_depth_immediates)
 
-
-/* Return #svn_depth_infinity if boolean @a recurse is TRUE, else
+/** Return #svn_depth_infinity if boolean @a recurse is TRUE, else
  * return #svn_depth_empty.
  *
  * @note New code should never need to use this, it is called only
@@ -483,8 +515,7 @@
 #define SVN_DEPTH_INFINITY_OR_EMPTY(recurse) \
   ((recurse) ? svn_depth_infinity : svn_depth_empty)
 
-
-/* Return a recursion boolean based on @a depth.
+/** Return a recursion boolean based on @a depth.
  *
  * Although much code has been converted to use depth, some code still
  * takes a recurse boolean.  In most cases, it makes sense to treat
@@ -492,10 +523,10 @@
  * non-recursive (which in turn usually translates to #svn_depth_files).
  */
 #define SVN_DEPTH_IS_RECURSIVE(depth)                              \
-  (((depth) == svn_depth_infinity || (depth) == svn_depth_unknown) \
-   ? TRUE : FALSE)
+  ((depth) == svn_depth_infinity || (depth) == svn_depth_unknown)
 
 
+
 /**
  * It is sometimes convenient to indicate which parts of an #svn_dirent_t
  * object you are actually interested in, so that calculating and sending
@@ -529,7 +560,13 @@
 
 /** @} */
 
-/** A general subversion directory entry. */
+/** A general subversion directory entry.
+ *
+ * @note To allow for extending the #svn_dirent_t structure in future
+ * releases, always use svn_dirent_create() to allocate the stucture.
+ *
+ * @since New in 1.6.
+ */
 typedef struct svn_dirent_t
 {
   /** node kind */
@@ -553,7 +590,6 @@
   /* IMPORTANT: If you extend this struct, check svn_dirent_dup(). */
 } svn_dirent_t;
 
-
 /** Return a deep copy of @a dirent, allocated in @a pool.
  *
  * @since New in 1.4.
@@ -562,8 +598,16 @@
 svn_dirent_dup(const svn_dirent_t *dirent,
                apr_pool_t *pool);
 
-
+/**
+ * Create a new svn_dirent_t instance with all values initialized to their
+ * not-available values.
+ *
+ * @since New in 1.8.
+ */
+svn_dirent_t *
+svn_dirent_create(apr_pool_t *result_pool);
 
+
 /** Keyword substitution.
  *
  * All the keywords Subversion recognizes.
@@ -640,6 +684,7 @@
 
 /** @} */
 
+
 
 /** All information about a commit.
  *
@@ -668,7 +713,6 @@
 
 } svn_commit_info_t;
 
-
 /**
  * Allocate an object of type #svn_commit_info_t in @a pool and
  * return it.
@@ -686,7 +730,6 @@
 svn_commit_info_t *
 svn_create_commit_info(apr_pool_t *pool);
 
-
 /**
  * Return a deep copy @a src_commit_info allocated in @a pool.
  *
@@ -696,6 +739,7 @@
 svn_commit_info_dup(const svn_commit_info_t *src_commit_info,
                     apr_pool_t *pool);
 
+
 
 /**
  * A structure to represent a path that changed for a log entry.
@@ -757,7 +801,7 @@
 
 /**
  * A structure to represent a path that changed for a log entry.  Same as
- * #svn_log_changed_path2_t, but without the node kind.
+ * the first three fields of #svn_log_changed_path2_t.
  *
  * @deprecated Provided for backward compatibility with the 1.5 API.
  */
@@ -774,7 +818,6 @@
 
 } svn_log_changed_path_t;
 
-
 /**
  * Return a deep copy of @a changed_path, allocated in @a pool.
  *
@@ -810,7 +853,8 @@
   svn_revnum_t revision;
 
   /** The hash of requested revision properties, which may be NULL if it
-   * would contain no revprops. */
+   * would contain no revprops.  Maps (const char *) property name to
+   * (svn_string_t *) property value. */
   apr_hash_t *revprops;
 
   /**
@@ -852,6 +896,10 @@
    * 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;
@@ -923,7 +971,6 @@
  *
  * @since New in 1.5.
  */
-
 typedef svn_error_t *(*svn_log_entry_receiver_t)(
   void *baton,
   svn_log_entry_t *log_entry,
@@ -944,6 +991,7 @@
   const char *message,
   apr_pool_t *pool);
 
+
 
 /** Callback function type for commits.
  *
@@ -969,6 +1017,7 @@
   const char *author,
   void *baton);
 
+
 
 /** A buffer size that may be used when processing a stream of data.
  *
@@ -1021,7 +1070,6 @@
 svn_mime_type_validate(const char *mime_type,
                        apr_pool_t *pool);
 
-
 /** Return FALSE iff @a mime_type is a textual type.
  *
  * All mime types that start with "text/" are textual, plus some special
@@ -1092,6 +1140,8 @@
 svn_lock_t *
 svn_lock_dup(const svn_lock_t *lock, apr_pool_t *pool);
 
+
+
 /**
  * Return a formatted Universal Unique IDentifier (UUID) string.
  *
@@ -1100,6 +1150,8 @@
 const char *
 svn_uuid_generate(apr_pool_t *pool);
 
+
+
 /**
  * Mergeinfo representing a merge of a range of revisions.
  *
@@ -1146,7 +1198,7 @@
  *  @{ */
 
 /**
- * A representation of a segment of a object's version history with an
+ * A representation of a segment of an object's version history with an
  * emphasis on the object's location in the repository as of various
  * revisions.
  *
@@ -1155,7 +1207,7 @@
 typedef struct svn_location_segment_t
 {
   /** The beginning (oldest) and ending (youngest) revisions for this
-      segment. */
+      segment, both inclusive. */
   svn_revnum_t range_start;
   svn_revnum_t range_end;
 
@@ -1165,7 +1217,6 @@
 
 } svn_location_segment_t;
 
-
 /**
  * A callback invoked by generators of #svn_location_segment_t
  * objects, used to report information about a versioned object's
@@ -1177,7 +1228,6 @@
   void *baton,
   apr_pool_t *pool);
 
-
 /**
  * Return a deep copy of @a segment, allocated in @a pool.
  *
@@ -1189,19 +1239,22 @@
 
 /** @} */
 
+
+
 /** A line number, such as in a file or a stream.
  *
  * @since New in 1.7.
  */
 typedef unsigned long svn_linenum_t;
 
-/* The maximum value of an svn_linenum_t.
+/** The maximum value of an svn_linenum_t.
  *
  * @since New in 1.7.
  */
 #define SVN_LINENUM_MAX_VALUE ULONG_MAX
 
 
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_utf.h
==============================================================================
--- trunk/GME/Include/subversion/svn_utf.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_utf.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -49,14 +49,31 @@
  * Initialize the UTF-8 encoding/decoding routines.
  * Allocate cached translation handles in a subpool of @a pool.
  *
+ * If @a assume_native_utf8 is TRUE, the native character set is
+ * assumed to be UTF-8, i.e. conversion is a no-op. This is useful
+ * in contexts where the native character set is ASCII but UTF-8
+ * should be used regardless (e.g. for mod_dav_svn which runs within
+ * httpd and always uses the "C" locale).
+ *
  * @note It is optional to call this function, but if it is used, no other
  * svn function may be in use in other threads during the call of this
  * function or when @a pool is cleared or destroyed.
  * Initializing the UTF-8 routines will improve performance.
  *
- * @since New in 1.1.
+ * @since New in 1.8.
  */
 void
+svn_utf_initialize2(svn_boolean_t assume_native_utf8,
+                    apr_pool_t *pool);
+
+/**
+ * Like svn_utf_initialize2() but without the ability to force the
+ * native encoding to UTF-8.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ */
+SVN_DEPRECATED
+void
 svn_utf_initialize(apr_pool_t *pool);
 
 /** Set @a *dest to a utf8-encoded stringbuf from native stringbuf @a src;
@@ -220,6 +237,14 @@
                                  const svn_string_t *src,
                                  apr_pool_t *pool);
 
+/** Return the display width of UTF-8-encoded C string @a cstr.
+ * If the string is not printable or invalid UTF-8, return -1.
+ *
+ * @since New in 1.8.
+ */
+int
+svn_utf_cstring_utf8_width(const char *cstr);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_version.h
==============================================================================
--- trunk/GME/Include/subversion/svn_version.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_version.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -34,6 +34,7 @@
 #ifndef APR_STRINGIFY
 #include <apr_general.h>
 #endif
+#include <apr_tables.h>
 
 #include "svn_types.h"
 
@@ -62,7 +63,7 @@
  * Modify when new functionality is added or new interfaces are
  * defined, but all changes are backward compatible.
  */
-#define SVN_VER_MINOR      7
+#define SVN_VER_MINOR      8
 
 /**
  * Patch number.
@@ -71,7 +72,7 @@
  *
  * @since New in 1.1.
  */
-#define SVN_VER_PATCH      9
+#define SVN_VER_PATCH      1
 
 
 /** @deprecated Provided for backward compatibility with the 1.0 API. */
@@ -94,7 +95,7 @@
  *
  * Always change this at the same time as SVN_VER_NUMTAG.
  */
-#define SVN_VER_TAG        " (r1462340)"
+#define SVN_VER_TAG        " (r1503906)"
 
 
 /** Number tag: a string describing the version.
@@ -120,7 +121,7 @@
  * When rolling a tarball, we automatically replace it with what we
  * guess to be the correct revision number.
  */
-#define SVN_VER_REVISION   1462340
+#define SVN_VER_REVISION   1503906
 
 
 /* Version strings composed from the above definitions. */
@@ -256,6 +257,153 @@
 svn_subr_version(void);
 
 
+/**
+ * Extended version information, including info about the running system.
+ *
+ * @since New in 1.8.
+ */
+typedef struct svn_version_extended_t svn_version_extended_t;
+
+/**
+ * Return version information for the running program.  If @a verbose
+ * is #TRUE, collect extra information that may be expensive to
+ * retrieve (for example, the OS release name, list of shared
+ * libraries, etc.).  Use @a pool for all allocations.
+ *
+ * @since New in 1.8.
+ */
+const svn_version_extended_t *
+svn_version_extended(svn_boolean_t verbose,
+                     apr_pool_t *pool);
+
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The date when the libsvn_subr library was compiled, in the
+ * format defined by the C standard macro @c __DATE__.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_date(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The time when the libsvn_subr library was compiled, in the
+ * format defined by the C standard macro @c __TIME__.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_time(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The canonical host triplet (arch-vendor-osname) of the
+ * system where libsvn_subr was compiled.
+ *
+ * @note On Unix-like systems (includng Mac OS X), this string is the
+ * same as the output of the config.guess script.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_build_host(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The localized copyright notice.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_copyright(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The canonical host triplet (arch-vendor-osname) of the
+ * system where the current process is running.
+ *
+ * @note This string may not be the same as the output of config.guess
+ * on the same system.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_runtime_host(const svn_version_extended_t *ext_info);
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return The "commercial" release name of the running operating
+ * system, if available.  Not to be confused with, e.g., the output of
+ * "uname -v" or "uname -r".  The returned value may be @c NULL.
+ *
+ * @since New in 1.8.
+ */
+const char *
+svn_version_ext_runtime_osname(const svn_version_extended_t *ext_info);
+
+/**
+ * Dependent library information.
+ * Describes the name and versions of known dependencies
+ * used by libsvn_subr.
+ *
+ * @since New in 1.8.
+ */
+typedef struct svn_version_ext_linked_lib_t
+{
+  const char *name;             /**< Library name */
+  const char *compiled_version; /**< Compile-time version string */
+  const char *runtime_version;  /**< Run-time version string (optional) */
+} svn_version_ext_linked_lib_t;
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return Array of svn_version_ext_linked_lib_t describing dependent
+ * libraries.  The returned value may be @c NULL.
+ *
+ * @since New in 1.8.
+ */
+const apr_array_header_t *
+svn_version_ext_linked_libs(const svn_version_extended_t *ext_info);
+
+
+/**
+ * Loaded shared library information.
+ * Describes the name and, where available, version of the shared libraries
+ * loaded by the running program.
+ *
+ * @since New in 1.8.
+ */
+typedef struct svn_version_ext_loaded_lib_t
+{
+  const char *name;             /**< Library name */
+  const char *version;          /**< Library version (optional) */
+} svn_version_ext_loaded_lib_t;
+
+
+/**
+ * Accessor for svn_version_extended_t.
+ *
+ * @return Array of svn_version_ext_loaded_lib_t describing loaded
+ * shared libraries.  The returned value may be @c NULL.
+ *
+ * @note On Mac OS X, the loaded frameworks, private frameworks and
+ * system libraries will not be listed.
+ *
+ * @since New in 1.8.
+ */
+const apr_array_header_t *
+svn_version_ext_loaded_libs(const svn_version_extended_t *ext_info);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: trunk/GME/Include/subversion/svn_wc.h
==============================================================================
--- trunk/GME/Include/subversion/svn_wc.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_wc.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -781,7 +781,7 @@
  * canonicalized.
  *
  * In order to avoid backwards compatibility problems clients should use
- * svn_wc_external_item_create() to allocate and initialize this structure
+ * svn_wc_external_item2_create() to allocate and initialize this structure
  * instead of doing so themselves.
  *
  * @since New in 1.5.
@@ -795,7 +795,8 @@
       field will often be redundant.) */
   const char *target_dir;
 
-  /** Where to check out from. */
+  /** Where to check out from. This is possibly a relative external URL, as
+   * allowed in externals definitions, but without the peg revision. */
   const char *url;
 
   /** What revision to check out.  The only valid kinds for this are
@@ -822,8 +823,20 @@
  * The current implementation never returns error, but callers should
  * still check for error, for compatibility with future versions.
  *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc_external_item2_create(svn_wc_external_item2_t **item,
+                             apr_pool_t *pool);
+
+/** Same as svn_wc_external_item2_create() except the pointer to the new
+ * empty item is 'const' which is stupid since the next thing you need to do
+ * is fill in its fields.
+ *
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  * @since New in 1.5.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_external_item_create(const svn_wc_external_item2_t **item,
                             apr_pool_t *pool);
@@ -887,8 +900,8 @@
  * of those objects.  If the @a url member refers to an absolute URL,
  * it will be canonicalized as URL consistent with the way URLs are
  * canonicalized throughout the Subversion API.  If, however, the
- * @a url member makes use of the recognized (and proprietary)
- * relative URL syntax, "canonicalization" is a less easily-defined
+ * @a url member makes use of the recognized (SVN-specific) relative
+ * URL syntax for svn:externals, "canonicalization" is an ill-defined
  * concept which may even result in munging the relative URL syntax
  * beyond recognition.  You've been warned.
  *
@@ -1119,7 +1132,7 @@
    * @since New in 1.7. */
   svn_wc_notify_update_shadowed_add,
 
-  /** A node below an exising node was updated during update.
+  /** A node below an existing node was updated during update.
    * @since New in 1.7. */
   svn_wc_notify_update_shadowed_update,
 
@@ -1130,7 +1143,7 @@
   /** The mergeinfo on path was updated.  @since New in 1.7. */
   svn_wc_notify_merge_record_info,
 
-  /** An working copy directory was upgraded to the latest format
+  /** A working copy directory was upgraded to the latest format.
    * @since New in 1.7. */
   svn_wc_notify_upgraded_path,
 
@@ -1207,7 +1220,42 @@
 
   /** 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,
+
+  /** Conflict resolver is starting.
+   * This can be used by clients to detect when to display conflict summary
+   * information, for example.
+   * @since New in 1.8. */
+  svn_wc_notify_conflict_resolver_starting,
+
+  /** Conflict resolver is done.
+   * This can be used by clients to detect when to display conflict summary
+   * information, for example.
+   * @since New in 1.8. */
+  svn_wc_notify_conflict_resolver_done,
+
+  /** The current operation left local changes of something that was deleted
+   * The changes are available on (and below) the notified path
+   * @since New in 1.8. */
+  svn_wc_notify_left_local_modifications,
+
+  /** A copy from a foreign repository has started
+   * @since New in 1.8. */
+  svn_wc_notify_foreign_copy_begin,
+
+  /** A move in the working copy has been broken, i.e. degraded into a
+   * copy + delete. The notified path is the move source (the deleted path).
+   * ### TODO: Provide path to move destination as well?
+   * @since New in 1.8. */
+  svn_wc_notify_move_broken
 
 } svn_wc_notify_action_t;
 
@@ -1271,7 +1319,7 @@
  * @c kind, @c content_state, @c prop_state and @c lock_state are from
  * after @c action, not before.
  *
- * @note If @c action is #svn_wc_notify_update (### what?), then @c path has
+ * @note If @c action is #svn_wc_notify_update_completed, then @c path has
  * already been installed, so it is legitimate for an implementation of
  * #svn_wc_notify_func2_t to examine @c path in the working copy.
  *
@@ -1295,7 +1343,7 @@
 
   /** Path, either absolute or relative to the current working directory
    * (i.e., not relative to an anchor).  @c path is "." or another valid path
-   * value for compatibility reasons when the real target is an url that
+   * value for compatibility reasons when the real target is a url that
    * is available in @c url. */
   const char *path;
 
@@ -1342,7 +1390,9 @@
    * In all other cases, it is @c NULL.  @since New in 1.5 */
   const char *changelist_name;
 
-  /** When @c action is #svn_wc_notify_merge_begin, and both the
+  /** When @c action is #svn_wc_notify_merge_begin or
+   * #svn_wc_notify_foreign_merge_begin or
+   * #svn_wc_notify_merge_record_info_begin, and both the
    * left and right sides of the merge are from the same URL.  In all
    * other cases, it is @c NULL.  @since New in 1.5 */
   svn_merge_range_t *merge_range;
@@ -1551,7 +1601,11 @@
   /** Object is already added or schedule-add. @since New in 1.6. */
   svn_wc_conflict_reason_added,
   /** Object is already replaced. @since New in 1.7. */
-  svn_wc_conflict_reason_replaced
+  svn_wc_conflict_reason_replaced,
+  /** Object is moved away. @since New in 1.8. */
+  svn_wc_conflict_reason_moved_away,
+  /** Object is moved here. @since New in 1.8. */
+  svn_wc_conflict_reason_moved_here
 
 } svn_wc_conflict_reason_t;
 
@@ -1614,13 +1668,16 @@
   svn_revnum_t peg_rev;
 
   /** path within repos; must not start with '/' */
+   /* ### should have been called repos_relpath, but we can't change this. */
   const char *path_in_repos;
-  /* @todo We may decide to add the repository UUID, to handle conflicts
-   * properly during a repository move. */
   /** @} */
 
-  /** Info about this node */
-  svn_node_kind_t node_kind;  /* note that 'none' is a legitimate value */
+  /** The node kind.  Can be any kind, including 'none' or 'unknown'. */
+  svn_node_kind_t node_kind;
+
+  /** UUID of the repository (or NULL if unknown.)
+   * @since New in 1.8. */
+  const char *repos_uuid;
 
   /* @todo Add metadata about a local copy of the node, if and when
    * we store one. */
@@ -1633,13 +1690,32 @@
  * Allocate an #svn_wc_conflict_version_t structure in @a pool,
  * initialize to contain a conflict origin, and return it.
  *
- * Set the @c repos_url field of the created struct to @a repos_url, the
- * @c path_in_repos field to @a path_in_repos, the @c peg_rev field to
- * @a peg_rev and the the @c node_kind to @c node_kind. Make only shallow
+ * Set the @c repos_url field of the created struct to @a repos_root_url,
+ * the @c path_in_repos field to @a repos_relpath, the @c peg_rev field to
+ * @a revision and the @c node_kind to @a kind. Make only shallow
  * copies of the pointer arguments.
  *
+ * @a repos_root_url, @a repos_relpath and @a revision must be valid,
+ * non-null values. @a repos_uuid should be a valid UUID, but can be
+ * NULL if unknown. @a kind can be any kind, even 'none' or 'unknown'.
+ *
+ * @since New in 1.8.
+ */
+svn_wc_conflict_version_t *
+svn_wc_conflict_version_create2(const char *repos_root_url,
+                                const char *repos_uuid,
+                                const char *repos_relpath,
+                                svn_revnum_t revision,
+                                svn_node_kind_t kind,
+                                apr_pool_t *result_pool);
+
+/** Similar to svn_wc_conflict_version_create2(), but doesn't set all
+ * required values.
+ *
  * @since New in 1.6.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_wc_conflict_version_t *
 svn_wc_conflict_version_create(const char *repos_url,
                                const char *path_in_repos,
@@ -1669,9 +1745,9 @@
  * @note Fields may be added to the end of this structure in future
  * versions.  Therefore, to preserve binary compatibility, users
  * should not directly allocate structures of this type but should use
- * svn_wc_create_conflict_description_text2() or
- * svn_wc_create_conflict_description_prop2() or
- * svn_wc_create_conflict_description_tree2() instead.
+ * svn_wc_conflict_description_create_text2() or
+ * svn_wc_conflict_description_create_prop2() or
+ * svn_wc_conflict_description_create_tree2() instead.
  *
  * @since New in 1.7.
  */
@@ -1755,7 +1831,7 @@
   /** Info on the "merge-right source" or "their" version of incoming change. */
   const svn_wc_conflict_version_t *src_right_version;
 
-  /* Remember to adjust svn_wc__conflict_description_dup()
+  /* Remember to adjust svn_wc__conflict_description2_dup()
    * if you add new fields to this struct. */
 } svn_wc_conflict_description2_t;
 
@@ -1849,8 +1925,6 @@
    * @since New in 1.6. */
   svn_wc_conflict_version_t *src_right_version;
 
-  /* Remember to adjust svn_wc__conflict_description_dup()
-   * if you add new fields to this struct. */
 } svn_wc_conflict_description_t;
 
 /**
@@ -1891,7 +1965,7 @@
  *
  * Set the @c local_abspath field of the created struct to @a local_abspath
  * (which must be an absolute path), the @c kind field
- * to #svn_wc_conflict_kind_prop, the @c node_kind to @a node_kind, and
+ * to #svn_wc_conflict_kind_property, the @c node_kind to @a node_kind, and
  * the @c property_name to @a property_name.
  *
  * @note: It is the caller's responsibility to set the other required fields
@@ -1993,7 +2067,10 @@
   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;
 
@@ -2058,7 +2135,7 @@
  *
  * The values #svn_wc_conflict_choose_mine_conflict and
  * #svn_wc_conflict_choose_theirs_conflict are not legal for conflicts
- * in binary files or properties.
+ * in binary files or binary properties.
  *
  * Implementations of this callback are free to present the conflict
  * using any user interface.  This may include simple contextual
@@ -2598,24 +2675,22 @@
  * 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
@@ -3041,12 +3116,25 @@
  */
 typedef struct svn_wc_info_t
 {
-  /* ### Do we still need schedule? */
+  /** The schedule of this item
+   * ### Do we still need schedule? */
   svn_wc_schedule_t schedule;
+
+  /** If copied, the URL from which the copy was made, else @c NULL. */
   const char *copyfrom_url;
+
+  /** If copied, the revision from which the copy was made,
+   * else #SVN_INVALID_REVNUM. */
   svn_revnum_t copyfrom_rev;
+
+  /** The checksum of the node, if it is a file. */
   const svn_checksum_t *checksum;
+
+  /** A changelist the item is in, @c NULL if this node is not in a
+   * changelist. */
   const char *changelist;
+
+  /** The depth of the item, see #svn_depth_t */
   svn_depth_t depth;
 
   /**
@@ -3068,6 +3156,13 @@
   /** The local absolute path of the working copy root.  */
   const char *wcroot_abspath;
 
+  /** The path the node was moved from, if it was moved here. Else NULL.
+   * @since New in 1.8. */
+  const char *moved_from_abspath;
+
+  /** The path the node was moved to, if it was moved away. Else NULL.
+   * @since New in 1.8. */
+  const char *moved_to_abspath;
 } svn_wc_info_t;
 
 /**
@@ -3612,6 +3707,43 @@
 
   /** @} */
 
+  /** Set to the local absolute path that this node was moved from, if this
+   * file or directory has been moved here locally and is the root of that
+   * move. Otherwise set to NULL.
+   *
+   * This will be NULL for moved-here nodes that are just part of a subtree
+   * that was moved along (and are not themselves a root of a different move
+   * operation).
+   *
+   * @since New in 1.8. */
+  const char *moved_from_abspath;
+
+  /** Set to the local absolute path that this node was moved to, if this file
+   * or directory has been moved away locally and corresponds to the root
+   * of the destination side of the move. Otherwise set to NULL.
+   *
+   * Note: Saying just "root" here could be misleading. For example:
+   *   svn mv A AA;
+   *   svn mv AA/B BB;
+   * creates a situation where A/B is moved-to BB, but one could argue that
+   * the move source's root actually was AA/B. Note that, as far as the
+   * working copy is concerned, above case is exactly identical to:
+   *   svn mv A/B BB;
+   *   svn mv A AA;
+   * In both situations, @a moved_to_abspath would be set for nodes A (moved
+   * to AA) and A/B (moved to BB), only.
+   *
+   * This will be NULL for moved-away nodes that were just part of a subtree
+   * that was moved along (and are not themselves a root of a different move
+   * operation).
+   *
+   * @since New in 1.8. */
+  const char *moved_to_abspath;
+
+  /** @c TRUE iff the item is a file brought in by an svn:externals definition.
+   * @since New in 1.8. */
+  svn_boolean_t file_external;
+
   /* NOTE! Please update svn_wc_dup_status3() when adding new fields here. */
 } svn_wc_status3_t;
 
@@ -3734,7 +3866,7 @@
 
 
 /**
- * Same as #svn_wc_status2_t, but without the #svn_lock_t 'repos_lock' field.
+ * Same as #svn_wc_status2_t, but without the #svn_lock_t 'repos_lock', const char 'url', #svn_revnum_t 'ood_last_cmt_rev', apr_time_t 'ood_last_cmt_date', #svn_node_kind_t 'ood_kind', const char 'ood_last_cmt_author', #svn_wc_conflict_description_t 'tree_conflict', #svn_boolean_t 'file_external', #svn_wc_status_kind 'pristine_text_status', and #svn_wc_status_kind 'pristine_prop_status' fields.
  *
  * @deprecated Provided for backward compatibility with the 1.1 API.
  */
@@ -3872,11 +4004,6 @@
  *
  * @a scratch_pool will be cleared between invocations to the callback.
  *
- * ### we might be revamping the status infrastructure, and this callback
- * ### could totally disappear by the end of 1.7 development. however, we
- * ### need to mark the STATUS parameter as "const" so that it is easier
- * ### to reason about who/what can modify those structures.
- *
  * @since New in 1.7.
  */
 typedef svn_error_t *(*svn_wc_status_func4_t)(void *baton,
@@ -3974,6 +4101,10 @@
                    apr_pool_t *scratch_pool);
 
 /**
+ * DEPRECATED -- please use APIs from svn_client.h
+ *
+ * ---
+ *
  * Set @a *editor and @a *edit_baton to an editor that generates
  * #svn_wc_status3_t structures and sends them through @a status_func /
  * @a status_baton.  @a anchor_abspath is a working copy directory
@@ -4035,7 +4166,9 @@
  * in a subpool of @a result_pool.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_get_status_editor5(const svn_delta_editor_t **editor,
                           void **edit_baton,
@@ -4287,7 +4420,10 @@
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
+ * @see svn_client_move7()
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_move(svn_wc_context_t *wc_ctx,
             const char *src_abspath,
@@ -4403,7 +4539,16 @@
 
 /**
  * Schedule the single node that exists on disk at @a local_abspath for
- * addition to the working copy.  The added node will have no properties.
+ * addition to the working copy.  The added node will have the properties
+ * provided in @a props, or none if that is NULL.
+ *
+ * Check and canonicalize the properties in the same way as
+ * svn_wc_prop_set4().  Return an error and don't add the node if the
+ * properties are not valid on this node.  Unlike svn_wc_prop_set4()
+ * there is no option to skip some of the checks and canonicalizations.
+ *
+ * ### The error code on validity check failure should be specified, and
+ *     preferably should be a single code.
  *
  * The versioned state of the parent path must be a modifiable directory,
  * and the versioned state of @a local_abspath must be either nonexistent or
@@ -4412,14 +4557,32 @@
  * If @a local_abspath does not exist as file, directory or symlink, return
  * #SVN_ERR_WC_PATH_NOT_FOUND.
  *
- * This is a replacement for svn_wc_add4() case 2a.
+ * ### TODO: Split into add_dir, add_file, add_symlink?
  *
- * ### TODO: Allow the caller to provide the node's properties?
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc_add_from_disk2(svn_wc_context_t *wc_ctx,
+                      const char *local_abspath,
+                      const apr_hash_t *props,
+                      svn_wc_notify_func2_t notify_func,
+                      void *notify_baton,
+                      apr_pool_t *scratch_pool);
+
+
+/**
+ * Similar to svn_wc_add_from_disk2(), but always passes NULL for @a
+ * props.
  *
- * ### TODO: Split into add_dir, add_file, add_symlink?
+ * This is a replacement for svn_wc_add4() case 2a (which see for
+ * details).
+
+ * @see svn_wc_add4()
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_add_from_disk(svn_wc_context_t *wc_ctx,
                      const char *local_abspath,
@@ -4439,7 +4602,7 @@
  * working copy as a copy of the original location. The separate working
  * copy will be integrated by this step. In this case, which is only used
  * by code like that of "svn cp URL at rev path" @a copyfrom_url and
- * @a copyfrom_rev MUST BE the the url and revision of @a local_abspath
+ * @a copyfrom_rev MUST BE the url and revision of @a local_abspath
  * in the separate working copy.
  *
  * 2a) If the node was not versioned before it will be scheduled as a local
@@ -4654,7 +4817,8 @@
 
 
 /** Remove @a local_abspath from revision control.  @a wc_ctx must
- * hold a write lock.
+ * hold a write lock on the parent of @a local_abspath, or if that is a
+ * WC root then on @a local_abspath itself.
  *
  * If @a local_abspath is a file, all its info will be removed from the
  * administrative area.  If @a local_abspath is a directory, then the
@@ -5281,25 +5445,53 @@
  * @{
  */
 
+/** If @a is_wcroot is not @c NULL, set @a *is_wcroot to @c TRUE if @a
+ * local_abspath is the root of the working copy, otherwise to @c FALSE.
+ *
+ * If @a is_switched is not @c NULL, set @a *is_switched to @c TRUE if @a
+ * local_abspath is not the root of the working copy, and switched against its
+ * parent.
+ *
+ * If @a kind is not @c NULL, set @a *kind to the node kind of @a
+ * local_abspath.
+ *
+ * Use @a scratch_pool for any temporary allocations.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc_check_root(svn_boolean_t *is_wcroot,
+                  svn_boolean_t *is_switched,
+                  svn_node_kind_t *kind,
+                  svn_wc_context_t *wc_ctx,
+                  const char *local_abspath,
+                  apr_pool_t *scratch_pool);
+
 /** Set @a *wc_root to @c TRUE if @a local_abspath represents a "working copy
  * root", @c FALSE otherwise. Here, @a local_abspath is a "working copy root"
- * if its parent directory is not a WC or if its parent directory's repository
- * URL is not the parent of its own repository URL. Thus, a switched subtree is
- * considered to be a working copy root. Also, a deleted tree-conflict
- * victim is considered a "working copy root" because it has no URL.
+ * if its parent directory is not a WC or if it is switched. Also, a deleted
+ * tree-conflict victim is considered a "working copy root" because it has no
+ * URL.
  *
  * If @a local_abspath is not found, return the error #SVN_ERR_ENTRY_NOT_FOUND.
  *
  * Use @a scratch_pool for any temporary allocations.
  *
+ * @note For legacy reasons only a directory can be a wc-root. However, this
+ * function will also set wc_root to @c TRUE for a switched file.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API. Consider
+ * using svn_wc_check_root() instead.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_is_wc_root2(svn_boolean_t *wc_root,
                    svn_wc_context_t *wc_ctx,
                    const char *local_abspath,
                    apr_pool_t *scratch_pool);
 
+
 /**
  * Similar to svn_wc_is_wc_root2(), but with an access baton and relative
  * path.
@@ -5412,6 +5604,10 @@
 
 
 /**
+ * DEPRECATED -- please use APIs from svn_client.h
+ *
+ * ---
+ *
  * Set @a *editor and @a *edit_baton to an editor and baton for updating a
  * working copy.
  *
@@ -5480,12 +5676,18 @@
  * the ambient depth filtering, so this doesn't have to be handled in the
  * editor.
  *
+ * If @a clean_checkout is TRUE, assume that we are checking out into an
+ * empty directory, and so bypass a number of conflict checks that are
+ * unnecessary in this case.
+ *
  * If @a fetch_dirents_func is not NULL, the update editor may call this
  * callback, when asked to perform a depth restricted update. It will do this
  * before returning the editor to allow using the primary ra session for this.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_get_update_editor4(const svn_delta_editor_t **editor,
                           void **edit_baton,
@@ -5616,6 +5818,10 @@
                          apr_pool_t *pool);
 
 /**
+ * DEPRECATED -- please use APIs from svn_client.h
+ *
+ * ---
+ *
  * A variant of svn_wc_get_update_editor4().
  *
  * Set @a *editor and @a *edit_baton to an editor and baton for "switching"
@@ -5626,7 +5832,9 @@
  * All other parameters behave as for svn_wc_get_update_editor4().
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_get_switch_editor4(const svn_delta_editor_t **editor,
                           void **edit_baton,
@@ -5759,23 +5967,6 @@
  * @{
  */
 
-/* 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
@@ -5884,19 +6075,29 @@
  * NULL, remove property @a name from @a local_abspath.  Use @a wc_ctx to
  * access @a local_abspath.
  *
- * If @a skip_checks is TRUE, do no validity checking.  But if @a
- * skip_checks is FALSE, and @a name is not a valid property for @a
- * path, return an error, either #SVN_ERR_ILLEGAL_TARGET (if the
+ * @a name may be a regular property or a "wc property".  If @a name is
+ * an "entry property", return the error #SVN_ERR_BAD_PROP_KIND (even if
+ * @a skip_checks is TRUE).
+ *
+ * If @a name is a "wc property", then just update the WC DAV cache for
+ * @a local_abspath with @a name and @a value.  In this case, @a depth
+ * must be #svn_depth_empty.
+ *
+ * The rest of this description applies when @a name is a regular property.
+ *
+ * If @a name is a name in the reserved "svn:" name space, and @a value is
+ * non-null, then canonicalize the property value and check the property
+ * name and value as documented for svn_wc_canonicalize_svn_prop().
+ * @a skip_checks controls the level of checking as documented there.
+ *
+ * Return an error if the canonicalization or the check fails.
+ * The error will be either #SVN_ERR_ILLEGAL_TARGET (if the
  * property is not appropriate for @a path), or
  * #SVN_ERR_BAD_MIME_TYPE (if @a name is "svn:mime-type", but @a value
  * is not a valid mime-type).
+ * ### That is not currently right -- several other errors can be raised.
  *
- * @a depth follows the usual semeatic for depth.  If the property is a
- * wc property, @a depth must be #svn_depth_empty.
- *
- * @a name may be a wc property or a regular property; but if it is an
- * entry property, return the error #SVN_ERR_BAD_PROP_KIND, even if
- * @a skip_checks is TRUE.
+ * @a depth follows the usual semantics for depth.
  *
  * @a changelist_filter is an array of <tt>const char *</tt> changelist
  * names, used as a restrictive filter on items whose properties are
@@ -5914,6 +6115,14 @@
  *
  * Use @a scratch_pool for temporary allocation.
  *
+ * @note If the caller is setting both svn:mime-type and svn:eol-style in
+ * separate calls, and @a skip_checks is false, there is an ordering
+ * dependency between them, as the validity check for svn:eol-style makes
+ * use of the current value of svn:mime-type.
+ *
+ * ### The error code on validity check failure should be specified, and
+ *     should be a single code or a very small set of possibilities.
+ *
  * @since New in 1.7.
  */
 svn_error_t *
@@ -5932,7 +6141,7 @@
 
 /** Similar to svn_wc_prop_set4(), but with a #svn_wc_adm_access_t /
  * relative path parameter pair, no @a depth parameter, no changelist
- * filtering (for the depth-based property setting), and no cancelation.
+ * filtering (for the depth-based property setting), and no cancellation.
  *
  * @since New in 1.6.
  * @deprecated Provided for backwards compatibility with the 1.6 API.
@@ -6016,6 +6225,8 @@
  * (Currently, this is used if you are attempting to set the
  * #SVN_PROP_EOL_STYLE property, to make sure that the value matches
  * the mime type and contents.)
+ *
+ * @since New in 1.5.
  */
 typedef svn_error_t *(*svn_wc_canonicalize_svn_prop_get_file_t)(
   const svn_string_t **mime_type,
@@ -6029,19 +6240,61 @@
  *
  * If the property is not appropriate for a node of kind @a kind, or
  * is otherwise invalid, throw an error.  Otherwise, set @a *propval_p
- * to a canonicalized version of the property value.  If @a
- * skip_some_checks is TRUE, only some validity checks are taken.
+ * to a canonicalized version of the property value.
+ *
+ * The exact set of canonicalizations and checks may vary across different
+ * versions of this API.  Currently:
  *
- * Some validity checks require access to the contents and MIME type
- * of the target if it is a file; they will call @a prop_getter with @a
- * getter_baton, which then needs to set the MIME type and print the
- * contents of the file to the given stream.
+ *   - svn:executable
+ *   - svn:needs-lock
+ *   - svn:special
+ *     - set the value to '*'
+ *
+ *   - svn:keywords
+ *     - strip leading and trailing white space
+ *
+ *   - svn:ignore
+ *   - svn:global-ignores
+ *   - svn:auto-props
+ *     - add a final a newline character if missing
+ *
+ *   - svn:externals
+ *     - add a final a newline character if missing
+ *     - check for valid syntax
+ *     - check for no duplicate entries
+ *
+ *   - svn:mergeinfo
+ *     - canonicalize
+ *     - check for validity
+ *
+ * Also, unless @a skip_some_checks is TRUE:
+ *
+ *   - svn:eol-style
+ *     - strip leading and trailing white space
+ *     - check value is recognized
+ *     - check file content has a self-consistent EOL style
+ *       (but not necessarily that it matches @a propval)
+ *
+ *   - svn:mime-type
+ *     - strip white space
+ *     - check for reasonable syntax
+ *
+ * The EOL-style check (if not skipped) requires access to the contents and
+ * MIME type of the target if it is a file.  It will call @a prop_getter with
+ * @a getter_baton.  The callback must set the MIME type and/or write the
+ * contents of the file to the given stream.  If @a skip_some_checks is true,
+ * then @a prop_getter is not used and may be NULL.
  *
  * @a path should be the path of the file in question; it is only used
  * for error messages.
  *
+ * ### The error code on validity check failure should be specified, and
+ *     should be a single code or a very small set of possibilities.
+ *
  * ### This is not actually related to the WC, but it does need to call
- * ### svn_wc_parse_externals_description2.
+ * ### svn_wc_parse_externals_description3.
+ *
+ * @since New in 1.5.
  */
 svn_error_t *
 svn_wc_canonicalize_svn_prop(const svn_string_t **propval_p,
@@ -6063,6 +6316,10 @@
  */
 
 /**
+ * DEPRECATED -- please use APIs from svn_client.h
+ *
+ * ---
+ *
  * Return an @a editor/@a edit_baton for diffing a working copy against the
  * repository. The editor is allocated in @a result_pool; temporary
  * calculations are performed in @a scratch_pool.
@@ -6094,10 +6351,13 @@
  * @a show_copies_as_adds determines whether paths added with history will
  * appear as a diff against their copy source, or whether such paths will
  * appear as if they were newly added in their entirety.
+ * @a show_copies_as_adds implies not @a ignore_ancestry.
  *
  * If @a use_git_diff_format is TRUE, copied paths will be treated as added
  * if they weren't modified after being copied. This allows the callbacks
  * to generate appropriate --git diff headers for such files.
+ * @a use_git_diff_format implies @a show_copies_as_adds, and as such implies
+ * not @a ignore_ancestry.
  *
  * Normally, the difference from repository->working_copy is shown.
  * If @a reverse_order is TRUE, then show working_copy->repository diffs.
@@ -6116,7 +6376,9 @@
  * editor.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_get_diff_editor6(const svn_delta_editor_t **editor,
                         void **edit_baton,
@@ -6489,10 +6751,11 @@
  * 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.)
+ * changes being considered, so they should not be merged into it.
+ * Furthermore, merging into an unversioned file is a lossy operation.)
  *
  * @a dry_run determines whether the working copy is modified.  When it
  * is @c FALSE the merge will cause @a target_abspath to be modified, when
@@ -6506,8 +6769,16 @@
  * 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, merge @a prop_diff into the
+ * working properties before merging the text.  (If @a merge_props_state
+ * is NULL, do not merge any property changes; in this case, @a prop_diff
+ * is only used to help determine the text merge result.)  Handle any
+ * conflicts as described for svn_wc_merge_props3(), with the parameters
+ * @a dry_run, @a conflict_func and @a conflict_baton.  Return the
+ * outcome of the property merge in @a *merge_props_state.
+ *
+ * The outcome of the text merge is returned in @a *merge_content_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:
  *
@@ -6538,12 +6809,57 @@
  *  begins tracking the two backup files and the version information.
  *
  * If @a dry_run is @c TRUE no files are changed.  The outcome of the merge
- * is returned in @a *merge_outcome.
+ * is returned in @a *merge_content_outcome.
+ * ### (and what about @a *merge_props_state?)
+ *
+ * ### BH: Two kinds of outcome is not how it should be.
+ *
+ * ### For text, we report the outcome as 'merged' if there was some
+ *     incoming change that we dealt with (even if we decided to no-op?)
+ *     but the callers then convert this outcome into a notification
+ *     of 'merged' only if there was already a local modification;
+ *     otherwise they notify it as simply 'updated'.  But for props
+ *     we report a notify state of 'merged' here if there was an
+ *     incoming change regardless of the local-mod state.  Inconsistent.
  *
  * Use @a scratch_pool for any temporary allocation.
  *
+ * @since New in 1.8.
+ */
+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_merge5() but with @a merge_props_state and @a
+ * original_props always passed as NULL.
+ *
+ * Unlike svn_wc_merge5(), this function doesn't merge property
+ * changes.  Callers of this function must first use
+ * svn_wc_merge_props3() to get this functionality.
+ *
  * @since New in 1.7.
+ * @deprecated Provided for backwards compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_merge4(enum svn_wc_merge_outcome_t *merge_outcome,
               svn_wc_context_t *wc_ctx,
@@ -6565,6 +6881,7 @@
               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.
@@ -6648,9 +6965,12 @@
  * If @a state is non-NULL, set @a *state to the state of the properties
  * after the merge.
  *
- * If conflicts are found when merging working properties, they are
- * described in a temporary .prej file (or appended to an already-existing
- * .prej file), and the entry is marked "conflicted".
+ * If a conflict is found when merging a property, and @a dry_run is
+ * false and @a conflict_func is not null, then call @a conflict_func
+ * with @a conflict_baton and a description of the conflict.  If any
+ * conflicts are not resolved by such callbacks, describe the unresolved
+ * conflicts in a temporary .prej file (or append to an already-existing
+ * .prej file) and mark the path as conflicted in the WC DB.
  *
  * If @a cancel_func is non-NULL, invoke it with @a cancel_baton at various
  * points during the operation.  If it returns an error (typically
@@ -6685,8 +7005,9 @@
  *
  * This function has the @a base_merge parameter which (when TRUE) will
  * apply @a propchanges to this node's pristine set of properties. This
- * functionality is not supported on newer APIs -- pristine information
- * should only be changed through an update editor drive.
+ * functionality is not supported since API version 1.7 and will give an
+ * error if requested (unless @a dry_run is TRUE). For details see
+ * 'notes/api-errata/1.7/wc006.txt'.
  *
  * Uses a svn_wc_conflict_resolver_func_t conflict resolver instead of a
  * svn_wc_conflict_resolver_func2_t.
@@ -6695,7 +7016,7 @@
  * #SVN_ERR_UNVERSIONED_RESOURCE, when svn_wc_merge_props3 would return either
  * #SVN_ERR_WC_PATH_NOT_FOUND or #SVN_ERR_WC_PATH_UNEXPECTED_STATUS.
  *
- * @since New in 1.5.
+ * @since New in 1.5. The base_merge option is not supported since 1.7.
  * @deprecated Provided for backward compatibility with the 1.6 API.
  */
 SVN_DEPRECATED
@@ -6716,6 +7037,7 @@
  * Same as svn_wc_merge_props2(), but with a @a conflict_func (and
  * baton) of NULL.
  *
+ * @since New in 1.3. The base_merge option is not supported since 1.7.
  * @deprecated Provided for backward compatibility with the 1.4 API.
  */
 SVN_DEPRECATED
@@ -6737,7 +7059,9 @@
  * correct for 'svn update', it's incorrect for 'svn merge', and can
  * cause flawed behavior.  (See issue #2035.)
  *
+ * @since The base_merge option is not supported since 1.7.
  * @deprecated Provided for backward compatibility with the 1.2 API.
+ * Replaced by svn_wc_merge_props().
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -6838,7 +7162,7 @@
 
 /**
  * Similar to svn_wc_cleanup3() but uses relative paths and creates its own
- * swn_wc_context_t.
+ * #svn_wc_context_t.
  *
  * @since New in 1.2.
  * @deprecated Provided for backward compatibility with the 1.6 API.
@@ -6893,7 +7217,7 @@
  * (typically #SVN_ERR_CANCELLED), return that error immediately.
  *
  * For each directory converted, @a notify_func will be called with
- * in @a notify_baton action #svn_wc_notify_upgrade_path and as path
+ * in @a notify_baton action #svn_wc_notify_upgraded_path and as path
  * the path of the upgraded directory. @a notify_func may be @c NULL
  * if this notification is not needed.
  *
@@ -6939,7 +7263,7 @@
  * the @a root argument.
  *
  * If @a root is TRUE, then the implementation should make sure that @a url
- * is the repository root.  Else, it can be an URL inside the repository.
+ * is the repository root.  Else, it can be a URL inside the repository.
  *
  * @deprecated Provided for backwards compatibility with the 1.4 API.
  */
@@ -7679,7 +8003,8 @@
 
 
 /**
- * The callback type used by svn_client_get_changelists().
+ * The callback type used by svn_wc_get_changelists() and
+ * svn_client_get_changelists().
  *
  * On each invocation, @a path is a newly discovered member of the
  * changelist, and @a baton is a private function closure.
@@ -7692,7 +8017,10 @@
                                                    apr_pool_t *pool);
 
 
-/* @since New in 1.7.
+/**
+ * ### TODO: Doc string, please.
+ *
+ * @since New in 1.7.
  */
 svn_error_t *
 svn_wc_get_changelists(svn_wc_context_t *wc_ctx,
@@ -7797,23 +8125,46 @@
 /** @} */
 
 /**
- * Set @a kind to the #svn_node_kind_t of @a abspath.  Use @a wc_ctx
- * to access the working copy, and @a scratch_pool for all temporary
- * allocations.
+ * Set @a kind to the #svn_node_kind_t of @a abspath.  Use @a wc_ctx to access
+ * the working copy, and @a scratch_pool for all temporary allocations.
  *
  * If @a abspath is not under version control, set @a kind to #svn_node_none.
- * If it is versioned but hidden and @a show_hidden is @c FALSE, also return
- * #svn_node_none.
  *
- * ### What does hidden really mean?
- * ### What happens when show_hidden is TRUE?
+ * If @a show_hidden and @a show_deleted are both @c FALSE, the kind of
+ * scheduled for delete, administrative only 'not present' and excluded
+ * nodes is reported as #svn_node_none. This is recommended as a check
+ * for 'is there a versioned file or directory here?'
+ *
+ * If @a show_deleted is FALSE, but @a show_hidden is @c TRUE then only
+ * scheduled for delete and administrative only 'not present' nodes are
+ * reported as #svn_node_none. This is recommended as check for
+ * 'Can I add a node here?'
+ *
+ * If @a show_deleted is TRUE, but @a show_hidden is FALSE, then only
+ * administrative only 'not present' nodes and excluded nodes are reported as
+ * #svn_node_none. This behavior is the behavior bescribed as 'hidden'
+ * before Subversion 1.7.
  *
- * If the node's info is incomplete, it may or may not have a known node kind
- * set. If the kind is not known (yet), set @a kind to #svn_node_unknown.
- * Otherwise return the node kind even though the node is marked incomplete.
+ * If @a show_hidden and @a show_deleted are both @c TRUE all nodes are
+ * reported.
+ *
+ * @since New in 1.8.
+ */
+svn_error_t *
+svn_wc_read_kind2(svn_node_kind_t *kind,
+                  svn_wc_context_t *wc_ctx,
+                  const char *local_abspath,
+                  svn_boolean_t show_deleted,
+                  svn_boolean_t show_hidden,
+                  apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_read_kind2() but with @a show_deleted always
+ * passed as TRUE.
  *
  * @since New in 1.7.
+ * @deprecated Provided for backward compatibility with the 1.7 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_wc_read_kind(svn_node_kind_t *kind,
                  svn_wc_context_t *wc_ctx,

Modified: trunk/GME/Include/subversion/svn_xml.h
==============================================================================
--- trunk/GME/Include/subversion/svn_xml.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/Include/subversion/svn_xml.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -228,7 +228,7 @@
  */
 const char *
 svn_xml_get_attr_value(const char *name,
-                       const char **atts);
+                       const char *const *atts);
 
 
 
@@ -297,7 +297,10 @@
                      const char *encoding,
                      apr_pool_t *pool);
 
-/* Like svn_xml_make_header2, but does not emit encoding information. */
+/** Like svn_xml_make_header2(), but does not emit encoding information.
+ *
+ * @deprecated Provided for backward compatibility with the 1.6 API.
+ */
 SVN_DEPRECATED
 void
 svn_xml_make_header(svn_stringbuf_t **str,

Modified: trunk/GME/Lib/libeay32.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/libeay32.lib
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/libeay32.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/ssleay32.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/ssleay32.lib
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/ssleay32.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/subv_debug/libapr-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libapr-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libapr-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libapriconv-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libapriconv-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libapriconv-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libaprutil-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libaprutil-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libaprutil-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_fs_fs-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_fs_fs-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_fs_util-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_fs_util-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_local-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_local-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_serf-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_serf-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_svn-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/libsvn_ra_svn-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/subv_debug/serf-1.lib
==============================================================================
Binary file. No diff available.

Added: trunk/GME/Lib/subv_debug/serf-1.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_client-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_client-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_delta-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_delta-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_diff-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_diff-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_fs-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_fs-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_ra-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_ra-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_repos-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_repos-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_subr-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_subr-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_wc-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/svn_wc-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/xml.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_debug/xml.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/subv_debug/zlib.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/subv_debug/zlibstatD.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libapr-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libapr-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Copied and modified: trunk/GME/Lib/subv_release/libapr-1.pdb (from r2202, trunk/GME/Lib/subv_release/libapr-1.pdb)
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libapriconv-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libapriconv-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libapriconv-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libaprutil-1.dll
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libaprutil-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libaprutil-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_fs_fs-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_fs_fs-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_fs_util-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_fs_util-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_local-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_local-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_serf-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_serf-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_svn-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/libsvn_ra_svn-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/subv_release/serf-1.lib
==============================================================================
Binary file. No diff available.

Added: trunk/GME/Lib/subv_release/serf-1.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/subv_release/svn_client-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_client-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_delta-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_delta-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_diff-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_diff-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_fs-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_fs-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_ra-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_ra-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_repos-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_repos-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_subr-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_subr-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_wc-1.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/svn_wc-1.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/xml.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/Lib/subv_release/xml.pdb
==============================================================================
Binary file (source and/or target). No diff available.

Added: trunk/GME/Lib/subv_release/zlib.pdb
==============================================================================
Binary file. No diff available.

Modified: trunk/GME/Lib/subv_release/zlibstat.lib
==============================================================================
Binary file (source and/or target). No diff available.

Modified: trunk/GME/XmlBackEnd/SvnConfig.h
==============================================================================
--- trunk/GME/XmlBackEnd/SvnConfig.h	Mon Jul 29 11:18:04 2013	(r2284)
+++ trunk/GME/XmlBackEnd/SvnConfig.h	Fri Aug  2 15:47:18 2013	(r2285)
@@ -12,6 +12,9 @@
 #pragma comment(lib, "ws2_32.lib")
 #pragma comment(lib, "secur32.lib")
 #pragma comment(lib, "crypt32.lib")
+#pragma comment(lib, "version.lib")
+#pragma comment(lib, "psapi.lib")
+
 
 #pragma comment(lib, "libapr-1.lib")
 #pragma comment(lib, "libaprutil-1.lib")
@@ -52,7 +55,7 @@
 
 #if(USESERF)
 	#pragma comment(lib, "libsvn_ra_serf-1.lib")
-	#pragma comment(lib, "serf.lib")
+	#pragma comment(lib, "serf-1.lib")
 #endif
 
 #endif
\ No newline at end of file


More information about the gme-commit mailing list