addremove: correctly handle intermediate symlinks
This fixes problems mentioned in
issue660 comments (unrelated to original
issue) where directory was renamed, and symlink was added instead.
In such situation addremove wasn't able to correctly detect that old files
no longer here, but tried to add symlink (and failed due collision with
old files).
created new head
merging foo1 and foo
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
n 0 -2 bar
m 644 14 foo1
copy: foo -> foo1
M bar
M foo1
% removing foo1 and bar
r 0 -2 bar
r 0 -1 foo1
copy: foo -> foo1
R bar
R foo1
foo
% readding foo1 and bar
adding bar
adding foo1
n 0 -2 bar
m 644 14 foo1
copy: foo -> foo1
M bar
M foo1
foo
% reverting foo1 and bar
warning: working directory has two parents, tag '.' uses the first
saving current version of bar as bar.orig
reverting bar
saving current version of foo1 as foo1.orig
reverting foo1
n 0 -2 bar
m 644 14 foo1
copy: foo -> foo1
M bar
M foo1
foo