Mercurial > hg
view tests/test-merge1.t @ 13033:026053f691a4
mq: add an '-e/--exact' option to qpush
This patch adds an '--exact/-e' option to qpush that will try to push the
patches in the correct location in the DAG. Specifying this option does the
following:
* If --move is specified, abort. It makes no sense to move a patch to the front
of the queue and try to apply it to its parent, because its parent is one of
the patches we just moved it in front of!
* If patches are already applied, abort. We don't want patch changesets
scattered throughout the DAG.
* If local changes are present, abort unless --force is used, as usual.
* Find the first patch we're going to push (if we're pushing multiple patches
with a target or --all).
* If that patch doesn't have a parent, abort, obviously.
* If the parent doesn't exist in the repo, abort. Something is wrong.
* Update to the parent, then continue pushing the patches as normal.
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Wed, 17 Nov 2010 21:18:44 -0500 |
parents | 545ec1775021 |
children | d724a69309e0 |
line wrap: on
line source
$ cat <<EOF > 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" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" $ 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" created new head $ echo This is file b1 > b no merges expected $ hg merge -P 1 changeset: 1:b8bb4a988f25 user: test date: Thu Jan 01 00:00:00 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 49035e18a8e6 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" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" $ 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" 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' [255] 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 49035e18a8e6 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" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" $ echo This is file b22 > b $ hg commit -m "commit #2" $ 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" 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) [255] $ 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 85de557015a8 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" $ echo This is file b1 > b $ hg add b $ hg commit -m "commit #1" $ echo This is file b22 > b $ hg commit -m "commit #2" $ 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" 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) [255] 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 85de557015a8 b --- a/b +++ b/b @@ -1,1 +1,1 @@ -This is file b1 +This is file b33 $ hg status M b Test for issue2364 $ hg up -qC . $ hg rm b $ hg ci -md $ hg revert -r -2 b $ hg up -q -- -2