diff --git a/tests/test-pathconflicts-merge.t b/tests/test-pathconflicts-merge.t new file mode 100644 --- /dev/null +++ b/tests/test-pathconflicts-merge.t @@ -0,0 +1,128 @@ + $ hg init repo + $ cd repo + $ echo base > base + $ hg add base + $ hg commit -m "base" + $ hg bookmark -i base + $ mkdir a + $ echo 1 > a/b + $ hg add a/b + $ hg commit -m "file" + $ hg bookmark -i file + $ echo 2 > a/b + $ hg commit -m "file2" + $ hg bookmark -i file2 + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkdir a + $ ln -s c a/b + $ hg add a/b + $ hg commit -m "link" + created new head + $ hg bookmark -i link + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkdir -p a/b/c + $ echo 2 > a/b/c/d + $ hg add a/b/c/d + $ hg commit -m "dir" + created new head + $ hg bookmark -i dir + +Merge - local file conflicts with remote directory + + $ hg up file + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (activating bookmark file) + $ hg bookmark -i + $ hg merge --verbose dir + resolving manifests + a/b: path conflict - a file or link has the same name as a directory + the local file has been renamed to a/b~0ed027b96f31 + resolve manually then use 'hg resolve --mark a/b' + moving a/b to a/b~0ed027b96f31 (glob) + getting a/b/c/d + 1 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg status + M a/b/c/d + A a/b~0ed027b96f31 + R a/b + $ hg resolve --all + a/b: path conflict must be resolved manually + $ hg forget a/b~0ed027b96f31 && rm a/b~0ed027b96f31 + $ hg resolve --mark a/b + (no more unresolved files) + $ hg commit -m "merge file and dir (deleted file)" + +Merge - local symlink conflicts with remote directory + + $ hg up link + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (activating bookmark link) + $ hg bookmark -i + $ hg merge dir + a/b: path conflict - a file or link has the same name as a directory + the local file has been renamed to a/b~2ea68033e3be + resolve manually then use 'hg resolve --mark a/b' + 1 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg status + M a/b/c/d + A a/b~2ea68033e3be + R a/b + $ hg resolve --list + P a/b + $ hg resolve --all + a/b: path conflict must be resolved manually + $ hg mv a/b~2ea68033e3be a/b.old + $ hg resolve --mark a/b + (no more unresolved files) + $ hg resolve --list + R a/b + $ hg commit -m "merge link and dir (renamed link)" + +Merge - local directory conflicts with remote file or link + + $ hg up dir + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (activating bookmark dir) + $ hg bookmark -i + $ hg merge file + a/b: path conflict - a file or link has the same name as a directory + the remote file has been renamed to a/b~0ed027b96f31 + resolve manually then use 'hg resolve --mark a/b' + 1 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg status + A a/b~0ed027b96f31 + $ hg resolve --all + a/b: path conflict must be resolved manually + $ hg mv a/b~0ed027b96f31 a/b/old-b + $ hg resolve --mark a/b + (no more unresolved files) + $ hg commit -m "merge dir and file (move file into dir)" + created new head + $ hg merge file2 + merging a/b/old-b and a/b to a/b/old-b + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ cat a/b/old-b + 2 + $ hg commit -m "merge file2 (copytrace tracked rename)" + $ hg merge link + a/b: path conflict - a file or link has the same name as a directory + the remote file has been renamed to a/b~2ea68033e3be + resolve manually then use 'hg resolve --mark a/b' + 1 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ hg mv a/b~2ea68033e3be a/b.old + $ readlink a/b.old + c + $ hg resolve --mark a/b + (no more unresolved files) + $ hg commit -m "merge link (rename link)"