Attached patch fixes merge test nr. 30 'merge_dir_replace'. The test
fails on trunk and 1.4.x in the post-commit phase when that commit
contains a replaced directory.
I've expanded the test a bit to catch some extra situations.
While the patch fixes the test, I'm not so sure if it's the best
solution. Can you have a look at it?
Fix for issue 2607: when processing a replaced directory in the post-commit
phase, deleted files in that directory will still be in the entries file.
Don't process them twice!
(process_committed_internal): don't process files scheduled to be deleted
in a replaced directory.
(test_list): merge_dir_replace is passing now
--- subversion/libsvn_wc/adm_ops.c (revision 22935)
+++ subversion/libsvn_wc/adm_ops.c (working copy)
@@ -538,10 +538,28 @@
new_revnum, rev_date, rev_author, NULL, FALSE,
remove_changelist, NULL, subpool));
- ((*log_number)++, this_path, adm_access, NULL,
- new_revnum, rev_date, rev_author, NULL, FALSE,
- remove_changelist, NULL, subpool));
+ /* No log file is executed at this time. In case this folder
+ gets replaced, the entries file might still contain files
+ scheduled for deletion. No need to process those here, they
+ will be when the parent is processed. */
+ if (current_entry->schedule == svn_wc_schedule_delete)
+ svn_wc_entry_t *parent_entry;
+ apr_hash_t *entries;
+ SVN_ERR(svn_wc_entries_read(&entries, adm_access, FALSE,
+ parent_entry = apr_hash_get(entries, SVN_WC_ENTRY_THIS_DIR,
+ if (parent_entry->schedule == svn_wc_schedule_replace)
+ ((*log_number)++, this_path, adm_access, NULL,
+ new_revnum, rev_date, rev_author, NULL, FALSE,
+ remove_changelist, NULL, subpool));
--- subversion/tests/cmdline/merge_tests.py (revision 22935)
+++ subversion/tests/cmdline/merge_tests.py (working copy)
@@ -4012,7 +4012,7 @@
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Mon Jan 8 23:40:21 2007