$ cat < merge > import sys, os > > try: > import msvcrt > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) > msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) > except ImportError: > pass > > print "merging for", os.path.basename(sys.argv[1]) > EOF $ HGMERGE="python ../merge"; export HGMERGE $ mkdir t $ cd t $ hg init $ echo This is file a1 > a $ hg add a $ hg commit -m "commit #0" -d "1000000 0" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" -d "1000000 0" $ hg update 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo This is file c1 > c $ hg add c $ hg commit -m "commit #2" -d "1000000 0" created new head $ echo This is file b1 > b no merges expected $ hg merge -P 1 changeset: 1:4ee19afe4659 user: test date: Mon Jan 12 13:46:40 1970 +0000 summary: commit #1 $ hg merge 1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg diff --nodates diff -r d9e5953b9dec b --- /dev/null +++ b/b @@ -0,0 +1,1 @@ +This is file b1 $ hg status M b $ cd ..; rm -r t $ mkdir t $ cd t $ hg init $ echo This is file a1 > a $ hg add a $ hg commit -m "commit #0" -d "1000000 0" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" -d "1000000 0" $ hg update 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo This is file c1 > c $ hg add c $ hg commit -m "commit #2" -d "1000000 0" created new head $ echo This is file b2 > b merge should fail $ hg merge 1 abort: untracked file in working directory differs from file in requested revision: 'b' merge of b expected $ hg merge -f 1 merging for b merging b 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg diff --nodates diff -r d9e5953b9dec b --- /dev/null +++ b/b @@ -0,0 +1,1 @@ +This is file b2 $ hg status M b $ cd ..; rm -r t $ mkdir t $ cd t $ hg init $ echo This is file a1 > a $ hg add a $ hg commit -m "commit #0" -d "1000000 0" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" -d "1000000 0" $ echo This is file b22 > b $ hg commit -m "commit #2" -d "1000000 0" $ hg update 1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo This is file c1 > c $ hg add c $ hg commit -m "commit #3" -d "1000000 0" created new head Contents of b should be "this is file b1" $ cat b This is file b1 $ echo This is file b22 > b merge fails $ hg merge 2 abort: outstanding uncommitted changes (use 'hg status' to list changes) $ echo %% merge expected! %% merge expected! $ hg merge -f 2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg diff --nodates diff -r c1dd73cbf59f b --- a/b +++ b/b @@ -1,1 +1,1 @@ -This is file b1 +This is file b22 $ hg status M b $ cd ..; rm -r t $ mkdir t $ cd t $ hg init $ echo This is file a1 > a $ hg add a $ hg commit -m "commit #0" -d "1000000 0" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" -d "1000000 0" $ echo This is file b22 > b $ hg commit -m "commit #2" -d "1000000 0" $ hg update 1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo This is file c1 > c $ hg add c $ hg commit -m "commit #3" -d "1000000 0" created new head $ echo This is file b33 > b merge of b should fail $ hg merge 2 abort: outstanding uncommitted changes (use 'hg status' to list changes) merge of b expected $ hg merge -f 2 merging for b merging b 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg diff --nodates diff -r c1dd73cbf59f b --- a/b +++ b/b @@ -1,1 +1,1 @@ -This is file b1 +This is file b33 $ hg status M b