2011-06-15 01:26:35 +04:00
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
|
|
$ echo "purge=" >> $HGRCPATH
|
|
|
|
|
|
|
|
$ shortlog() {
|
2013-11-22 22:14:17 +04:00
|
|
|
> hg log -G --template '{rev}:{node|short} {author} {date|hgdate} - {branch} - {desc|firstline}\n'
|
2011-06-15 01:26:35 +04:00
|
|
|
> }
|
|
|
|
|
|
|
|
Test --bypass with other options
|
|
|
|
|
|
|
|
$ hg init repo-options
|
|
|
|
$ cd repo-options
|
|
|
|
$ echo a > a
|
|
|
|
$ hg ci -Am adda
|
|
|
|
adding a
|
|
|
|
$ echo a >> a
|
|
|
|
$ hg branch foo
|
|
|
|
marked working directory as branch foo
|
2011-12-09 00:32:44 +04:00
|
|
|
(branches are permanent and global, did you want a bookmark?)
|
2011-06-15 01:26:35 +04:00
|
|
|
$ hg ci -Am changea
|
|
|
|
$ hg export . > ../test.diff
|
|
|
|
$ hg up null
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
|
|
|
|
Test importing an existing revision
|
2014-05-10 19:49:36 +04:00
|
|
|
(this also tests that editor is not invoked for '--bypass', if the
|
|
|
|
patch contains the commit message, regardless of '--edit')
|
2011-06-15 01:26:35 +04:00
|
|
|
|
2014-05-10 19:49:36 +04:00
|
|
|
$ HGEDITOR=cat hg import --bypass --exact --edit ../test.diff
|
2011-06-15 01:26:35 +04:00
|
|
|
applying ../test.diff
|
|
|
|
$ shortlog
|
|
|
|
o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|
|
|
|
|
o 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
|
|
|
|
|
|
|
Test failure without --exact
|
|
|
|
|
|
|
|
$ hg import --bypass ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
unable to find 'a' for patching
|
|
|
|
abort: patch failed to apply
|
|
|
|
[255]
|
|
|
|
$ hg st
|
|
|
|
$ shortlog
|
|
|
|
o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|
|
|
|
|
o 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
|
|
|
|
|
|
|
Test --user, --date and --message
|
|
|
|
|
|
|
|
$ hg up 0
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg import --bypass --u test2 -d '1 0' -m patch2 ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
$ cat .hg/last-message.txt
|
|
|
|
patch2 (no-eol)
|
|
|
|
$ shortlog
|
|
|
|
o 2:2e127d1da504 test2 1 0 - default - patch2
|
|
|
|
|
|
|
|
|
| o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|/
|
|
|
|
@ 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing issue2998 (f9f52d71c33b)..
Note that this is a different take on issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
b12d79024900, the fix to issue963, and updates its tests accordingly.
Bottom line: rollback after import was weird before issue963,
understandable since the fix for issue963, and even better now.
2011-10-02 22:34:28 +04:00
|
|
|
$ hg rollback
|
|
|
|
repository tip rolled back to revision 1 (undo import)
|
2011-06-15 01:26:35 +04:00
|
|
|
|
|
|
|
Test --import-branch
|
|
|
|
|
|
|
|
$ hg import --bypass --import-branch ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
$ shortlog
|
|
|
|
o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|
|
|
|
|
@ 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing issue2998 (f9f52d71c33b)..
Note that this is a different take on issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
b12d79024900, the fix to issue963, and updates its tests accordingly.
Bottom line: rollback after import was weird before issue963,
understandable since the fix for issue963, and even better now.
2011-10-02 22:34:28 +04:00
|
|
|
$ hg rollback
|
|
|
|
repository tip rolled back to revision 1 (undo import)
|
2011-06-15 01:26:35 +04:00
|
|
|
|
|
|
|
Test --strip
|
|
|
|
|
|
|
|
$ hg import --bypass --strip 0 - <<EOF
|
|
|
|
> # HG changeset patch
|
|
|
|
> # User test
|
|
|
|
> # Date 0 0
|
|
|
|
> # Branch foo
|
|
|
|
> # Node ID 4e322f7ce8e3e4203950eac9ece27bf7e45ffa6c
|
|
|
|
> # Parent 07f4944404050f47db2e5c5071e0e84e7a27bba9
|
|
|
|
> changea
|
|
|
|
>
|
|
|
|
> diff -r 07f494440405 -r 4e322f7ce8e3 a
|
|
|
|
> --- a Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
> +++ a Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
> @@ -1,1 +1,2 @@
|
|
|
|
> a
|
|
|
|
> +a
|
|
|
|
> EOF
|
|
|
|
applying patch from stdin
|
import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing issue2998 (f9f52d71c33b)..
Note that this is a different take on issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
b12d79024900, the fix to issue963, and updates its tests accordingly.
Bottom line: rollback after import was weird before issue963,
understandable since the fix for issue963, and even better now.
2011-10-02 22:34:28 +04:00
|
|
|
$ hg rollback
|
|
|
|
repository tip rolled back to revision 1 (undo import)
|
2011-06-15 01:26:35 +04:00
|
|
|
|
|
|
|
Test unsupported combinations
|
|
|
|
|
|
|
|
$ hg import --bypass --no-commit ../test.diff
|
|
|
|
abort: cannot use --no-commit with --bypass
|
|
|
|
[255]
|
|
|
|
$ hg import --bypass --similarity 50 ../test.diff
|
|
|
|
abort: cannot use --similarity with --bypass
|
|
|
|
[255]
|
|
|
|
|
|
|
|
Test commit editor
|
2014-05-10 19:49:36 +04:00
|
|
|
(this also tests that editor is invoked, if the patch doesn't contain
|
|
|
|
the commit message, regardless of '--edit')
|
2011-06-15 01:26:35 +04:00
|
|
|
|
2012-02-13 20:22:35 +04:00
|
|
|
$ cat > ../test.diff <<EOF
|
|
|
|
> diff -r 07f494440405 -r 4e322f7ce8e3 a
|
|
|
|
> --- a/a Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
> +++ b/a Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
> @@ -1,1 +1,2 @@
|
|
|
|
> -a
|
|
|
|
> +b
|
|
|
|
> +c
|
|
|
|
> EOF
|
2011-06-15 01:26:35 +04:00
|
|
|
$ HGEDITOR=cat hg import --bypass ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
|
|
|
|
|
|
|
|
HG: Enter commit message. Lines beginning with 'HG:' are removed.
|
|
|
|
HG: Leave message empty to abort commit.
|
|
|
|
HG: --
|
|
|
|
HG: user: test
|
|
|
|
HG: branch 'default'
|
|
|
|
HG: changed a
|
|
|
|
abort: empty commit message
|
|
|
|
[255]
|
|
|
|
|
|
|
|
Test patch.eol is handled
|
2014-05-10 19:49:36 +04:00
|
|
|
(this also tests that editor is not invoked for '--bypass', if the
|
|
|
|
commit message is explicitly specified, regardless of '--edit')
|
2011-06-15 01:26:35 +04:00
|
|
|
|
|
|
|
$ python -c 'file("a", "wb").write("a\r\n")'
|
|
|
|
$ hg ci -m makeacrlf
|
2014-05-10 19:49:36 +04:00
|
|
|
$ HGEDITOR=cat hg import -m 'should fail because of eol' --edit --bypass ../test.diff
|
2011-06-15 01:26:35 +04:00
|
|
|
applying ../test.diff
|
|
|
|
patching file a
|
|
|
|
Hunk #1 FAILED at 0
|
|
|
|
abort: patch failed to apply
|
|
|
|
[255]
|
|
|
|
$ hg --config patch.eol=auto import -d '0 0' -m 'test patch.eol' --bypass ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
$ shortlog
|
2012-02-13 20:22:35 +04:00
|
|
|
o 3:c606edafba99 test 0 0 - default - test patch.eol
|
2011-06-15 01:26:35 +04:00
|
|
|
|
|
|
|
|
@ 2:872023de769d test 0 0 - default - makeacrlf
|
|
|
|
|
|
|
|
|
| o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|/
|
|
|
|
o 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
|
|
|
|
|
|
|
Test applying multiple patches
|
|
|
|
|
|
|
|
$ hg up -qC 0
|
|
|
|
$ echo e > e
|
|
|
|
$ hg ci -Am adde
|
|
|
|
adding e
|
|
|
|
created new head
|
|
|
|
$ hg export . > ../patch1.diff
|
|
|
|
$ hg up -qC 1
|
|
|
|
$ echo f > f
|
|
|
|
$ hg ci -Am addf
|
|
|
|
adding f
|
|
|
|
$ hg export . > ../patch2.diff
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone -r1 repo-options repo-multi1
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 2 changesets with 2 changes to 1 files
|
|
|
|
updating to branch foo
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd repo-multi1
|
|
|
|
$ hg up 0
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg import --bypass ../patch1.diff ../patch2.diff
|
|
|
|
applying ../patch1.diff
|
|
|
|
applying ../patch2.diff
|
|
|
|
$ shortlog
|
|
|
|
o 3:bc8ca3f8a7c4 test 0 0 - default - addf
|
|
|
|
|
|
|
|
|
o 2:16581080145e test 0 0 - default - adde
|
|
|
|
|
|
|
|
|
| o 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|/
|
|
|
|
@ 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
|
|
|
|
|
|
|
Test applying multiple patches with --exact
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone -r1 repo-options repo-multi2
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 2 changesets with 2 changes to 1 files
|
|
|
|
updating to branch foo
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd repo-multi2
|
|
|
|
$ hg import --bypass --exact ../patch1.diff ../patch2.diff
|
|
|
|
applying ../patch1.diff
|
|
|
|
applying ../patch2.diff
|
|
|
|
$ shortlog
|
|
|
|
o 3:d60cb8989666 test 0 0 - foo - addf
|
|
|
|
|
|
|
|
|
| o 2:16581080145e test 0 0 - default - adde
|
|
|
|
| |
|
|
|
|
@ | 1:4e322f7ce8e3 test 0 0 - foo - changea
|
|
|
|
|/
|
|
|
|
o 0:07f494440405 test 0 0 - default - adda
|
|
|
|
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
|
2012-06-10 16:14:05 +04:00
|
|
|
#if symlink execbit
|
|
|
|
|
2011-06-15 01:26:35 +04:00
|
|
|
Test complicated patch with --exact
|
|
|
|
|
|
|
|
$ hg init repo-exact
|
|
|
|
$ cd repo-exact
|
|
|
|
$ echo a > a
|
|
|
|
$ echo c > c
|
|
|
|
$ echo d > d
|
|
|
|
$ echo e > e
|
|
|
|
$ echo f > f
|
|
|
|
$ chmod +x f
|
|
|
|
$ ln -s c linkc
|
|
|
|
$ hg ci -Am t
|
|
|
|
adding a
|
|
|
|
adding c
|
|
|
|
adding d
|
|
|
|
adding e
|
|
|
|
adding f
|
|
|
|
adding linkc
|
|
|
|
$ hg cp a aa1
|
|
|
|
$ echo b >> a
|
|
|
|
$ echo b > b
|
|
|
|
$ hg add b
|
|
|
|
$ hg cp a aa2
|
|
|
|
$ echo aa >> aa2
|
|
|
|
$ chmod +x e
|
|
|
|
$ chmod -x f
|
|
|
|
$ ln -s a linka
|
|
|
|
$ hg rm d
|
|
|
|
$ hg rm linkc
|
|
|
|
$ hg mv c cc
|
|
|
|
$ hg ci -m patch
|
|
|
|
$ hg export --git . > ../test.diff
|
|
|
|
$ hg up -C null
|
|
|
|
0 files updated, 0 files merged, 7 files removed, 0 files unresolved
|
|
|
|
$ hg purge
|
|
|
|
$ hg st
|
|
|
|
$ hg import --bypass --exact ../test.diff
|
|
|
|
applying ../test.diff
|
|
|
|
|
|
|
|
The patch should have matched the exported revision and generated no additional
|
|
|
|
data. If not, diff both heads to debug it.
|
|
|
|
|
|
|
|
$ shortlog
|
|
|
|
o 1:2978fd5c8aa4 test 0 0 - default - patch
|
|
|
|
|
|
|
|
|
o 0:a0e19e636a43 test 0 0 - default - t
|
|
|
|
|
2012-06-10 16:14:05 +04:00
|
|
|
#endif
|
2012-06-11 03:40:51 +04:00
|
|
|
|
|
|
|
$ cd ..
|