You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2013/05/10 16:58:56 UTC

svn commit: r1481041 [6/38] - in /subversion/branches/master-passphrase: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ contrib/client-side/svncopy/ contrib/hook-scripts/ contrib/server-side/fsfsfixer/ contrib/server-side/fsfsfi...

Modified: subversion/branches/master-passphrase/subversion/include/svn_delta.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_delta.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_delta.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_delta.h Fri May 10 14:58:47 2013
@@ -1119,70 +1119,6 @@ typedef struct svn_delta_editor_t
 svn_delta_editor_t *
 svn_delta_default_editor(apr_pool_t *pool);
 
-/** Callback to retrieve a node's entire set of properties.  This is
- * needed by the various editor shims in order to effect backward compat.
- *
- * @since New in 1.8.
- */
-typedef svn_error_t *(*svn_delta_fetch_props_func_t)(
-  apr_hash_t **props,
-  void *baton,
-  const char *path,
-  svn_revnum_t base_revision,
-  apr_pool_t *result_pool,
-  apr_pool_t *scratch_pool
-  );
-
-/** Callback to retrieve a node's kind.  This is needed by the various editor
- * shims in order to effect backward compat.
- *
- * @since New in 1.8.
- */
-typedef svn_error_t *(*svn_delta_fetch_kind_func_t)(
-  svn_kind_t *kind,
-  void *baton,
-  const char *path,
-  svn_revnum_t base_revision,
-  apr_pool_t *scratch_pool
-  );
-
-/** Callback to fetch the FILENAME of a file to use as the delta base for
- * PATH.  The file should last at least as long as RESULT_POOL.  If the base
- * stream is empty, return NULL through FILENAME.
- *
- * @since New in 1.8.
- */
-typedef svn_error_t *(*svn_delta_fetch_base_func_t)(
-  const char **filename,
-  void *baton,
-  const char *path,
-  svn_revnum_t base_revision,
-  apr_pool_t *result_pool,
-  apr_pool_t *scratch_pool
-  );
-
-/** Collection of callbacks used for the shim code.  To enable this struct
- * to grow, always use svn_delta_shim_callbacks_default()
- * to allocate new instances of it.
- *
- * @since New in 1.8.
- */
-typedef struct svn_delta_shim_callbacks_t
-{
-  svn_delta_fetch_props_func_t fetch_props_func;
-  svn_delta_fetch_kind_func_t fetch_kind_func;
-  svn_delta_fetch_base_func_t fetch_base_func;
-  void *fetch_baton;
-} svn_delta_shim_callbacks_t;
-
-/** Return a collection of default shim functions in @a result_pool.
- *
- * @since New in 1.8.
- */
-svn_delta_shim_callbacks_t *
-svn_delta_shim_callbacks_default(apr_pool_t *result_pool);
-
-
 /** A text-delta window handler which does nothing.
  *
  * Editors can return this handler from @c apply_textdelta if they don't

Modified: subversion/branches/master-passphrase/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_error.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_error.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_error.h Fri May 10 14:58:47 2013
@@ -66,6 +66,36 @@ svn_strerror(apr_status_t statcode,
              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 @@ void
 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,
@@ -461,10 +491,22 @@ svn_error_t *svn_error_purge_tracing(svn
     abort();                                                 \
   } while (1)
 
-/** Like SVN_ERR_ASSERT(), but append ERR to the returned error chain.
+/** Check that a condition is true: if not, report an error (appending
+ * ERR if non-NULL) and possibly terminate the program.
+ *
+ * If the boolean expression @a expr is true, do nothing. Otherwise,
+ * act as determined by the current "malfunction handler" which may have
+ * been specified by a call to svn_error_set_malfunction_handler() or else
+ * is the default handler as specified in that function's documentation. If
+ * the malfunction handler returns, then cause the function using this macro
+ * to return the error object that it generated.
+ *
+ * @note The intended use of this macro is to check a condition that cannot
+ * possibly be false unless there is a bug in the program.
  *
- * 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.)
+ * @note The condition to be checked should not be computationally expensive
+ * if it is reached often, as, unlike traditional "assert" statements, the
+ * evaluation of this expression is not compiled out in release-mode builds.
  *
  * Types: (svn_boolean_t expr, svn_error_t *err)
  *
@@ -485,38 +527,13 @@ svn_error_t *svn_error_purge_tracing(svn
   } while (0)
 #endif
 
-
-/** Check that a condition is true: if not, report an error and possibly
- * terminate the program.
- *
- * If the Boolean expression @a expr is true, do nothing. Otherwise,
- * act as determined by the current "malfunction handler" which may have
- * been specified by a call to svn_error_set_malfunction_handler() or else
- * is the default handler as specified in that function's documentation. If
- * the malfunction handler returns, then cause the function using this macro
- * to return the error object that it generated.
+/** Like SVN_ERR_ASSERT_E(), but with @a err always NULL.
  *
- * @note The intended use of this macro is to check a condition that cannot
- * possibly be false unless there is a bug in the program.
- *
- * @note The condition to be checked should not be computationally expensive
- * if it is reached often, as, unlike traditional "assert" statements, the
- * evaluation of this expression is not compiled out in release-mode builds.
+ * @see SVN_ERR_ASSERT_E()
  *
  * @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
+#define SVN_ERR_ASSERT(expr)       SVN_ERR_ASSERT_E(expr, NULL)
 
 /** Similar to SVN_ERR_ASSERT(), but without the option of returning
  * an error to the calling function.

Modified: subversion/branches/master-passphrase/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_error_codes.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_error_codes.h Fri May 10 14:58:47 2013
@@ -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 @@ extern "C" {
 
 #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)
 
@@ -788,12 +792,12 @@ SVN_ERROR_START
              "The filesystem editor completion process was not followed")
 
   /** @since New in 1.8. */
-  SVN_ERRDEF(SVN_ERR_FS_PACKED_REPPROP_READ_FAILURE,
+  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_REPPROP_CACHE_INIT_FAILURE,
+  SVN_ERRDEF(SVN_ERR_FS_REVPROP_CACHE_INIT_FAILURE,
              SVN_ERR_FS_CATEGORY_START + 52,
              "Could not initialize the revprop caching infrastructure.")
 
@@ -906,6 +910,11 @@ SVN_ERROR_START
              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,
@@ -984,114 +993,6 @@ SVN_ERROR_START
   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 */
 
@@ -1119,12 +1020,6 @@ SVN_ERROR_START
              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,
@@ -1385,7 +1280,7 @@ SVN_ERROR_START
   /** @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,
@@ -1428,18 +1323,28 @@ SVN_ERROR_START
   /** @since New in 1.8. */
   SVN_ERRDEF(SVN_ERR_TOO_MANY_MEMCACHED_SERVERS,
              SVN_ERR_MISC_CATEGORY_START + 36,
-             "too many memcached servers configured")
+             "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")
+             "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")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_UTF8PROC_ERROR,
+             SVN_ERR_MISC_CATEGORY_START + 39,
+             "utf8proc library error")
+
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_UTF8_GLOB,
+             SVN_ERR_MISC_CATEGORY_START + 40,
+             "Bad arguments to SQL operators GLOB or LIKE")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,
@@ -1490,6 +1395,123 @@ SVN_ERROR_START
              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: subversion/branches/master-passphrase/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_fs.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_fs.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_fs.h Fri May 10 14:58:47 2013
@@ -95,6 +95,24 @@ typedef struct svn_fs_t svn_fs_t;
  */
 #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"
@@ -276,73 +294,6 @@ typedef void (*svn_fs_progress_notify_fu
                                               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 @a scratch_pool for temporary allocations.
- *
- * @a start and @a end are used to limit the amount of checks being done
- * to data that is relevant to that range of revisions.  However, this is
- * only a lower limit to the actual amount of checks being done.  The
- * backend may not even be able to limit the errors begin reported.
- * @a start and @a end may be #SVN_INVALID_REVNUM, in which case
- * svn_repos_verify_fs2()'s semantics apply.  When @c r0 is being
- * verified, global invariants may be verified as well.
- *
- * 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_rev.
- * 
- * @note Implementors, please do tests that can be done efficiently for
- * a single revision to #svn_fs_verify_rev.  This function is meant for
- * global checks or tests that require an expensive context setup.
- *
- * @since New in 1.8.
- */
-svn_error_t *
-svn_fs_verify(const char *path,
-              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
- * to revision @a revision of the Subversion filesystem @a fs.
- * 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 tests and covering all
- * revisions, you must call this function *and* #svn_fs_verify.
- *
- * @note Implementors, please do tests that cannot be done efficiently for
- * a single revision to #svn_fs_verify.  This function is meant for local
- * checks that don't require an expensive context setup.
- *
- * @since New in 1.8.
- */
-svn_error_t *
-svn_fs_verify_rev(svn_fs_t *fs,
-                  svn_revnum_t revision,
-                  apr_pool_t *scratch_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.
@@ -374,6 +325,20 @@ svn_fs_path(svn_fs_t *fs,
             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
@@ -393,9 +358,10 @@ svn_fs_delete_fs(const char *path,
  * means deleting copied, unused logfiles for a Berkeley DB source
  * filesystem.
  *
- * If @a incremental is TRUE, make an effort to not re-copy information
- * already present in the destination. If incremental hotcopy is not
- * implemented, raise SVN_ERR_UNSUPPORTED_FEATURE.
+ * 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.
  *
@@ -411,8 +377,8 @@ svn_fs_hotcopy2(const char *src_path,
                 apr_pool_t *scratch_pool);
 
 /**
- * Like svn_fs_hotcopy2(), but without the @a incremental parameter
- * and without cancellation support.
+ * 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.
@@ -467,21 +433,29 @@ svn_fs_recover(const char *path,
 
 
 /**
+ * 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_body passing @a baton.
+ * @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.
+ * 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_error_t *(*freeze_body)(void *baton, apr_pool_t *pool),
-              void *baton,
+              svn_fs_freeze_func_t freeze_func,
+              void *freeze_baton,
               apr_pool_t *pool);
-              
 
 
 /** Subversion filesystems based on Berkeley DB.
@@ -1648,10 +1622,10 @@ svn_fs_closest_copy(svn_fs_root_t **root
  * @a inherit indicates whether to retrieve explicit,
  * explicit-or-inherited, or only inherited mergeinfo.
  *
- * If @a adjust_inherited_mergeinfo is TRUE, then any inherited
+ * 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 doing the inheriting.  If
- * @a adjust_inherited_mergeinfo is FALSE, then any inherited
+ * 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
@@ -1681,7 +1655,7 @@ svn_fs_get_mergeinfo2(svn_mergeinfo_cata
 
 /**
  * Same as svn_fs_get_mergeinfo2(), but with @a adjust_inherited_mergeinfo
- * set always set to TRUE and only one pool.
+ * set always set to @c TRUE and with only one pool.
  *
  * @deprecated Provided for backward compatibility with the 1.5 API.
  */
@@ -1928,11 +1902,11 @@ svn_fs_file_contents(svn_stream_t **cont
                      apr_pool_t *pool);
 
 /**
- * Callback function type that gets presented with a immutable non-NULL
- * @a contents of @a len bytes.  Further parameters may be passed through
- * in @a baton.
+ * 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.
  *
- * Allocations must be made in @a pool.
+ * Use @a scratch_pool for allocations.
  *
  * @since New in 1.8.
  */
@@ -1940,22 +1914,21 @@ typedef svn_error_t *
 (*svn_fs_process_contents_func_t)(const unsigned char *contents,
                                   apr_size_t len,
                                   void *baton,
-                                  apr_pool_t *pool);
+                                  apr_pool_t *scratch_pool);
 
-/** Attempts to efficiently provide the contents of the file @a path in
- * @a root.  If that succeeds, @a *success will be set to #TRUE and the
- * contents will be passed to the the @a processor along with the given
- * @a baton.  Allocations take place in @a 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 #FALSE.  Also, this
- * is a best-effort function which means there is no guarantee that e.g.
- * @a processor gets called at for any content.
+ * 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 *
@@ -2087,6 +2060,41 @@ svn_fs_youngest_rev(svn_revnum_t *younge
                     apr_pool_t *pool);
 
 
+/**
+ * Return filesystem format information for @a fs.
+ *
+ * Set @a *fs_format to the filesystem format number of @a fs, which is
+ * an integer that increases when incompatible changes are made (such as
+ * by #svn_fs_upgrade).
+ *
+ * Set @a *supports_version to the version number of the minimum Subversion GA
+ * release that can read and write @a fs.
+ *
+ * @see svn_repos_info_format()
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_info_format(int *fs_format,
+                   svn_version_t **supports_version,
+                   svn_fs_t *fs,
+                   apr_pool_t *result_pool,
+                   apr_pool_t *scratch_pool);
+
+/**
+ * Return a list of admin-serviceable config files for @a fs.  @a *files
+ * will be set to an array containing paths as C strings.
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_info_config_files(apr_array_header_t **files,
+                         svn_fs_t *fs,
+                         apr_pool_t *result_pool,
+                         apr_pool_t *scratch_pool);
+
+
+
 /** Provide filesystem @a fs the opportunity to compress storage relating to
  * associated with  @a revision in filesystem @a fs.  Use @a pool for all
  * allocations.
@@ -2467,8 +2475,164 @@ svn_fs_pack(const char *db_path,
             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_rev.
+ *
+ * @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);
+
 /** @} */
 
+/**
+ * @defgroup fs_info Filesystem information subsystem
+ * @{
+ */
+
+/**
+ * A structure that provides some information about a filesystem.
+ * Returned by svn_fs_info() for #SVN_FS_TYPE_FSFS filesystems.
+ *
+ * @note Fields may be added to the end of this structure in future
+ * versions.  Therefore, users shouldn't allocate structures of this
+ * type, to preserve binary compatibility.
+ *
+ * @since New in 1.9.
+ */
+typedef struct svn_fs_fsfs_info_t {
+
+  /** Filesystem backend (#fs_type), i.e., the string #SVN_FS_TYPE_FSFS. */
+  const char *fs_type;
+
+  /** Shard size, or 0 if the filesystem is not currently sharded. */
+  int shard_size;
+
+  /** The smallest revision (as #svn_revnum_t) which is not in a pack file.
+   * @note Zero (0) if (but not iff) the format does not support packing. */
+  svn_revnum_t min_unpacked_rev;
+
+  /* ### TODO: information about fsfs.conf? rep-cache.db? write locks? */
+
+  /* If you add fields here, check whether you need to extend svn_fs_info()
+     or svn_fs_info_dup(). */
+} svn_fs_fsfs_info_t;
+
+/** @see svn_fs_info()
+ * @since New in 1.9. */
+typedef struct svn_fs_info_placeholder_t {
+  /** @see svn_fs_type() */
+  const char *fs_type;
+
+  /* Do not add new fields here, to maintain compatibility with the first
+     released version of svn_fs_fsfs_info_t. */
+} svn_fs_info_placeholder_t;
+
+/**
+ * Set @a *fs_info to a struct describing @a fs.  The type of the
+ * struct depends on the backend: for #SVN_FS_TYPE_FSFS, the struct will be
+ * of type #svn_fs_fsfs_info_t; otherwise, the struct is guaranteed to be
+ * (compatible with) #svn_fs_info_placeholder_t.
+ *
+ * @see #svn_fs_fsfs_info_t
+ *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_fs_info(const svn_fs_info_placeholder_t **fs_info,
+            svn_fs_t *fs,
+            apr_pool_t *result_pool,
+            apr_pool_t *scratch_pool);
+
+/**
+ * Return a duplicate of @a info, allocated in @a pool. The returned struct
+ * will be of the same type as the passed-in struct, which itself must have
+ * been returned from svn_fs_info() or svn_fs_info_dup().  No part of the new
+ * structure will be shared with @a info (except static string constants).
+ *
+ * @see #svn_fs_info_placeholder_t, #svn_fs_fsfs_info_t
+ *
+ * @since New in 1.9.
+ */
+void *
+svn_fs_info_dup(const void *info,
+                apr_pool_t *result_pool,
+                apr_pool_t *scratch_pool);
+
+/** @} */
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/master-passphrase/subversion/include/svn_io.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_io.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_io.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_io.h Fri May 10 14:58:47 2013
@@ -182,9 +182,10 @@ svn_io_check_resolved_path(const char *p
  * may be @c NULL.  If @a file is @c NULL, the file will be created but not
  * open.
  *
- * If @a delete_when is #svn_io_file_del_on_close, then the @c APR_DELONCLOSE
- * flag will be used when opening the file.  The @c APR_BUFFERED flag will
- * always be used.
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.
+ *
+ * The @c APR_BUFFERED flag will always be used when opening the file.
  *
  * The first attempt will just append @a suffix.  If the result is not
  * a unique name, then subsequent attempts will append a dot,
@@ -248,8 +249,9 @@ svn_io_open_uniquely_named(apr_file_t **
  * be possible to atomically rename the resulting file due to cross-device
  * issues.)
  *
- * The file will be deleted according to @a delete_when.  If @a delete_when
- * is @c svn_io_file_del_on_close and @a file is @c NULL, the file will be
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.  If it
+ * is #svn_io_file_del_on_close and @a file is @c NULL, the file will be
  * deleted before this function returns.
  *
  * When passing @c svn_io_file_del_none please don't forget to eventually
@@ -617,6 +619,8 @@ svn_io_filesizes_different_p(svn_boolean
  * 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,
@@ -662,9 +666,12 @@ svn_io_files_contents_same_p(svn_boolean
                              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.  Use @a pool for temporary allocations.
+ * 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,
@@ -740,7 +747,7 @@ svn_io_lock_open_file(apr_file_t *lockfi
  * Unlock the file @a lockfile_handle.
  *
  * Use @a pool for memory allocations. @a pool must be the pool that
- * @a lockfile_handle has been created in or one of its sub-pools.
+ * was passed to svn_io_lock_open_file().
  *
  * @since New in 1.8.
  */
@@ -912,7 +919,7 @@ svn_stream_empty(apr_pool_t *pool);
 /** Return a stream allocated in @a pool which forwards all requests
  * to @a stream.  Destruction is explicitly excluded from forwarding.
  *
- * @see notes/destruction-of-stacked-resources
+ * @see http://subversion.apache.org/docs/community-guide/conventions.html#destruction-of-stacked-resources
  *
  * @since New in 1.4.
  */
@@ -967,7 +974,8 @@ svn_stream_open_writable(svn_stream_t **
  * be possible to atomically rename the resulting file due to cross-device
  * issues.)
  *
- * The file will be deleted according to @a delete_when.
+ * The file will be deleted according to @a delete_when.  If that is
+ * #svn_io_file_del_on_pool_cleanup, it refers to @a result_pool.
  *
  * Temporary allocations will be performed in @a scratch_pool.
  *
@@ -1365,6 +1373,15 @@ svn_string_from_stream(svn_string_t **re
 /** 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 *
@@ -1376,20 +1393,22 @@ typedef svn_error_t *
 
 /** Return a generic stream which wraps another primary stream,
  * delaying the "opening" of that stream until the first time the
- * stream is accessed.
+ * returned stream is accessed.
  *
  * @a open_func and @a open_baton are a callback function/baton pair
- * invoked upon the first read of @a *stream which are used to open the
- * "real" source stream.
+ * 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.
  *
- * @note If the only "access" the returned stream gets is to close it,
- * @a open_func will not be called.
+ * 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);
 
 /** @} */
@@ -1573,12 +1592,13 @@ svn_io_stat_dirent2(const svn_io_dirent2
                     apr_pool_t *scratch_pool);
 
 
-/** Similar to svn_io_stat_dirent2, but always passes FALSE for
- * verify_truename.
+/** Similar to svn_io_stat_dirent2(), but always passes FALSE for
+ * @a 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,
@@ -1653,17 +1673,20 @@ svn_io_dir_walk(const char *dirname,
  *
  * 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 and @a env is not NULL, the invoked program
- * inherits the environment defined by @a env, instead of an empty
- * environment or the caller's environment.
+ * 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 inherit 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,
@@ -1687,6 +1710,7 @@ svn_error_t *svn_io_start_cmd3(apr_proc_
  * @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,

Modified: subversion/branches/master-passphrase/subversion/include/svn_mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_mergeinfo.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_mergeinfo.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_mergeinfo.h Fri May 10 14:58:47 2013
@@ -315,8 +315,8 @@ svn_rangelist_diff(svn_rangelist_t **del
  * in sorted order and be compacted to the minimal number of ranges
  * needed to represent the merged result.
  *
- * If the original rangelisted contain non collapsed adjacent ranges, the
- * final result is not guaranteed to be compacted either.
+ * 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.
  *

Modified: subversion/branches/master-passphrase/subversion/include/svn_path.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_path.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_path.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_path.h Fri May 10 14:58:47 2013
@@ -677,10 +677,9 @@ svn_path_cstring_to_utf8(const char **pa
  * @{
  */
 
-
 /**
- * Return true iff @a path is a repository-relative URL: specifically that
- * it starts with the characters "^/"
+ * 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.
  *
@@ -694,22 +693,20 @@ svn_path_is_repos_relative_url(const cha
 
 /**
  * Set @a absolute_url to the absolute URL represented by @a relative_url
- * relative to @a repos_root_url.  @a absolute_url will be allocated in
- * @a pool.
- *
- * @a absolute_url will end with a peg revision specifier if @a relative_url
- * did.
+ * 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.
+ * @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.
+ * 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.
  */
@@ -719,7 +716,6 @@ svn_path_resolve_repos_relative_url(cons
                                     const char *repos_root_url,
                                     apr_pool_t *pool);
 
-
 /** @} */
 
 #ifdef __cplusplus

Modified: subversion/branches/master-passphrase/subversion/include/svn_pools.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_pools.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_pools.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_pools.h Fri May 10 14:58:47 2013
@@ -90,14 +90,17 @@ svn_pool_create_ex_debug(pool, allocator
  * 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.  Pools will still not thread-safe, i.e.
- * access to them may require explicit serialization.  Set the parameter to
- * @c FALSE, otherwise, to maximize performance.
+ * 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.
  *
- * To access the owner pool, which can also serve as the root pool for your
- * sub-pools, call @c apr_allocator_get_owner().
+ * @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
  */

Modified: subversion/branches/master-passphrase/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_props.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_props.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_props.h Fri May 10 14:58:47 2013
@@ -91,12 +91,15 @@ svn_prop_array_dup(const apr_array_heade
  */
 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. */
+  /** 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 (const char *) inherited property names, and (svn_string_t *)
-   * property values. */
+  /** 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;
@@ -169,7 +172,7 @@ typedef enum svn_prop_kind
 
 /** Return the property kind of a property named @a prop_name.
  *
- * @since New in 1.8
+ * @since New in 1.8.
  */
 svn_prop_kind_t
 svn_property_kind2(const char *prop_name);
@@ -208,58 +211,58 @@ svn_prop_has_svn_prop(const apr_hash_t *
 /** 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.  For example, svn:log or svn:date.
+ * known revision property ("svn:log" or "svn:date", e.g.).
  *
- * This will return FALSE for any property name that is not known by this
+ * 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
+ * @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.
- * For example, svn:eol-style or svn:ignore or svn:mergeinfo.
+ * 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 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.
+ * 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
+ * @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.  For example,
- * svn:eol-style or svn:mergeinfo.
- *
- * This will return 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.
+/** 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
+ * @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 represents the name of a Subversion
- * known versioned property that is allowed on a directory.  For example,
- * svn:ignore or svn:mergeinfo.
- *
- * This will return 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.
+/** 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
+ * @since New in 1.8.
  */
 svn_boolean_t
 svn_prop_is_known_svn_dir_prop(const char *prop_name);
@@ -486,9 +489,10 @@ svn_prop_name_is_valid(const char *prop_
 /** @} */ /* Meta-data properties */
 
 /**
- * This is a list of all user-vixible and -settable versioned node properties.
+ * This is a list of all user-visible and -settable versioned node
+ * properties.
  *
- * @since New in 1.8
+ * @since New in 1.8.
  */
 #define SVN_PROP_NODE_ALL_PROPS SVN_PROP_MIME_TYPE, \
                                 SVN_PROP_IGNORE, \
@@ -662,19 +666,25 @@ svn_prop_name_is_valid(const char *prop_
  */
 
 /** The prefix used for all (ephemeral) transaction properties.
- * @since New in 1.8. */
+ *
+ * @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. */
+ *
+ * @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. */
+ *
+ * @since New in 1.8.
+ */
 #define SVN_PROP_TXN_USER_AGENT \
             SVN_PROP_TXN_PREFIX "user-agent"
 
@@ -685,7 +695,9 @@ svn_prop_name_is_valid(const char *prop_
  * 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. */
+ *
+ * @since New in 1.8.
+ */
 #define SVN_PROP_REVISION_PREFIX  SVN_PROP_PREFIX "revision-"
 
 

Modified: subversion/branches/master-passphrase/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_ra.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_ra.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_ra.h Fri May 10 14:58:47 2013
@@ -1078,7 +1078,7 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
                      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
@@ -1104,6 +1104,12 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
  * (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.
  *
@@ -1111,7 +1117,8 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
  * 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.
@@ -1120,8 +1127,36 @@ svn_ra_get_mergeinfo(svn_ra_session_t *s
  * 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,
@@ -1156,56 +1191,12 @@ svn_ra_do_update(svn_ra_session_t *sessi
 
 
 /**
- * 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.
+ * Ask the RA layer to switch a working copy to a new revision and URL.
  *
- * 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.
- *
- * If @a send_copyfrom_args is TRUE, then ask the server to send
- * copyfrom arguments to add_file() and add_directory() when possible.
- * (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
- * switched 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 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.
- *
- * Use @a result_pool for memory allocation and @a scratch_pool for
- * temporary work.
- *
- * @note The reporter provided by this function does NOT supply copy-
- * from information to the diff editor callbacks.
- *
- * @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.
+ * 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 Pre Subversion 1.8 svnserve based servers always ignore ancestry
  * and never send copyfrom data.
@@ -1348,7 +1339,7 @@ svn_ra_do_status(svn_ra_session_t *sessi
  * 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
@@ -1977,7 +1968,7 @@ svn_ra_get_deleted_rev(svn_ra_session_t 
  * paths relative to the repository root URL (of the repository which
  * @a ra_session is associated).
  *
- * Allocated @a *inherited_props in @a result_pool, use @a scratch_pool
+ * Allocate @a *inherited_props in @a result_pool.  Use @a scratch_pool
  * for temporary allocations.
  *
  * @since New in 1.8.

Modified: subversion/branches/master-passphrase/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/master-passphrase/subversion/include/svn_ra_svn.h?rev=1481041&r1=1481040&r2=1481041&view=diff
==============================================================================
--- subversion/branches/master-passphrase/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/master-passphrase/subversion/include/svn_ra_svn.h Fri May 10 14:58:47 2013
@@ -164,75 +164,6 @@ typedef struct svn_ra_svn_item_t
 
 typedef svn_error_t *(*svn_ra_svn_edit_callback)(void *baton);
 
-/**
- * List of all commands supported by the SVN:// protocol.
- *
- * @since New in 1.8
- */
-typedef enum svn_ra_svn_cmd_t
-{
-  svn_ra_svn_cmd_target_rev,
-  svn_ra_svn_cmd_open_root,
-  svn_ra_svn_cmd_delete_entry,
-  svn_ra_svn_cmd_add_dir,
-  svn_ra_svn_cmd_open_dir,
-  svn_ra_svn_cmd_change_dir_prop,
-  svn_ra_svn_cmd_close_dir,
-  svn_ra_svn_cmd_absent_dir,
-  svn_ra_svn_cmd_add_file,
-  svn_ra_svn_cmd_open_file,
-  svn_ra_svn_cmd_change_file_prop,
-  svn_ra_svn_cmd_close_file,
-  svn_ra_svn_cmd_absent_file,
-  svn_ra_svn_cmd_textdelta_chunk,
-  svn_ra_svn_cmd_textdelta_end,
-  svn_ra_svn_cmd_apply_textdelta,
-  svn_ra_svn_cmd_close_edit,
-  svn_ra_svn_cmd_abort_edit,
-  
-  svn_ra_svn_cmd_set_path,
-  svn_ra_svn_cmd_delete_path,
-  svn_ra_svn_cmd_link_path,
-  svn_ra_svn_cmd_finish_report,
-  svn_ra_svn_cmd_abort_report,
-
-  svn_ra_svn_cmd_reparent,
-  svn_ra_svn_cmd_get_latest_rev,
-  svn_ra_svn_cmd_get_dated_rev,
-  svn_ra_svn_cmd_change_rev_prop2,
-  svn_ra_svn_cmd_change_rev_prop,
-  svn_ra_svn_cmd_rev_proplist,
-  svn_ra_svn_cmd_rev_prop,
-  svn_ra_svn_cmd_get_file,
-  svn_ra_svn_cmd_update,
-  svn_ra_svn_cmd_switch,
-  svn_ra_svn_cmd_status,
-  svn_ra_svn_cmd_diff,
-  svn_ra_svn_cmd_check_path,
-  svn_ra_svn_cmd_stat,
-  svn_ra_svn_cmd_get_file_revs,
-  svn_ra_svn_cmd_lock,
-  svn_ra_svn_cmd_unlock,
-  svn_ra_svn_cmd_get_lock,
-  svn_ra_svn_cmd_get_locks,
-  svn_ra_svn_cmd_replay,
-  svn_ra_svn_cmd_replay_range,
-  svn_ra_svn_cmd_get_deleted_rev,
-  svn_ra_svn_cmd_get_iprops,
-  svn_ra_svn_cmd_finish_replay,
-
-  svn_ra_svn_cmd__last
-} svn_ra_svn_cmd_t;
-
-/**
- * Set the shim callbacks to be used by @a conn to @a shim_callbacks.
- *
- * @note This is a private API, external consumers should not use it.
- */
-svn_error_t *
-svn_ra_svn__set_shim_callbacks(svn_ra_svn_conn_t *conn,
-                               svn_delta_shim_callbacks_t *shim_callbacks);
-
 /** Initialize a connection structure for the given socket or
  * input/output files.
  *
@@ -240,6 +171,14 @@ svn_ra_svn__set_shim_callbacks(svn_ra_sv
  * @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
@@ -264,6 +203,7 @@ svn_ra_svn_conn_t *svn_ra_svn_create_con
  *
  * @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,
@@ -301,14 +241,17 @@ svn_boolean_t
 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
+/** 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.
  */
@@ -320,10 +263,82 @@ svn_ra_svn_zero_copy_limit(svn_ra_svn_co
 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,
@@ -332,7 +347,11 @@ svn_ra_svn_write_number(svn_ra_svn_conn_
 /** 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,
@@ -341,7 +360,11 @@ svn_ra_svn_write_string(svn_ra_svn_conn_
 /** 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,
@@ -350,7 +373,11 @@ svn_ra_svn_write_cstring(svn_ra_svn_conn
 /** 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,
@@ -360,18 +387,32 @@ svn_ra_svn_write_word(svn_ra_svn_conn_t 
  * 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);
@@ -380,7 +421,11 @@ svn_ra_svn_end_list(svn_ra_svn_conn_t *c
  *
  * 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);
@@ -423,13 +468,22 @@ svn_ra_svn_flush(svn_ra_svn_conn_t *conn
      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,
@@ -441,7 +495,11 @@ svn_ra_svn_read_item(svn_ra_svn_conn_t *
  * 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);
@@ -477,7 +535,11 @@ svn_ra_svn_skip_leading_garbage(svn_ra_s
  * 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,
@@ -485,7 +547,11 @@ svn_ra_svn_parse_tuple(const apr_array_h
 
 /** 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,
@@ -495,7 +561,11 @@ svn_ra_svn_read_tuple(svn_ra_svn_conn_t 
  * 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,
@@ -503,7 +573,11 @@ svn_ra_svn_parse_proplist(const apr_arra
 
 /** 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,
@@ -522,7 +596,10 @@ svn_ra_svn_read_cmd_response(svn_ra_svn_
  *
  * @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,
@@ -546,7 +623,7 @@ svn_ra_svn_handle_commands(svn_ra_svn_co
  * as svn_ra_svn_write_tuple().
  *
  * @deprecated Provided for backward compatibility with the 1.7 API.
- * Use svn_ra_svn_write_templated_cmd instead.
+ *             RA_SVN low-level functions are no longer considered public.
  */
 SVN_DEPRECATED
 svn_error_t *
@@ -555,90 +632,34 @@ svn_ra_svn_write_cmd(svn_ra_svn_conn_t *
                      const char *cmdname,
                      const char *fmt, ...);
 
-/** Write a command of type @a cmd over the network connection @a conn.
- * The parameters to be provided are command-specific.  @a pool will be
- * used for allocations.
- * 
- * @since New in 1.8.
- */
-svn_error_t *
-svn_ra_svn_write_templated_cmd(svn_ra_svn_conn_t *conn,
-                               apr_pool_t *pool,
-                               svn_ra_svn_cmd_t cmd, ...);
-
 /** Write a successful command response over the network, using the
  * 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
 }