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;