You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2010/09/02 17:16:07 UTC
svn commit: r991973 -
/subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c
Author: stsp
Date: Thu Sep 2 15:16:07 2010
New Revision: 991973
URL: http://svn.apache.org/viewvc?rev=991973&view=rev
Log:
On the 1.6.x-issue3700 branch:
Prevent svn_wc_process_committed_queue() from trying to lock working copy
paths which are beyond the depth of the commit operation.
Fixes the working copy corruption bug tracked by issue #3700.
* subversion/libsvn_client/commit.c
(post_commit_baton): Remember the commit depth here.
(post_process_commit_item): Do not tell svn_wc_queue_committed2 to recurse
if doing so will exceed the depth of the commit operation.
(svn_client_commit4): Store depth of the commit in the post_commit_baton.
Modified:
subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c
Modified: subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c?rev=991973&r1=991972&r2=991973&view=diff
==============================================================================
--- subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/1.6.x-issue3700/subversion/libsvn_client/commit.c Thu Sep 2 15:16:07 2010
@@ -1140,6 +1140,7 @@ struct post_commit_baton
svn_boolean_t keep_changelists;
svn_boolean_t keep_locks;
apr_hash_t *checksums;
+ svn_depth_t depth;
};
static svn_error_t *
@@ -1183,7 +1184,8 @@ post_process_commit_item(void *baton, vo
if ((item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD)
&& (item->kind == svn_node_dir)
- && (item->copyfrom_url))
+ && (item->copyfrom_url)
+ && btn->depth >= svn_depth_immediates)
loop_recurse = TRUE;
remove_lock = (! btn->keep_locks && (item->state_flags
@@ -1683,6 +1685,7 @@ svn_client_commit4(svn_commit_info_t **c
btn.keep_changelists = keep_changelists;
btn.keep_locks = keep_locks;
btn.checksums = checksums;
+ btn.depth = depth;
/* Make a note that our commit is finished. */
commit_in_progress = FALSE;