You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/09/06 22:02:24 UTC
svn commit: r993141 [6/25] - in /subversion/branches/performance: ./
build/ac-macros/ build/generator/ contrib/server-side/ notes/ notes/wc-ng/
subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/b...
Modified: subversion/branches/performance/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_config.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_config.h (original)
+++ subversion/branches/performance/subversion/include/svn_config.h Mon Sep 6 20:02:15 2010
@@ -185,6 +185,15 @@ svn_config_get_config(apr_hash_t **cfg_h
apr_pool_t *pool);
+/** Set @a *cfgp to an empty @c svn_config_t structure,
+ * allocated in @a result_pool.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_config_create(svn_config_t **cfgp,
+ apr_pool_t *result_pool);
+
/** Read configuration data from @a file (a file or registry path) into
* @a *cfgp, allocated in @a pool.
*
Modified: subversion/branches/performance/subversion/include/svn_dav.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_dav.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_dav.h (original)
+++ subversion/branches/performance/subversion/include/svn_dav.h Mon Sep 6 20:02:15 2010
@@ -43,6 +43,12 @@ extern "C" {
*/
#define SVN_SVNDIFF_MIME_TYPE "application/vnd.svn-svndiff"
+/** This is the MIME type that Subversion users for its "skel" format.
+ *
+ * This is an application type, for the "svn" vendor. The specific subtype
+ * is "skel".
+ */
+#define SVN_SKEL_MIME_TYPE "application/vnd.svn-skel"
/** 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.
Modified: subversion/branches/performance/subversion/include/svn_diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_diff.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_diff.h (original)
+++ subversion/branches/performance/subversion/include/svn_diff.h Mon Sep 6 20:02:15 2010
@@ -376,7 +376,7 @@ typedef struct svn_diff_file_options_t
/** Whether to treat all end-of-line markers the same when comparing lines.
* The default is @c FALSE. */
svn_boolean_t ignore_eol_style;
- /** Whether the '@@' lines of the unified diff output should include a prefix
+ /** Whether the "@@" lines of the unified diff output should include a prefix
* of the nearest preceding line that starts with a character that might be
* the initial character of a C language identifier. The default is
* @c FALSE.
@@ -796,31 +796,37 @@ typedef enum svn_diff_operation_kind_e
* - modified text The result of patching the original text.
*
* For example, consider a hunk with the following diff text:
- * @@ -1,5 +1,5 @@
- * #include <stdio.h>
- * int main(int argc, char *argv[]) {
- * - printf("Hello World!\n");
- * + printf("I like Subversion!\n");
- * }
+ *
+ * @verbatim
+ @@ -1,5 +1,5 @@
+ #include <stdio.h>
+ int main(int argc, char *argv[]) {
+ - printf("Hello World!\n");
+ + printf("I like Subversion!\n");
+ } @endverbatim
*
* The original text of this hunk is:
- * #include <stdio.h>
- * int main(int argc, char *argv[]) {
- * printf("Hello World!\n");
- * }
+ *
+ * @verbatim
+ #include <stdio.h>
+ int main(int argc, char *argv[]) {
+ printf("Hello World!\n");
+ } @endverbatim
*
* And the modified text is:
- * #include <stdio.h>
- * int main(int argc, char *argv[]) {
- * printf("I like Subversion!\n");
- * }
+ *
+ * @verbatim
+ #include <stdio.h>
+ int main(int argc, char *argv[]) {
+ printf("I like Subversion!\n");
+ } @endverbatim
*
* @see svn_diff_hunk_readline_diff_text()
* @see svn_diff_hunk_readline_original_text()
* @see svn_diff_hunk_readline_modified_text()
*
* @since New in 1.7. */
-typedef struct svn_hunk_t svn_hunk_t;
+typedef struct svn_diff_hunk_t svn_diff_hunk_t;
/**
* Allocate @a *stringbuf in @a result_pool, and read into it one line
@@ -838,7 +844,7 @@ typedef struct svn_hunk_t svn_hunk_t;
* @since New in 1.7.
*/
svn_error_t *
-svn_diff_hunk_readline_diff_text(const svn_hunk_t *hunk,
+svn_diff_hunk_readline_diff_text(const svn_diff_hunk_t *hunk,
svn_stringbuf_t **stringbuf,
const char **eol,
svn_boolean_t *eof,
@@ -854,11 +860,11 @@ svn_diff_hunk_readline_diff_text(const s
* and @a eol is not NULL, @a *eol is set to NULL.
* Temporary allocations will be performed in @a scratch_pool.
*
- * @see svn_hunk_t
+ * @see svn_diff_hunk_t
* @since New in 1.7.
*/
svn_error_t *
-svn_diff_hunk_readline_original_text(const svn_hunk_t *hunk,
+svn_diff_hunk_readline_original_text(const svn_diff_hunk_t *hunk,
svn_stringbuf_t **stringbuf,
const char **eol,
svn_boolean_t *eof,
@@ -869,69 +875,69 @@ svn_diff_hunk_readline_original_text(con
* Like svn_diff_hunk_readline_original_text(), but it returns lines from
* the modified text of the hunk.
*
- * @see svn_hunk_t
+ * @see svn_diff_hunk_t
* @since New in 1.7.
*/
svn_error_t *
-svn_diff_hunk_readline_modified_text(const svn_hunk_t *hunk,
+svn_diff_hunk_readline_modified_text(const svn_diff_hunk_t *hunk,
svn_stringbuf_t **stringbuf,
const char **eol,
svn_boolean_t *eof,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
-/* Reset the diff text of @a hunk so it can be read again from the start.
+/** Reset the diff text of @a hunk so it can be read again from the start.
* @since New in 1.7. */
svn_error_t *
-svn_diff_hunk_reset_diff_text(const svn_hunk_t *hunk);
+svn_diff_hunk_reset_diff_text(const svn_diff_hunk_t *hunk);
-/* Reset the original text of @a hunk so it can be read again from the start.
+/** Reset the original text of @a hunk so it can be read again from the start.
* @since New in 1.7. */
svn_error_t *
-svn_diff_hunk_reset_original_text(const svn_hunk_t *hunk);
+svn_diff_hunk_reset_original_text(const svn_diff_hunk_t *hunk);
-/* Reset the modified text of @a hunk so it can be read again from the start.
+/** Reset the modified text of @a hunk so it can be read again from the start.
* @since New in 1.7. */
svn_error_t *
-svn_diff_hunk_reset_modified_text(const svn_hunk_t *hunk);
+svn_diff_hunk_reset_modified_text(const svn_diff_hunk_t *hunk);
-/* Return the line offset of the original hunk text,
+/** Return the line offset of the original hunk text,
* as parsed from the hunk header.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_original_start(const svn_hunk_t *hunk);
+svn_diff_hunk_get_original_start(const svn_diff_hunk_t *hunk);
-/* Return the number of lines in the original @a hunk text,
+/** Return the number of lines in the original @a hunk text,
* as parsed from the hunk header.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_original_length(const svn_hunk_t *hunk);
+svn_diff_hunk_get_original_length(const svn_diff_hunk_t *hunk);
-/* Return the line offset of the modified @a hunk text,
+/** Return the line offset of the modified @a hunk text,
* as parsed from the hunk header.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_modified_start(const svn_hunk_t *hunk);
+svn_diff_hunk_get_modified_start(const svn_diff_hunk_t *hunk);
-/* Return the number of lines in the modified @a hunk text,
+/** Return the number of lines in the modified @a hunk text,
* as parsed from the hunk header.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_modified_length(const svn_hunk_t *hunk);
+svn_diff_hunk_get_modified_length(const svn_diff_hunk_t *hunk);
-/* Return the number of lines of leading context of @a hunk,
+/** Return the number of lines of leading context of @a hunk,
* i.e. the number of lines starting with ' ' before the first line
* that starts with a '+' or '-'.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_leading_context(const svn_hunk_t *hunk);
+svn_diff_hunk_get_leading_context(const svn_diff_hunk_t *hunk);
-/* Return the number of lines of trailing context of @a hunk,
+/** Return the number of lines of trailing context of @a hunk,
* i.e. the number of lines starting with ' ' after the last line
* that starts with a '+' or '-'.
* @since New in 1.7. */
svn_linenum_t
-svn_diff_hunk_get_trailing_context(const svn_hunk_t *hunk);
+svn_diff_hunk_get_trailing_context(const svn_diff_hunk_t *hunk);
/**
* Data type to manage parsing of properties in patches.
@@ -944,8 +950,8 @@ typedef struct svn_prop_patch_t {
svn_diff_operation_kind_t operation;
/**
- * An array containing an svn_hunk_t object for each hunk parsed from the
- * patch associated with our property name */
+ * An array containing an svn_diff_hunk_t object for each hunk parsed
+ * from the patch associated with our property name */
apr_array_header_t *hunks;
} svn_prop_patch_t;
@@ -968,12 +974,12 @@ typedef struct svn_patch_t {
const char *new_filename;
/**
- * An array containing an svn_hunk_t object for each hunk parsed
+ * An array containing an svn_diff_hunk_t object for each hunk parsed
* from the patch. */
apr_array_header_t *hunks;
/**
- * A hash table keyed by property names containing svn_patch_property_t
+ * A hash table keyed by property names containing svn_prop_patch_t
* object for each property parsed from the patch. */
apr_hash_t *prop_patches;
@@ -1002,11 +1008,12 @@ svn_diff_parse_next_patch(svn_patch_t **
/**
* Dispose of @a patch, closing any streams used by it.
+ * Use @a scratch_pool for all temporary allocations.
*
* @since New in 1.7.
*/
svn_error_t *
-svn_diff_close_patch(const svn_patch_t *patch);
+svn_diff_close_patch(const svn_patch_t *patch, apr_pool_t *scratch_pool);
#ifdef __cplusplus
}
Modified: subversion/branches/performance/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_dirent_uri.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/performance/subversion/include/svn_dirent_uri.h Mon Sep 6 20:02:15 2010
@@ -561,19 +561,19 @@ svn_dirent_get_absolute(const char **pab
const char *relative,
apr_pool_t *pool);
-/** Test if @a uri2 is a child of @a uri1.
+/** Test if @a child_uri is a child of @a parent_uri.
* If not, return @c NULL.
* If so, return a copy of the remainder uri, allocated in @a pool.
- * (The remainder is the component which, added to @a uri1, yields
- * @a uri2. The remainder does not begin with a dir separator.)
+ * (The remainder is the component which, added to @a parent_uri, yields
+ * @a child_uri. The remainder does not begin with a dir separator.)
*
* Both uris must be in canonical form, and must either be absolute,
* or contain no ".." components.
*
- * If @a uri2 is the same as @a uri1, it is not considered a child,
+ * 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.
*
- * If @a pool is @c NULL , a pointer into @a uri2 will be returned to
+ * If @a pool is @c NULL , a pointer into @a child_uri will be returned to
* identify the remainder uri.
*
* ### @todo the ".." restriction is unfortunate, and would ideally
@@ -584,12 +584,12 @@ svn_dirent_get_absolute(const char **pab
* @since New in 1.7.
*/
const char *
-svn_uri_is_child(const char *uri1,
- const char *uri2,
+svn_uri_is_child(const char *parent_uri,
+ const char *child_uri,
apr_pool_t *pool);
/**
- * This function is similar as svn_uri_is_child(), except that it supports
+ * This function is similar to svn_uri_is_child(), except that it supports
* Windows dirents and UNC paths on Windows.
*
* ### @todo Makes no attempt to handle one absolute and one relative
@@ -598,88 +598,90 @@ svn_uri_is_child(const char *uri1,
* @since New in 1.6.
*/
const char *
-svn_dirent_is_child(const char *dirent1,
- const char *dirent2,
+svn_dirent_is_child(const char *parent_dirent,
+ const char *child_dirent,
apr_pool_t *pool);
/**
- * This function is similar as svn_uri_is_child(), except that it supports
+ * This function is similar to svn_uri_is_child(), except that it supports
* only relative paths.
*
* @since New in 1.7.
*/
const char *
-svn_relpath_is_child(const char *relpath1,
- const char *relpath2,
+svn_relpath_is_child(const char *parent_relpath,
+ const char *child_relpath,
apr_pool_t *pool);
-/** Return TRUE if @a dirent1 is an ancestor of @a dirent2 or the dirents are
- * equal and FALSE otherwise.
+/** Return TRUE if @a parent_dirent is an ancestor of @a child_dirent or
+ * the dirents are equal, and FALSE otherwise.
*
* @since New in 1.6.
*/
svn_boolean_t
-svn_dirent_is_ancestor(const char *path1,
- const char *path2);
+svn_dirent_is_ancestor(const char *parent_dirent,
+ const char *child_dirent);
-/** Return TRUE if @a relpath1 is an ancestor of @a relpath2 or the relpaths
- * are equal and FALSE otherwise.
+/** Return TRUE if @a parent_relpath is an ancestor of @a child_relpath or
+ * the relpaths are equal, and FALSE otherwise.
*
* This function supports only relative paths.
*
* @since New in 1.7.
*/
svn_boolean_t
-svn_relpath_is_ancestor(const char *relpath1,
- const char *relpath2);
+svn_relpath_is_ancestor(const char *parent_relpath,
+ const char *child_relpath);
-/** Return TRUE if @a uri1 is an ancestor of @a uri2 or the uris are
- * equal and FALSE otherwise.
+/** Return TRUE if @a parent_uri is an ancestor of @a child_uri or
+ * the uris are equal, and FALSE otherwise.
*
* This function supports URLs.
*
* @since New in 1.7.
*/
svn_boolean_t
-svn_uri_is_ancestor(const char *uri1,
- const char *uri2);
+svn_uri_is_ancestor(const char *parent_uri,
+ const char *child_uri);
-/** Returns the relative path part of @a dirent2 that is below @a dirent1,
- * or just "" iif @a dirent1 is equal to @a dirent2. If @a dirent2 is not
- * below @a path1, return @a dirent2 completely.
+/** Return the relative path part of @a child_dirent that is below
+ * @a parent_dirent, or just "" if @a parent_dirent is equal to
+ * @a child_dirent. If @a child_dirent is not below @a parent_dirent,
+ * return @a child_dirent completely.
*
- * This function assumes @a dirent1 and @a dirent2 are both absolute or
- * relative in the same way.
+ * This function assumes @a parent_dirent and @a child_dirent are both
+ * absolute or relative in the same way.
*
* @since New in 1.7.
*/
const char *
-svn_dirent_skip_ancestor(const char *dirent1,
- const char *dirent2);
+svn_dirent_skip_ancestor(const char *parent_dirent,
+ const char *child_dirent);
-/** Returns the relative path part of @a relpath2 that is below @a relpath1,
- * or just "" iif @a relpath1 is equal to @a relpath2. If @a relpath2 is not
- * below @a relpath1, return @a relpath2.
+/** Return the relative path part of @a child_relpath that is below
+ * @a parent_relpath, or just "" if @a parent_relpath is equal to
+ * @a child_relpath. If @a child_relpath is not below @a parent_relpath,
+ * return @a child_relpath.
*
* @since New in 1.7.
*/
const char *
-svn_relpath_skip_ancestor(const char *relpath1,
- const char *relpath2);
+svn_relpath_skip_ancestor(const char *parent_relpath,
+ const char *child_relpath);
-/** Returns the relative path part of @a uri2 that is below @a uri1, or just
- * "" iif @a uri1 is equal to @a uri2. If @a uri2 is not below @a uri1,
- * return @a uri2.
+/** Return the relative path part 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 @a parent_uri, return @a child_uri.
*
- * This function assumes @a uri1 and @a uri2 are both absolute or relative
- * in the same way.
+ * This function assumes @a parent_uri and @a child_uri are both absolute or
+ * relative in the same way.
*
* @since New in 1.7.
*/
const char *
-svn_uri_skip_ancestor(const char *uri1,
- const char *uri2);
+svn_uri_skip_ancestor(const char *parent_uri,
+ const char *child_uri);
/** Find the common prefix of the canonicalized dirents in @a targets
* (an array of <tt>const char *</tt>'s), and remove redundant dirents if @a
@@ -764,20 +766,22 @@ svn_uri_condense_targets(const char **pc
apr_pool_t *scratch_pool);
/** Check that when @a path is joined to @a base_path, the resulting path
- * is still under BASE_PATH in the local filesystem. If not, return @c FALSE.
- * If @c TRUE is returned, @a *full_path will be set to the absolute path
- * of @a path, allocated in @a pool.
+ * is still under BASE_PATH in the local filesystem. If not, set @a under_root
+ * to @c FALSE. If @a under_root is @c TRUE is returned, and @a result_path is
+ * not @c NULL, then @a *result_path will be set to the absolute path of @a
+ * path, allocated 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.
*/
-svn_boolean_t
-svn_dirent_is_under_root(char **full_path,
+svn_error_t *
+svn_dirent_is_under_root(svn_boolean_t *under_root,
+ const char **result_path,
const char *base_path,
const char *path,
- apr_pool_t *pool);
+ apr_pool_t *result_pool);
/** Set @a *dirent to the path corresponding to the file:// URL @a url, using
* the platform-specific file:// rules.
Modified: subversion/branches/performance/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_error_codes.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/performance/subversion/include/svn_error_codes.h Mon Sep 6 20:02:15 2010
@@ -512,6 +512,11 @@ SVN_ERROR_START
SVN_ERR_WC_CATEGORY_START + 37,
"Previous operation was interrupted; run 'svn cleanup'")
+ /** @since New in 1.7. */
+ SVN_ERRDEF(SVN_ERR_WC_INVALID_OPERATION_DEPTH,
+ SVN_ERR_WC_CATEGORY_START + 38,
+ "This operation can not be performed with just this depth.")
+
/* fs errors */
SVN_ERRDEF(SVN_ERR_FS_GENERAL,
@@ -837,6 +842,11 @@ SVN_ERROR_START
SVN_ERR_RA_CATEGORY_START + 10,
"Repository root URL does not match expected root URL")
+ /** @since New in 1.7. */
+ SVN_ERRDEF(SVN_ERR_RA_SESSION_URL_MISMATCH,
+ SVN_ERR_RA_CATEGORY_START + 11,
+ "Session URL does not match expected session URL")
+
/* ra_dav errors */
SVN_ERRDEF(SVN_ERR_RA_DAV_SOCK_INIT,
@@ -969,6 +979,11 @@ SVN_ERROR_START
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
@@ -1160,6 +1175,11 @@ SVN_ERROR_START
SVN_ERR_CLIENT_CATEGORY_START + 18,
"Invalid path component strip count specified")
+ /** @since New in 1.7. */
+ SVN_ERRDEF(SVN_ERR_CLIENT_CYCLE_DETECTED,
+ SVN_ERR_CLIENT_CATEGORY_START + 19,
+ "Detected a cycle while processing the operation")
+
/* misc errors */
SVN_ERRDEF(SVN_ERR_BASE,
Modified: subversion/branches/performance/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_fs.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_fs.h (original)
+++ subversion/branches/performance/subversion/include/svn_fs.h Mon Sep 6 20:02:15 2010
@@ -1154,7 +1154,7 @@ svn_fs_path_change2_create(const svn_fs_
/** Determine what has changed under a @a root.
*
- * Allocate and return a hash @a *changed_paths_p containing descriptions
+ * Allocate and return a hash @a *changed_paths2_p containing descriptions
* of the paths changed under @a root. The hash is keyed with
* <tt>const char *</tt> paths, and has #svn_fs_path_change2_t * values.
*
@@ -1169,7 +1169,7 @@ svn_fs_path_change2_create(const svn_fs_
* @since New in 1.6.
*/
svn_error_t *
-svn_fs_paths_changed2(apr_hash_t **changed_paths_p,
+svn_fs_paths_changed2(apr_hash_t **changed_paths2_p,
svn_fs_root_t *root,
apr_pool_t *pool);
Modified: subversion/branches/performance/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_props.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_props.h (original)
+++ subversion/branches/performance/subversion/include/svn_props.h Mon Sep 6 20:02:15 2010
@@ -264,7 +264,7 @@ svn_prop_name_is_valid(const char *prop_
* @{
*/
-/* Properties whose values are interpreted as booleans (such as
+/** Properties whose values are interpreted as booleans (such as
* svn:executable, svn:needs_lock, and svn:special) always fold their
* value to this.
*
@@ -319,13 +319,14 @@ svn_prop_name_is_valid(const char *prop_
*
* The format is a series of lines, such as:
*
- *@verbatim
+ * <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 @endverbatim
+ 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.
@@ -398,9 +399,10 @@ svn_prop_name_is_valid(const char *prop_
* For example, WebDAV RA implementations might store a versioned-resource
* url as a WC prop like this:
*
- * @verbatim
+ * <pre reason="Should use 'verbatim' instead, but Doxygen v1.6.1 & v1.7.1
+ * then doesn't recognize the #define; presumably a bug.">
name = svn:wc:dav_url
- val = http://www.example.com/repos/452348/e.289 @endverbatim
+ val = http://www.example.com/repos/452348/e.289 </pre>
*
* The client will try to protect WC props by warning users against
* changing them. The client will also send them back to the RA layer
Modified: subversion/branches/performance/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_ra.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_ra.h (original)
+++ subversion/branches/performance/subversion/include/svn_ra.h Mon Sep 6 20:02:15 2010
@@ -65,7 +65,7 @@ svn_ra_version(void);
* @a close_baton as appropriate.
*
* @a path is relative to the "root" of the session, defined by the
- * @a repos_URL passed to svn_ra_open3() vtable call.
+ * @a repos_URL passed to svn_ra_open4() vtable call.
*
* @a name is the name of the property to fetch. If the property is present,
* then it is returned in @a value. Otherwise, @a *value is set to @c NULL.
@@ -294,7 +294,7 @@ typedef struct svn_ra_reporter3_t
* implementor should assume the directory has no entries or props.
*
* This will *override* any previous set_path() calls made on parent
- * paths. @a path is relative to the URL specified in svn_ra_open3().
+ * paths. @a path is relative to the URL specified in svn_ra_open4().
*
* If @a lock_token is non-NULL, it is the lock token for @a path in the WC.
*
@@ -445,7 +445,7 @@ typedef struct svn_ra_reporter_t
/** A collection of callbacks implemented by libsvn_client which allows
* an RA layer to "pull" information from the client application, or
* possibly store information. libsvn_client passes this vtable to
- * svn_ra_open3().
+ * svn_ra_open4().
*
* Each routine takes a @a callback_baton originally provided with the
* vtable.
@@ -580,8 +580,19 @@ svn_ra_create_callbacks(svn_ra_callbacks
typedef struct svn_ra_session_t svn_ra_session_t;
/**
- * Open a repository session to @a repos_URL. Return an opaque object
- * representing this session in @a *session_p, allocated in @a pool.
+ * Open a repository access session to the repository at @a repos_URL,
+ * or inform the caller regarding a correct URL by which to access
+ * that repository.
+ *
+ * If @a repos_URL can be used successfully to access the repository,
+ * set @a *session_p to an opaque object representing a repository
+ * session for the repository and (if @a corrected_url is non-NULL)
+ * set @a *corrected_url to NULL. If there's a better URL that the
+ * caller should try and @a corrected_url is non-NULL, set
+ * @a *session_p to NULL and @a *corrected_url to the corrected URL. If
+ * there's a better URL that the caller should try, and @a
+ * corrected_url is NULL, return an #SVN_ERR_RA_SESSION_URL_MISMATCH
+ * error. Allocate all returned items in @a pool.
*
* 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.
@@ -598,8 +609,25 @@ typedef struct svn_ra_session_t svn_ra_s
*
* @see svn_client_open_ra_session().
*
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_ra_open4(svn_ra_session_t **session_p,
+ const char **corrected_url,
+ const char *repos_URL,
+ const char *uuid,
+ const svn_ra_callbacks2_t *callbacks,
+ void *callback_baton,
+ apr_hash_t *config,
+ apr_pool_t *pool);
+
+/** Similar to svn_ra_open4(), but with @a corrected_url always passed
+ * as @c NULL.
+ *
* @since New in 1.5.
+ * @deprecated Provided for backward compatibility with the 1.6 API.
*/
+SVN_DEPRECATED
svn_error_t *
svn_ra_open3(svn_ra_session_t **session_p,
const char *repos_URL,
@@ -1157,7 +1185,7 @@ svn_ra_do_switch(svn_ra_session_t *sessi
*
* Get status as deeply as @a depth indicates. If @a depth is
* #svn_depth_unknown, get the status down to the ambient depth of the
- * working copy. If @depth is deeper than the working copy, include changes
+ * working copy. If @a depth is deeper than the working copy, include changes
* that would be needed to populate the working copy to that depth.
*
* The caller may not perform any RA operations using @a session
@@ -1568,8 +1596,9 @@ svn_ra_get_location_segments(svn_ra_sess
* empty file. In the following calls, the delta will be against the
* fulltext contents for the previous call.
*
- * 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.
+ * If @a include_merged_revisions is TRUE, revisions which are
+ * included as a result of a merge between @a start and @a end will be
+ * included.
*
* @note This functionality is not available in pre-1.1 servers. If the
* server doesn't implement it, an alternative (but much slower)
Modified: subversion/branches/performance/subversion/include/svn_ra_svn.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_ra_svn.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_ra_svn.h (original)
+++ subversion/branches/performance/subversion/include/svn_ra_svn.h Mon Sep 6 20:02:15 2010
@@ -302,11 +302,11 @@ svn_ra_svn_flush(svn_ra_svn_conn_t *conn
* Use the '!' format specifier to write partial tuples when you have
* to transmit an array or other unusual data. For example, to write
* a tuple containing a revision, an array of words, and a boolean:
- * @verbatim
+ * @code
SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "r(!", rev));
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)); @endverbatim
+ SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "!)b", flag)); @endcode
*/
svn_error_t *
svn_ra_svn_write_tuple(svn_ra_svn_conn_t *conn,
Modified: subversion/branches/performance/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_repos.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_repos.h (original)
+++ subversion/branches/performance/subversion/include/svn_repos.h Mon Sep 6 20:02:15 2010
@@ -2323,10 +2323,6 @@ svn_repos_node_from_baton(void *edit_bat
/** @since New in 1.5. */
#define SVN_REPOS_DUMPFILE_TEXT_DELTA_BASE_CHECKSUM \
SVN_REPOS_DUMPFILE_TEXT_DELTA_BASE_MD5
-/** @since New in 1.7. */
-#define SVN_REPOS_DUMPFILE_PROP_CONTENT_MD5 "Prop-content-md5"
-/** @since New in 1.7. */
-#define SVN_REPOS_DUMPFILE_PROP_CONTENT_SHA1 "Prop-content-sha1"
/**
* Verify the contents of the file system in @a repos.
Modified: subversion/branches/performance/subversion/include/svn_sorts.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_sorts.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_sorts.h (original)
+++ subversion/branches/performance/subversion/include/svn_sorts.h Mon Sep 6 20:02:15 2010
@@ -76,10 +76,10 @@ typedef struct svn_sort__item_t {
* @c apr_array_header_t. For example, to convert hash @a hsh to a sorted
* array, do this:
*
- * @verbatim
- apr_array_header_t *hdr;
- hdr = svn_sort__hash (hsh, @c svn_sort_compare_items_as_paths, pool);
- @endverbatim
+ * @code
+ apr_array_header_t *array;
+ array = svn_sort__hash(hsh, svn_sort_compare_items_as_paths, pool);
+ @endcode
*/
int
svn_sort_compare_items_as_paths(const svn_sort__item_t *a,
Modified: subversion/branches/performance/subversion/include/svn_types.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_types.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_types.h (original)
+++ subversion/branches/performance/subversion/include/svn_types.h Mon Sep 6 20:02:15 2010
@@ -131,6 +131,16 @@ svn__apr_hash_index_klen(const apr_hash_
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 this one, so we include it. */
+/* ### This fix should go into APR. */
+#ifndef WIN32
+#define SVN__APR_STATUS_IS_ENOTDIR(s) APR_STATUS_IS_ENOTDIR(s)
+#else
+#define SVN__APR_STATUS_IS_ENOTDIR(s) (APR_STATUS_IS_ENOTDIR(s) \
+ || ((s) == APR_OS_START_SYSERR + ERROR_INVALID_NAME))
+#endif
+
/** @} */
/** The various types of nodes in the Subversion filesystem. */
@@ -601,6 +611,10 @@ typedef struct svn_commit_info_t
/** error message from post-commit hook, or NULL. */
const char *post_commit_err;
+ /** repository root, may be @c NULL if unknown.
+ @since New in 1.7. */
+ const char *repos_root;
+
} svn_commit_info_t;
Modified: subversion/branches/performance/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/include/svn_wc.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/include/svn_wc.h (original)
+++ subversion/branches/performance/subversion/include/svn_wc.h Mon Sep 6 20:02:15 2010
@@ -1086,6 +1086,11 @@ typedef enum svn_wc_notify_action_t
* @since New in 1.7. */
svn_wc_notify_patch_hunk_already_applied,
+ /** The server has instructed the client to follow a URL
+ * redirection.
+ * @since New in 1.7. */
+ svn_wc_notify_url_redirect
+
} svn_wc_notify_action_t;
@@ -1249,7 +1254,7 @@ typedef struct svn_wc_notify_t {
* @since New in 1.7 */
svn_revnum_t old_revision;
- /* These fields are used by svn patch to identify the
+ /** These fields are used by svn patch to identify the
* hunk the notification is for. They are line-based
* offsets and lengths parsed from the unidiff hunk header.
* @since New in 1.7. */
@@ -1258,11 +1263,11 @@ typedef struct svn_wc_notify_t {
svn_linenum_t hunk_modified_start;
svn_linenum_t hunk_modified_length;
- /* The line at which a hunk was matched (and applied).
+ /** The line at which a hunk was matched (and applied).
* @since New in 1.7. */
svn_linenum_t hunk_matched_line;
- /* The fuzz factor the hunk was applied with.
+ /** The fuzz factor the hunk was applied with.
* @since New in 1.7 */
int hunk_fuzz;
@@ -1419,11 +1424,11 @@ typedef svn_error_t *(*svn_wc_get_file_t
*/
typedef enum svn_wc_conflict_action_t
{
- svn_wc_conflict_action_edit, /* attempting to change text or props */
- svn_wc_conflict_action_add, /* attempting to add object */
- svn_wc_conflict_action_delete, /* attempting to delete object */
- svn_wc_conflict_action_replace /* attempting to replace object,
- @since New in 1.7 */
+ svn_wc_conflict_action_edit, /**< attempting to change text or props */
+ svn_wc_conflict_action_add, /**< attempting to add object */
+ svn_wc_conflict_action_delete, /**< attempting to delete object */
+ svn_wc_conflict_action_replace /**< attempting to replace object,
+ @since New in 1.7 */
} svn_wc_conflict_action_t;
@@ -2065,20 +2070,20 @@ svn_wc__conflict_description2_dup(
*/
typedef enum svn_wc_conflict_choice_t
{
- /* Don't resolve the conflict now. Let libsvn_wc mark the path
+ /** Don't resolve the conflict now. Let libsvn_wc mark the path
'conflicted', so user can run 'svn resolved' later. */
svn_wc_conflict_choose_postpone,
- /* If there were files to choose from, select one as a way of
+ /** If there were files to choose from, select one as a way of
resolving the conflict here and now. libsvn_wc will then do the
work of "installing" the chosen file.
*/
- svn_wc_conflict_choose_base, /* original version */
- svn_wc_conflict_choose_theirs_full, /* incoming version */
- 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_base, /**< original version */
+ svn_wc_conflict_choose_theirs_full, /**< incoming version */
+ 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_choice_t;
@@ -2709,13 +2714,20 @@ svn_wc_text_modified_p(svn_boolean_t *mo
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool);
-
/** Set @a *modified_p to non-zero if @a path's properties are modified
* with regard to the base revision, else set @a modified_p to zero.
* @a adm_access must be an access baton for @a path.
*
- * If you want to use this with a post-wc-ng working copy, just call
- * svn_wc_get_prop_diffs2() and examine the output.
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc_props_modified_p2(svn_boolean_t *modified_p,
+ svn_wc_context_t* wc_ctx,
+ const char *local_abspath,
+ apr_pool_t *scratch_pool);
+
+/** Similar to svn_wc_props_modified_p2(), but with a relative path and
+ * adm_access baton.
*
* @deprecated Provided for backward compatibility with the 1.6 API.
*/
@@ -3496,7 +3508,7 @@ enum svn_wc_status_kind
/** text or props have been modified */
svn_wc_status_modified,
- /** local mods received repos mods */
+ /** local mods received repos mods (### unused) */
svn_wc_status_merged,
/** local mods received conflicting repos mods */
@@ -4215,12 +4227,15 @@ svn_wc_status_set_repos_locks(void *set_
* is used for accessing the working copy and must contain a write lock for
* the parent directory of @a dst_abspath,
*
+ * If metadata_only is TRUE then this a database only operation and
+ * the working directories and files are not copied.
+ *
* @a src_abspath must be a file or directory under version control;
* the parent of @a dst_abspath must be a directory under version control
* in the same working copy; @a dst_abspath will be the name of the copied
- * item, and it must not exist already. Note that when @a src points to a
- * versioned file, the working file doesn't necessarily exist in which case
- * its text-base is used instead.
+ * item, and it must not exist already if metadata_only is FALSE. Note that
+ * when @a src points to a versioned file, the working file doesn't
+ * necessarily exist in which case its text-base is used instead.
*
* If @a cancel_func is non-NULL, call it with @a cancel_baton at
* various points during the operation. If it returns an error
@@ -4235,7 +4250,7 @@ svn_wc_status_set_repos_locks(void *set_
* @par Important:
* This is a variant of svn_wc_add4(). No changes will happen
* to the repository until a commit occurs. This scheduling can be
- * removed with svn_client_revert2().
+ * removed with svn_client_revert4().
*
* @since New in 1.7.
*/
@@ -4243,6 +4258,7 @@ svn_error_t *
svn_wc_copy3(svn_wc_context_t *wc_ctx,
const char *src_abspath,
const char *dst_abspath,
+ svn_boolean_t metadata_only,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func2_t notify_func,
@@ -4393,7 +4409,7 @@ svn_wc_delete(const char *path,
* and anything below it will be scheduled for addition inside the parent
* 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@rev path' @a copyfrom_url and
+ * by code like that of "svn cp URL@rev path" @a copyfrom_url and
* @a copyfrom_rev MUST BE the the url and revision of @a local_abspath
* in the separate working copy.
*
@@ -5947,6 +5963,10 @@ svn_wc_canonicalize_svn_prop(const svn_s
* appear as a diff against their copy source, or whether such paths will
* appear as if they were newly added in their entirety.
*
+ * 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.
+ *
* If @a use_text_base is TRUE, then compare the repository against
* the working copy's text-base files, rather than the working files.
*
@@ -5975,6 +5995,7 @@ svn_wc_get_diff_editor6(const svn_delta_
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
svn_boolean_t show_copies_as_adds,
+ svn_boolean_t use_git_diff_format,
svn_boolean_t use_text_base,
svn_boolean_t reverse_order,
const apr_array_header_t *changelists,
@@ -5986,7 +6007,7 @@ svn_wc_get_diff_editor6(const svn_delta_
/**
* Similar to svn_wc_get_diff_editor6(), but with an
* #svn_wc_diff_callbacks3_t instead of #svn_wc_diff_callbacks4_t,
- * and @a show_copies_as_adds set to @c FALSE.
+ * @a show_copies_as_adds, and @a use_git_diff_format set to @c FALSE.
*
* @since New in 1.6.
*
@@ -6128,6 +6149,10 @@ svn_wc_get_diff_editor(svn_wc_adm_access
* appear as a diff against their copy source, or whether such paths will
* appear as if they were newly added in their entirety.
*
+ * 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 changelists is an array of <tt>const char *</tt> changelist
* names, used as a restrictive filter on items whose differences are
* reported; that is, don't generate diffs about any item unless
@@ -6148,6 +6173,7 @@ svn_wc_diff6(svn_wc_context_t *wc_ctx,
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
svn_boolean_t show_copies_as_adds,
+ svn_boolean_t use_git_diff_format,
const apr_array_header_t *changelists,
svn_cancel_func_t cancel_func,
void *cancel_baton,
@@ -6155,8 +6181,9 @@ svn_wc_diff6(svn_wc_context_t *wc_ctx,
/**
* Similar to svn_wc_diff6(), but with a #svn_wc_diff_callbacks3_t argument
- * instead of #svn_wc_diff_callbacks4_t, and @a show_copies_as_adds set to
- * @c FALSE. It also doesn't allow specifying a cancel function.
+ * instead of #svn_wc_diff_callbacks4_t, @a show_copies_as_adds,
+ * and @a use_git_diff_format set to * @c FALSE.
+ * It also doesn't allow specifying a cancel function.
*
* @since New in 1.6.
*
@@ -6948,6 +6975,23 @@ svn_wc_revert(const char *path,
void *notify_baton,
apr_pool_t *pool);
+/**
+ * Restores a missing node, @a local_abspath using the @a wc_ctx. Records
+ * the new last modified time of the file for status processing.
+ *
+ * If @a use_commit_times is TRUE, then set restored files' timestamps
+ * to their last-commit-times.
+ *
+ * ### Before Single-DB this function can only restore missing files.
+ *
+ * @since New in 1.7.
+ */
+svn_error_t *
+svn_wc_restore(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ svn_boolean_t use_commit_times,
+ apr_pool_t *scratch_pool);
+
/* Tmp files */
@@ -7013,15 +7057,17 @@ svn_wc_create_tmp_file(apr_file_t **fp,
* @c SVN_WC_TRANSLATE_TO_NF is specified, against @a versioned_file itself
* if @c SVN_WC_TRANSLATE_FROM_NF is specified.
*
- * Output files are created in the temp file area belonging to
- * @a versioned_file. By default they will be deleted at pool cleanup.
- *
- * If @c SVN_WC_TRANSLATE_NO_OUTPUT_CLEANUP is specified, the default
- * pool cleanup handler to remove @a *xlated_path is not registered.
+ * If a new output file is created, it is created in the temp file area
+ * belonging to @a versioned_file. By default it will be deleted at pool
+ * cleanup. If @c SVN_WC_TRANSLATE_NO_OUTPUT_CLEANUP is specified, the
+ * default pool cleanup handler to remove @a *xlated_path is not registered.
+ * If the input file is returned as the output, its lifetime is not
+ * specified.
*
* If an error is returned, the effect on @a *xlated_path is undefined.
*
* @since New in 1.4
+ * @deprecated Provided for compatibility with the 1.6 API
*/
SVN_DEPRECATED
svn_error_t *
@@ -7062,6 +7108,7 @@ svn_wc_translated_file(const char **xlat
* svn_wc_translated_file().
*
* @since New in 1.5.
+ * @deprecated Provided for compatibility with the 1.6 API.
*/
SVN_DEPRECATED
svn_error_t *
Modified: subversion/branches/performance/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/add.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/add.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/add.c Mon Sep 6 20:02:15 2010
@@ -657,6 +657,8 @@ static svn_error_t *
mkdir_urls(const apr_array_header_t *urls,
svn_boolean_t make_parents,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -689,9 +691,9 @@ mkdir_urls(const apr_array_header_t *url
const char *first_url = APR_ARRAY_IDX(urls, 0, const char *);
apr_pool_t *iterpool = svn_pool_create(pool);
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, first_url,
- NULL, NULL, FALSE,
- TRUE, ctx, pool));
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL,
+ first_url, NULL, NULL,
+ FALSE, TRUE, ctx, pool));
for (i = 0; i < urls->nelts; i++)
{
@@ -791,8 +793,9 @@ mkdir_urls(const apr_array_header_t *url
/* Open an RA session for the URL. Note that we don't have a local
directory, nor a place to put temp files. */
if (!ra_session)
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, common, NULL,
- NULL, FALSE, TRUE, ctx, pool));
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, common,
+ NULL, NULL, FALSE, TRUE,
+ ctx, pool));
/* URI-decode each target. */
for (i = 0; i < targets->nelts; i++)
@@ -805,8 +808,8 @@ mkdir_urls(const apr_array_header_t *url
/* Fetch RA commit editor */
SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
commit_revprops,
- ctx->commit_callback2,
- ctx->commit_baton,
+ commit_callback,
+ commit_baton,
NULL, TRUE, /* No lock tokens */
pool));
@@ -867,6 +870,8 @@ svn_error_t *
svn_client_mkdir4(const apr_array_header_t *paths,
svn_boolean_t make_parents,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -875,7 +880,8 @@ svn_client_mkdir4(const apr_array_header
if (svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *)))
{
- SVN_ERR(mkdir_urls(paths, make_parents, revprop_table, ctx, pool));
+ SVN_ERR(mkdir_urls(paths, make_parents, revprop_table, commit_callback,
+ commit_baton, ctx, pool));
}
else
{
Modified: subversion/branches/performance/subversion/libsvn_client/changelist.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/changelist.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/changelist.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/changelist.c Mon Sep 6 20:02:15 2010
@@ -72,7 +72,11 @@ set_node_changelist(const char *local_ab
/* We only care about files right now. */
if (kind != svn_node_file)
{
- if (b->ctx->notify_func2)
+ /* Notify, unless it's a directory being removed from a changelist.
+ (That is in order to not spam during 'svn cl --remove -R'.)
+ */
+ if (b->ctx->notify_func2
+ && ! (b->changelist == NULL && kind == svn_node_dir))
b->ctx->notify_func2(b->ctx->notify_baton2,
svn_wc_create_notify(local_abspath,
svn_wc_notify_skip,
Modified: subversion/branches/performance/subversion/libsvn_client/client.h
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/client.h?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/client.h (original)
+++ subversion/branches/performance/subversion/libsvn_client/client.h Mon Sep 6 20:02:15 2010
@@ -349,7 +349,9 @@ svn_client__default_walker_error_handler
#define SVN_CLIENT__HAS_LOG_MSG_FUNC(ctx) \
((ctx)->log_msg_func3 || (ctx)->log_msg_func2 || (ctx)->log_msg_func)
-/* Open an RA session, returning it in *RA_SESSION.
+/* Open an RA session, returning it in *RA_SESSION or a corrected URL
+ in *CORRECTED_URL. (This function mirrors svn_ra_open4(), which
+ see, regarding the interpretation and handling of these two parameters.)
The root of the session is specified by BASE_URL and BASE_DIR.
@@ -375,6 +377,7 @@ svn_client__default_walker_error_handler
avoid confusion with the public API svn_client_open_ra_session(). */
svn_error_t *
svn_client__open_ra_session_internal(svn_ra_session_t **ra_session,
+ const char **corrected_url,
const char *base_url,
const char *base_dir_abspath,
const apr_array_header_t *commit_items,
Modified: subversion/branches/performance/subversion/libsvn_client/cmdline.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/cmdline.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/cmdline.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/cmdline.c Mon Sep 6 20:02:15 2010
@@ -121,10 +121,18 @@ check_root_url_of_target(const char **ro
/* It is OK if the given target does not exist, it just means
* we will not be able to determine the root url from this particular
* argument.
+ *
+ * If the target itself is a URL to a repository that does not exist,
+ * that's fine, too. The callers will deal with this argument in an
+ * appropriate manter if it does not make any sense.
+ *
+ * Also tolerate locally added targets ("bad revision" error).
*/
if ((err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
|| (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
- || (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY))
+ || (err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY)
+ || (err->apr_err == SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED)
+ || (err->apr_err == SVN_ERR_CLIENT_BAD_REVISION))
{
svn_error_clear(err);
return SVN_NO_ERROR;
Modified: subversion/branches/performance/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/commit.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/commit.c Mon Sep 6 20:02:15 2010
@@ -637,7 +637,7 @@ get_ra_editor(svn_ra_session_t **ra_sess
apr_hash_t *commit_revprops;
/* Open an RA session to URL. */
- SVN_ERR(svn_client__open_ra_session_internal(ra_session, base_url,
+ SVN_ERR(svn_client__open_ra_session_internal(ra_session, NULL, base_url,
base_dir_abspath, commit_items,
is_commit, !is_commit,
ctx, pool));
@@ -676,6 +676,8 @@ svn_client_import4(const char *path,
svn_boolean_t no_ignore,
svn_boolean_t ignore_unknown_node_types,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -694,6 +696,11 @@ svn_client_import4(const char *path,
const char *dir;
apr_pool_t *subpool;
+ if (svn_path_is_url(path))
+ return svn_error_return(svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
+ _("'%s' is not a local path"),
+ path));
+
SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
base_dir_abspath = local_abspath;
@@ -760,8 +767,7 @@ svn_client_import4(const char *path,
while ((err = get_ra_editor(&ra_session,
&editor, &edit_baton, ctx, url, base_dir_abspath,
log_msg, NULL, revprop_table, FALSE, NULL, TRUE,
- ctx->commit_callback2, ctx->commit_baton,
- subpool)));
+ commit_callback, commit_baton, subpool)));
/* Reverse the order of the components we added to our NEW_ENTRIES array. */
if (new_entries->nelts)
@@ -923,6 +929,7 @@ post_process_commit_item(svn_wc_committe
svn_boolean_t loop_recurse = FALSE;
svn_boolean_t remove_lock;
+#ifndef SVN_WC__SINGLE_DB
/* Is it a missing, deleted directory?
### Temporary: once we centralise this sort of node is just a
@@ -939,6 +946,7 @@ post_process_commit_item(svn_wc_committe
return svn_wc__temp_mark_missing_not_present(item->path,
wc_ctx, scratch_pool);
}
+#endif
if ((item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD)
&& (item->kind == svn_node_dir)
@@ -1031,6 +1039,8 @@ svn_client_commit5(const apr_array_heade
svn_boolean_t keep_changelists,
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)
{
@@ -1192,8 +1202,8 @@ svn_client_commit5(const apr_array_heade
pool)))
goto cleanup;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
+ cb.original_callback = commit_callback;
+ cb.original_baton = commit_baton;
cb.info = &commit_info;
cb.pool = pool;
Modified: subversion/branches/performance/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/commit_util.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/commit_util.c Mon Sep 6 20:02:15 2010
@@ -398,7 +398,6 @@ harvest_committables(apr_hash_t *committ
svn_boolean_t is_added;
const char *node_copyfrom_relpath;
svn_revnum_t node_copyfrom_rev;
- svn_boolean_t keep_local;
svn_wc_context_t *wc_ctx = ctx->wc_ctx;
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
@@ -482,12 +481,9 @@ harvest_committables(apr_hash_t *committ
}
}
- SVN_ERR(svn_wc__temp_get_keep_local(&keep_local, ctx->wc_ctx,
- local_abspath, scratch_pool));
- if (! keep_local)
- SVN_ERR(bail_on_tree_conflicted_children(ctx->wc_ctx, local_abspath,
- db_kind, depth, changelists,
- scratch_pool));
+ SVN_ERR(bail_on_tree_conflicted_children(ctx->wc_ctx, local_abspath,
+ db_kind, depth, changelists,
+ scratch_pool));
/* Our own URL wins if not in COPY_MODE. In COPY_MODE the
telescoping URLs are used. */
@@ -863,6 +859,7 @@ harvest_committables(apr_hash_t *committ
and depth says not to go there. */
continue;
}
+#ifndef SVN_WC__SINGLE_DB
else
{
svn_boolean_t obstructed;
@@ -901,6 +898,7 @@ harvest_committables(apr_hash_t *committ
}
}
}
+#endif
}
{
Modified: subversion/branches/performance/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/copy.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/copy.c Mon Sep 6 20:02:15 2010
@@ -277,6 +277,7 @@ do_wc_to_wc_copies_with_write_lock(void
dst_abspath = svn_dirent_join(pair->dst_parent_abspath, pair->base_name,
iterpool);
err = svn_wc_copy3(b->ctx->wc_ctx, pair->src_abspath_or_url, dst_abspath,
+ FALSE /* metadata_only */,
b->ctx->cancel_func, b->ctx->cancel_baton,
b->ctx->notify_func2, b->ctx->notify_baton2, iterpool);
if (err)
@@ -336,7 +337,7 @@ do_wc_to_wc_moves_with_locks2(void *bato
scratch_pool);
SVN_ERR(svn_wc_copy3(b->ctx->wc_ctx, b->pair->src_abspath_or_url,
- dst_abspath,
+ dst_abspath, FALSE /* metadata_only */,
b->ctx->cancel_func, b->ctx->cancel_baton,
b->ctx->notify_func2, b->ctx->notify_baton2,
scratch_pool));
@@ -444,12 +445,10 @@ do_wc_to_wc_moves(const apr_array_header
static svn_error_t *
-wc_to_wc_copy(const apr_array_header_t *copy_pairs,
- const char *dst_path,
- svn_boolean_t is_move,
- svn_boolean_t make_parents,
- svn_client_ctx_t *ctx,
- apr_pool_t *pool)
+verify_wc_srcs_and_dsts(const apr_array_header_t *copy_pairs,
+ svn_boolean_t make_parents,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *pool)
{
int i;
apr_pool_t *iterpool = svn_pool_create(pool);
@@ -506,11 +505,7 @@ wc_to_wc_copy(const apr_array_header_t *
svn_pool_destroy(iterpool);
- /* Copy or move all targets. */
- if (is_move)
- return do_wc_to_wc_moves(copy_pairs, dst_path, ctx, pool);
- else
- return do_wc_to_wc_copies(copy_pairs, ctx, pool);
+ return SVN_NO_ERROR;
}
@@ -723,6 +718,8 @@ static svn_error_t *
repos_to_repos_copy(const apr_array_header_t *copy_pairs,
svn_boolean_t make_parents,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
svn_boolean_t is_move,
apr_pool_t *pool)
@@ -749,7 +746,7 @@ repos_to_repos_copy(const apr_array_head
be verifying that every one of our copy source and destination
URLs is or is beneath this sucker's repository root URL as a form
of a cheap(ish) sanity check. */
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session,
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL,
first_pair->src_abspath_or_url,
NULL, NULL, FALSE, TRUE,
ctx, pool));
@@ -1115,8 +1112,8 @@ repos_to_repos_copy(const apr_array_head
/* Fetch RA commit editor. */
SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
commit_revprops,
- ctx->commit_callback2,
- ctx->commit_baton,
+ commit_callback,
+ commit_baton,
NULL, TRUE, /* No lock tokens */
pool));
@@ -1151,6 +1148,8 @@ static svn_error_t *
wc_to_repos_copy(const apr_array_header_t *copy_pairs,
svn_boolean_t make_parents,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -1211,7 +1210,7 @@ wc_to_repos_copy(const apr_array_header_
}
SVN_ERR(svn_dirent_get_absolute(&top_src_abspath, top_src_path, pool));
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, top_dst_url,
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, top_dst_url,
top_src_abspath, NULL, TRUE,
TRUE, ctx, pool));
@@ -1382,15 +1381,15 @@ wc_to_repos_copy(const apr_array_header_
commit_items, pool));
/* Open an RA session to DST_URL. */
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, top_dst_url,
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, top_dst_url,
NULL, commit_items,
FALSE, FALSE, ctx, pool));
/* Fetch RA commit editor. */
SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
commit_revprops,
- ctx->commit_callback2,
- ctx->commit_baton, NULL,
+ commit_callback,
+ commit_baton, NULL,
TRUE, /* No lock tokens */
pool));
@@ -1769,8 +1768,9 @@ repos_to_wc_copy(const apr_array_header_
/* Open a repository session to the longest common src ancestor. We do not
(yet) have a working copy, so we don't have a corresponding path and
tempfiles cannot go into the admin area. */
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, top_src_url, NULL,
- NULL, FALSE, TRUE, ctx, pool));
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, top_src_url,
+ NULL, NULL, FALSE, TRUE,
+ ctx, pool));
/* Pass null for the path, to ensure error if trying to get a
revision based on the working copy. */
@@ -1870,6 +1870,8 @@ try_copy(const apr_array_header_t *sourc
svn_boolean_t make_parents,
svn_boolean_t ignore_externals,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -2147,14 +2149,20 @@ try_copy(const apr_array_header_t *sourc
/* Now, call the right handler for the operation. */
if ((! srcs_are_urls) && (! dst_is_url))
{
- return svn_error_return(
- wc_to_wc_copy(copy_pairs, dst_path_in, is_move, make_parents, ctx,
- pool));
+ SVN_ERR(verify_wc_srcs_and_dsts(copy_pairs, make_parents, ctx, pool));
+
+ /* Copy or move all targets. */
+ if (is_move)
+ return svn_error_return(do_wc_to_wc_moves(copy_pairs, dst_path_in, ctx,
+ pool));
+ else
+ return svn_error_return(do_wc_to_wc_copies(copy_pairs, ctx, pool));
}
else if ((! srcs_are_urls) && (dst_is_url))
{
return svn_error_return(
- wc_to_repos_copy(copy_pairs, make_parents, revprop_table, ctx, pool));
+ wc_to_repos_copy(copy_pairs, make_parents, revprop_table,
+ commit_callback, commit_baton, ctx, pool));
}
else if ((srcs_are_urls) && (! dst_is_url))
{
@@ -2165,8 +2173,9 @@ try_copy(const apr_array_header_t *sourc
else
{
return svn_error_return(
- repos_to_repos_copy(copy_pairs, make_parents,
- revprop_table, ctx, is_move, pool));
+ repos_to_repos_copy(copy_pairs, make_parents, revprop_table,
+ commit_callback, commit_baton, ctx, is_move,
+ pool));
}
}
@@ -2180,6 +2189,8 @@ svn_client_copy6(const apr_array_header_
svn_boolean_t make_parents,
svn_boolean_t ignore_externals,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -2196,6 +2207,7 @@ svn_client_copy6(const apr_array_header_
make_parents,
ignore_externals,
revprop_table,
+ commit_callback, commit_baton,
ctx,
subpool);
@@ -2228,6 +2240,7 @@ svn_client_copy6(const apr_array_header_
make_parents,
ignore_externals,
revprop_table,
+ commit_callback, commit_baton,
ctx,
subpool);
}
@@ -2244,6 +2257,8 @@ svn_client_move6(const apr_array_header_
svn_boolean_t move_as_child,
svn_boolean_t make_parents,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -2278,6 +2293,7 @@ svn_client_move6(const apr_array_header_
make_parents,
FALSE,
revprop_table,
+ commit_callback, commit_baton,
ctx,
subpool);
@@ -2307,6 +2323,7 @@ svn_client_move6(const apr_array_header_
make_parents,
FALSE,
revprop_table,
+ commit_callback, commit_baton,
ctx,
subpool);
}
Modified: subversion/branches/performance/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/delete.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/delete.c Mon Sep 6 20:02:15 2010
@@ -115,7 +115,7 @@ svn_client__can_delete(const char *path,
be deleted. */
return svn_error_return(svn_client_status5(NULL, ctx, path, &revision,
svn_depth_infinity, FALSE,
- FALSE, FALSE, FALSE,
+ FALSE, FALSE, FALSE, FALSE,
NULL,
find_undeletables, NULL,
scratch_pool));
@@ -138,6 +138,8 @@ path_driver_cb_func(void **dir_baton,
static svn_error_t *
delete_urls(const apr_array_header_t *paths,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
@@ -214,9 +216,9 @@ delete_urls(const apr_array_header_t *pa
session. */
if (! ra_session)
{
- SVN_ERR(svn_client__open_ra_session_internal(&ra_session, item_url,
- NULL, NULL, FALSE,
- TRUE, ctx, pool));
+ SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL,
+ item_url, NULL, NULL,
+ FALSE, TRUE, ctx, pool));
}
else
{
@@ -237,8 +239,8 @@ delete_urls(const apr_array_header_t *pa
/* Fetch RA commit editor */
SVN_ERR(svn_ra_get_commit_editor3(ra_session, &editor, &edit_baton,
commit_revprops,
- ctx->commit_callback2,
- ctx->commit_baton,
+ commit_callback,
+ commit_baton,
NULL, TRUE, /* No lock tokens */
pool));
@@ -315,20 +317,37 @@ svn_client_delete4(const apr_array_heade
svn_boolean_t force,
svn_boolean_t keep_local,
const apr_hash_t *revprop_table,
+ svn_commit_callback2_t commit_callback,
+ void *commit_baton,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
+ svn_boolean_t is_url;
+ int i;
+
if (! paths->nelts)
return SVN_NO_ERROR;
- if (svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *)))
+ /* Check that all targets are of the same type. */
+ is_url = svn_path_is_url(APR_ARRAY_IDX(paths, 0, const char *));
+ for (i = 1; i < paths->nelts; i++)
+ {
+ const char *path = APR_ARRAY_IDX(paths, i, const char *);
+ if (is_url != svn_path_is_url(path))
+ return svn_error_return(
+ svn_error_create(SVN_ERR_ILLEGAL_TARGET, NULL,
+ _("Cannot mix repository and working copy "
+ "targets")));
+ }
+
+ if (is_url)
{
- SVN_ERR(delete_urls(paths, revprop_table, ctx, pool));
+ SVN_ERR(delete_urls(paths, revprop_table, commit_callback, commit_baton,
+ ctx, pool));
}
else
{
apr_pool_t *subpool = svn_pool_create(pool);
- int i;
for (i = 0; i < paths->nelts; i++)
{
Modified: subversion/branches/performance/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/performance/subversion/libsvn_client/deprecated.c?rev=993141&r1=993140&r2=993141&view=diff
==============================================================================
--- subversion/branches/performance/subversion/libsvn_client/deprecated.c (original)
+++ subversion/branches/performance/subversion/libsvn_client/deprecated.c Mon Sep 6 20:02:15 2010
@@ -53,13 +53,8 @@
/* Baton for capture_commit_info() */
struct capture_baton_t {
- svn_commit_callback2_t original_callback;
- void *original_baton;
-
svn_commit_info_t **info;
apr_pool_t *pool;
-
- svn_boolean_t saw_commit;
};
@@ -74,11 +69,6 @@ capture_commit_info(const svn_commit_inf
*(cb->info) = svn_commit_info_dup(commit_info, cb->pool);
- if (cb->original_callback)
- SVN_ERR((cb->original_callback)(commit_info, cb->original_baton, pool));
-
- cb->saw_commit = TRUE;
-
return SVN_NO_ERROR;
}
@@ -124,20 +114,13 @@ svn_client_mkdir3(svn_commit_info_t **co
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
- return svn_client_mkdir4(paths, make_parents, revprop_table, &shadow_ctx,
- pool);
+ return svn_client_mkdir4(paths, make_parents, revprop_table,
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -398,21 +381,14 @@ svn_client_import3(svn_commit_info_t **c
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
return svn_client_import4(path, url, depth, no_ignore,
ignore_unknown_node_types, revprop_table,
- &shadow_ctx, pool);
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -460,23 +436,17 @@ svn_client_commit4(svn_commit_info_t **c
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
+ *commit_info_p = NULL;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
- cb.saw_commit = FALSE;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
SVN_ERR(svn_client_commit5(targets, depth, keep_locks, keep_changelists,
- changelists, revprop_table, &shadow_ctx, pool));
+ changelists, revprop_table,
+ capture_commit_info, &cb, ctx, pool));
- if (!cb.saw_commit)
+ if (! *commit_info_p)
*commit_info_p = svn_create_commit_info(pool);
return SVN_NO_ERROR;
@@ -539,20 +509,14 @@ svn_client_copy5(svn_commit_info_t **com
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
return svn_client_copy6(sources, dst_path, copy_as_child, make_parents,
- ignore_externals, revprop_table, &shadow_ctx, pool);
+ ignore_externals, revprop_table,
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -651,20 +615,14 @@ svn_client_move5(svn_commit_info_t **com
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
return svn_client_move6(src_paths, dst_path, force, move_as_child,
- make_parents, revprop_table, &shadow_ctx, pool);
+ make_parents, revprop_table,
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -768,20 +726,13 @@ svn_client_delete3(svn_commit_info_t **c
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
return svn_client_delete4(paths, force, keep_local, revprop_table,
- &shadow_ctx, pool);
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -1487,21 +1438,14 @@ svn_client_propset3(svn_commit_info_t **
svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
- svn_client_ctx_t shadow_ctx;
struct capture_baton_t cb;
cb.info = commit_info_p;
cb.pool = pool;
- cb.original_callback = ctx->commit_callback2;
- cb.original_baton = ctx->commit_baton;
-
- shadow_ctx = *ctx;
- shadow_ctx.commit_callback2 = capture_commit_info;
- shadow_ctx.commit_baton = &cb;
return svn_client_propset4(propname, propval, target, depth, skip_checks,
base_revision_for_url, changelists, revprop_table,
- &shadow_ctx, pool);
+ capture_commit_info, &cb, ctx, pool);
}
svn_error_t *
@@ -1698,8 +1642,8 @@ svn_client_status4(svn_revnum_t *result_
status_baton };
return svn_client_status5(result_rev, ctx, path, revision, depth, get_all,
- update, no_ignore, ignore_externals, changelists,
- status4_wrapper_func, &swb, pool);
+ update, no_ignore, ignore_externals, TRUE,
+ changelists, status4_wrapper_func, &swb, pool);
}
struct status3_wrapper_baton