summaryrefslogtreecommitdiff
path: root/subversion/libsvn_client/commit.c
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/libsvn_client/commit.c')
-rw-r--r--subversion/libsvn_client/commit.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/subversion/libsvn_client/commit.c b/subversion/libsvn_client/commit.c
index 3f6bfef2030ad..6b30885582105 100644
--- a/subversion/libsvn_client/commit.c
+++ b/subversion/libsvn_client/commit.c
@@ -240,6 +240,13 @@ post_process_commit_item(svn_wc_committed_queue_t *queue,
remove_lock = (! keep_locks && (item->state_flags
& SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN));
+ /* When the node was deleted (or replaced), we need to always remove the
+ locks, as they're invalidated on the server. We cannot honor the
+ SVN_CLIENT_COMMIT_ITEM_LOCK_TOKEN flag here because it does not tell
+ us whether we have locked children. */
+ if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+ remove_lock = TRUE;
+
return svn_wc_queue_committed3(queue, wc_ctx, item->path,
loop_recurse, item->incoming_prop_changes,
remove_lock, !keep_changelists,