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).
adding bar
adding foo
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
created new head
% start imerge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
U foo
foo
bar
bar
bar
% status -v
merging e6da46716401 and 30d266f502e7
U foo (foo2)
% next
foo
% resolve and unresolve
merging e6da46716401 and 30d266f502e7
R foo (foo2)
all conflicts resolved
merging e6da46716401 and 30d266f502e7
U foo (foo2)
% merge next
merging foo and foo2
all conflicts resolved
% unresolve
% merge foo
merging foo and foo2
all conflicts resolved
% save
% merge auto
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
merging foo2 and foo
warning: conflicts during merge.
merging foo2 failed!
U foo2
foo
<<<<<<< local
foo
=======
bar
>>>>>>> other
% load
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
R foo
all conflicts resolved
foo
changeset: 3:fa9a6defdcaf
tag: tip
parent: 2:e6da46716401
parent: 1:30d266f502e7
user: test
date: Thu Jan 01 00:00:03 1970 +0000
files: foo foo2
description:
merged
% nothing to merge -- tip
abort: there is nothing to merge
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
% nothing to merge
abort: there is nothing to merge - use "hg update" instead
% load unknown parent
abort: merge parent e6da46716401 not in repository