r1631171 | stefan2 | 2014-10-12 13:12:47 +0000 (Sun, 12 Oct 2014)
In FSFS, fix the reporting of deleted replacements in the changed paths list.
A replacement will change the ID reported for a given path and possibly the
node type as well, e.g. by deleting a file followed by an mkdir with the
same name. When deleting that path again, we need to report the initial
ID and type again. Hence, we must remember the deletion part of replacements
and revert to it when deleting said replacements.
Right now, this is a theoretical problem: Editors won't delete replacements
but it can be triggered through the API. Most API users won't care about
the ID and type of a deleted path either, but they may.
This problem still exists with the other backends.
* subversion/libsvn_fs_fs/transaction.c
(fold_change): Remember the deletions that we replaced and restore them
when the replacements get deleted themselves.
(process_changes_baton_t): We now need this struct to be able to pass
two hashes to process_changes.
(process_changes): Update to use the new baton type.
(svn_fs_fs__txn_changes_fetch): Provide the extra container in the new
baton type.
* subversion/tests/libsvn_fs/fs-test.c
(test_delete_replaced_paths_changed): New test illustrating the problem.
(test_funcs): Register new test.
Found by: julianfoad.