On the 1.6.x-issue3469 branch, fix issue #3469 "tree conflict inside of
directory external causes assertion to fail".
In addition to fixing the assertion failure, make 'svn revert' and
'svn resolved' actually work for tree conflicted externals.
* subversion/libsvn_wc/adm_ops.c
(revert_internal): Do not error out if directories cannot be locked as
part of the current access baton set. Just ignore such directories.
The attempt to revert tree-conflicted externals led to an "Unable to
lock <external>" error which we never saw before because the assertion
failure described in issue #3469 prevented us from entering this situation.
* subversion/libsvn_wc/entries.c
(svn_wc__walk_entries_and_tc): Don't give up right away if a directory
cannot be locked. Try retrieving a lock for the parent directory instead,
and only give up if that fails, too. Prevents 'svn resolved -R' from
silently skipping tree-conflicted externals.
* subversion/libsvn_wc/tree_conflicts.c
(svn_wc__del_tree_conflict): If the tree conflict victim's parent is not
already locked as part of the current access baton set, try to
independently lock the parent (just like svn_wc__get_tree_conflict()
already does). This makes it possible to revert or resolve tree-conflicted
externals, since the operation needs to be carried out in the external's
parent working copy where the tree conflict is actually recorded, rather
than within the external itself. This part is what fixes the assertion
failure described in issue #3469.
git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/1.6.x-issue3469@945708 13f79535-47bb-0310-9956-ffa450edef68
3 files changed