##// END OF EJS Templates
tests: use pattern matching to mask `ECONNREFUSED` messages...
tests: use pattern matching to mask `ECONNREFUSED` messages The second and third one of these in `test-http-proxy.t` was failing on Windows. The others were found by grep and by failed tests when output was matched and an attempt was made to emit the mask pattern. The first clonebundles failure on Windows emitted: error fetching bundle: [WinError 10061] $ECONNREFUSED$ We should probably stringify that better to get rid of the "[WinError 10061]" part.

File last commit:

r49941:532b649c stable
r52835:73a43fe3 default
Show More
test-rebase-inmemory.t
1048 lines | 23.6 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-inmemory.t
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 #require symlink execbit
$ cat << EOF >> $HGRCPATH
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 > [phases]
> publish=False
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 > [extensions]
> amend=
> rebase=
> debugdrawdag=$TESTDIR/drawdag.py
Sushil khanchi
rebase: add --confirm option...
r38689 > strip=
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 > [rebase]
> experimental.inmemory=1
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 > [diff]
> git=1
> [alias]
> tglog = log -G --template "{rev}: {node|short} '{desc}'\n"
> EOF
Rebase a simple DAG:
$ hg init repo1
$ cd repo1
$ hg debugdrawdag <<'EOS'
> c b
> |/
> d
> |
> a
> EOS
$ hg up -C a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tglog
o 3: 814f6bd05178 'c'
|
| o 2: db0e82a16a62 'b'
|/
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -r b -d c | grep rebasing
Martin von Zweigbergk
rebase: fix an inconsistent hyphenation in a debug message...
r46082 rebasing in memory
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:db0e82a16a62 b "b"
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 $ hg tglog
o 3: ca58782ad1e4 'b'
|
o 2: 814f6bd05178 'c'
|
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 b
b (no-eol)
$ hg cat -r 2 c
c (no-eol)
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 $ cd ..
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385
Case 2:
$ hg init repo2
$ cd repo2
$ hg debugdrawdag <<'EOS'
> c b
> |/
> d
> |
> a
> EOS
Add a symlink and executable file:
$ hg up -C c
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ ln -s somefile e
$ echo f > f
$ chmod +x f
$ hg add e f
$ hg amend -q
$ hg up -Cq a
Write files to the working copy, and ensure they're still there after the rebase
$ echo "abc" > a
$ ln -s def b
$ echo "ghi" > c
$ echo "jkl" > d
$ echo "mno" > e
$ hg tglog
o 3: f56b71190a8f 'c'
|
| o 2: db0e82a16a62 'b'
|/
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
$ hg cat -r 3 e
somefile (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -s b -d a | grep rebasing
Martin von Zweigbergk
rebase: fix an inconsistent hyphenation in a debug message...
r46082 rebasing in memory
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:db0e82a16a62 b "b"
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 $ hg tglog
o 3: fc055c3b4d33 'b'
|
| o 2: f56b71190a8f 'c'
| |
| o 1: 02952614a83d 'd'
|/
@ 0: b173517d0057 'a'
$ hg cat -r 2 c
c (no-eol)
$ hg cat -r 3 b
b (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -s 1 -d 3 | grep rebasing
Martin von Zweigbergk
rebase: fix an inconsistent hyphenation in a debug message...
r46082 rebasing in memory
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 1:02952614a83d d "d"
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 rebasing 2:f56b71190a8f "c"
$ hg tglog
o 3: 753feb6fd12a 'c'
|
o 2: 09c044d2cb43 'd'
|
o 1: fc055c3b4d33 'b'
|
@ 0: b173517d0057 'a'
Ensure working copy files are still there:
$ cat a
abc
$ readlink.py b
b -> def
$ cat e
mno
Ensure symlink and executable files were rebased properly:
$ hg up -Cq 3
$ readlink.py e
e -> somefile
$ ls -l f | cut -c -10
-rwxr-xr-x
Martin von Zweigbergk
rebase: allow in-memory merge of the working copy parent...
r36993 Rebase the working copy parent
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 $ hg up -C 3
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase -r 3 -d 0 --debug | grep rebasing
Martin von Zweigbergk
rebase: fix an inconsistent hyphenation in a debug message...
r46082 rebasing in memory
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 3:753feb6fd12a tip "c"
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 $ hg tglog
@ 3: 844a7de3e617 'c'
|
| o 2: 09c044d2cb43 'd'
| |
| o 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
Pulkit Goyal
tests: demonstrate that IMM needs to be smarter with path conflicts...
r39167
Test reporting of path conflicts
$ hg rm a
$ mkdir a
$ touch a/a
$ hg ci -Am "a/a"
adding a/a
$ hg tglog
@ 4: daf7dfc139cb 'a/a'
|
o 3: 844a7de3e617 'c'
|
| o 2: 09c044d2cb43 'd'
| |
| o 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ hg rebase -r . -d 2
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 4:daf7dfc139cb tip "a/a"
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo2/.hg/strip-backup/daf7dfc139cb-fdbfcf4f-rebase.hg
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166
Pulkit Goyal
rebase: add tests showing patch conflict detection needs to be smarter in IMM...
r39611 $ hg tglog
@ 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ echo foo > foo
$ hg ci -Aqm "added foo"
$ hg up '.^'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo bar > bar
$ hg ci -Aqm "added bar"
$ hg rm a/a
$ echo a > a
$ hg ci -Aqm "added a back!"
$ hg tglog
@ 7: 855e9797387e 'added a back!'
|
o 6: d14530e5e3e6 'added bar'
|
| o 5: 9b94b9373deb 'added foo'
|/
o 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ hg rebase -r . -d 5
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 7:855e9797387e tip "added a back!"
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo2/.hg/strip-backup/855e9797387e-81ee4c5d-rebase.hg
Pulkit Goyal
context: don't count deleted files as candidates for path conflicts in IMM...
r39612
$ hg tglog
@ 7: bb3f02be2688 'added a back!'
|
| o 6: d14530e5e3e6 'added bar'
| |
o | 5: 9b94b9373deb 'added foo'
|/
o 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
Kyle Lippincott
tests: change the paths slightly in test-rebase-inmemory.t...
r41931 $ mkdir -p c/subdir
$ echo c > c/subdir/file.txt
$ hg add c/subdir/file.txt
$ hg ci -m 'c/subdir/file.txt'
Martin von Zweigbergk
rebase: fix dir/file conflict detection when using in-mem merge...
r40839 $ hg rebase -r . -d 3 -n
starting dry-run rebase; repository will not be changed
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 8:e147e6e3c490 tip "c/subdir/file.txt"
Kyle Lippincott
tests: change the paths slightly in test-rebase-inmemory.t...
r41931 abort: error: 'c/subdir/file.txt' conflicts with file 'c' in 3.
Martin von Zweigbergk
rebase: fix dir/file conflict detection when using in-mem merge...
r40839 [255]
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988 FIXME: shouldn't need this, but when we hit path conflicts in dryrun mode, we
don't clean up rebasestate.
$ hg rebase --abort
rebase aborted
Martin von Zweigbergk
rebase: fix dir/file conflict detection when using in-mem merge...
r40839 $ hg rebase -r 3 -d . -n
starting dry-run rebase; repository will not be changed
rebasing 3:844a7de3e617 "c"
Martin von Zweigbergk
messages: replace some instances of "folder" by "directory"...
r42269 abort: error: file 'c' cannot be written because 'c/' is a directory in e147e6e3c490 (containing 1 entries: c/subdir/file.txt)
Martin von Zweigbergk
rebase: fix dir/file conflict detection when using in-mem merge...
r40839 [255]
Pulkit Goyal
rebase: add tests showing patch conflict detection needs to be smarter in IMM...
r39611
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166 $ cd ..
Martin von Zweigbergk
tests: show bad path auditing in in-memory rebase...
r40851 Test path auditing (issue5818)
$ mkdir lib_
$ ln -s lib_ lib
$ hg init repo
$ cd repo
$ mkdir -p ".$TESTTMP/lib"
$ touch ".$TESTTMP/lib/a"
$ hg add ".$TESTTMP/lib/a"
$ hg ci -m 'a'
$ touch ".$TESTTMP/lib/b"
$ hg add ".$TESTTMP/lib/b"
$ hg ci -m 'b'
$ hg up -q '.^'
$ touch ".$TESTTMP/lib/c"
$ hg add ".$TESTTMP/lib/c"
$ hg ci -m 'c'
created new head
$ hg rebase -s 1 -d .
rebasing 1:* "b" (glob)
Martin von Zweigbergk
rebase: fix path auditing to audit path relative to repo root (issue5818)...
r40852 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-rebase.hg (glob)
Martin von Zweigbergk
tests: show bad path auditing in in-memory rebase...
r40851 $ cd ..
Sushil khanchi
rebase: add dry-run functionality...
r38391 Test dry-run rebasing
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166
Sushil khanchi
rebase: add --confirm option...
r38689 $ hg init repo3
$ cd repo3
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ echo a>a
$ hg ci -Aqma
$ echo b>b
$ hg ci -Aqmb
$ echo c>c
$ hg ci -Aqmc
$ echo d>d
$ hg ci -Aqmd
$ echo e>e
$ hg ci -Aqme
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ hg up 1 -q
$ echo f>f
$ hg ci -Amf
adding f
created new head
$ echo g>g
$ hg ci -Aqmg
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Make sure it throws error while passing --continue or --abort with --dry-run
$ hg rebase -s 2 -d 6 -n --continue
Martin von Zweigbergk
rebase: use cmdutil.check_incompatible_arguments() for action+confirm/dryrun...
r44379 abort: cannot specify both --continue and --dry-run
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ hg rebase -s 2 -d 6 -n --abort
Martin von Zweigbergk
rebase: use cmdutil.check_incompatible_arguments() for action+confirm/dryrun...
r44379 abort: cannot specify both --abort and --dry-run
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Sushil khanchi
rebase: add dry-run functionality...
r38391
Sushil khanchi
rebase: add test to demonstrate an issue in dry-run...
r46795 When nothing to rebase
$ hg reb -r . -d '.^' -n
starting dry-run rebase; repository will not be changed
nothing to rebase
Sushil khanchi
rebase: handle the case when nothing to rebase (dry-run)...
r46796 [1]
Sushil khanchi
rebase: add test to demonstrate an issue in dry-run...
r46795
Sushil khanchi
rebase: add dry-run functionality...
r38391 Check dryrun gives correct results when there is no conflict in rebasing
$ hg rebase -s 2 -d 6 -n
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
Sushil khanchi
rebase: improve output of --dry-run...
r38564 dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
Sushil khanchi
rebase: add dry-run functionality...
r38391
$ hg diff
$ hg status
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check dryrun working with --collapse when there is no conflict
$ hg rebase -s 2 -d 6 -n --collapse
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
Sushil khanchi
rebase: improve output of --dry-run...
r38564 dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
Sushil khanchi
rebase: add dry-run functionality...
r38391
Check dryrun gives correct results when there is conflict in rebasing
Make a conflict:
$ hg up 6 -q
$ echo conflict>e
$ hg ci -Aqm "conflict with e"
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 7:d2c195b28050 test
| conflict with e
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
$ hg rebase -s 2 -d 7 -n
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
hit a merge conflict
Sushil khanchi
rebase: make dry-run return 1 or 0 according to result...
r38462 [1]
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ hg diff
$ hg status
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 7:d2c195b28050 test
| conflict with e
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check dryrun working with --collapse when there is conflicts
$ hg rebase -s 2 -d 7 -n --collapse
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
hit a merge conflict
Sushil khanchi
rebase: make dry-run return 1 or 0 according to result...
r38462 [1]
Sushil khanchi
rebase: add --confirm option...
r38689
Yuya Nishihara
rebase: add test for in-memory merge conflicts
r39170 In-memory rebase that fails due to merge conflicts
$ hg rebase -s 2 -d 7
rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
Martin von Zweigbergk
rebase: teach in-memory rebase to not restart with on-disk rebase on conflict...
r46132 hit merge conflicts; rebasing that commit again in the working copy
Yuya Nishihara
rebase: do not pass in user option to rollback in-memory merge conflict...
r39171 merging e
warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
Daniel Ploch
error: unify the error message formats for 'rebase' and 'unshelve'...
r45710 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ hg rebase --abort
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo3/.hg/strip-backup/c1e524d4287c-f91f82e1-backup.hg
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 rebase aborted
Retrying without in-memory merge won't lose working copy changes
$ cd ..
$ hg clone repo3 repo3-dirty -q
$ cd repo3-dirty
$ echo dirty > a
$ hg rebase -s 2 -d 7
rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
Martin von Zweigbergk
rebase: teach in-memory rebase to not restart with on-disk rebase on conflict...
r46132 hit merge conflicts; rebasing that commit again in the working copy
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 transaction abort!
rollback completed
Martin von Zweigbergk
rebase: preserve working copy when redoing in-mem rebase on disk...
r40835 abort: uncommitted changes
Martin von Zweigbergk
errors: introduce StateError and use it from commands and cmdutil...
r46444 [20]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ cat a
Martin von Zweigbergk
rebase: preserve working copy when redoing in-mem rebase on disk...
r40835 dirty
Martin von Zweigbergk
tests: show that in-memory rebase leaves state when working copy is dirty...
r46640 $ hg status -v
M a
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834
Retrying without in-memory merge won't lose merge state
$ cd ..
$ hg clone repo3 repo3-merge-state -q
$ cd repo3-merge-state
$ hg merge 4
merging e
warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
2 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
$ hg resolve -l
U e
$ hg rebase -s 2 -d 7
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988 abort: outstanding uncommitted merge
(use 'hg commit' or 'hg merge --abort')
Martin von Zweigbergk
errors: introduce StateError and use it from commands and cmdutil...
r46444 [20]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ hg resolve -l
Martin von Zweigbergk
rebase: abort in-mem rebase if there's a dirty merge state...
r40836 U e
Yuya Nishihara
rebase: add test for in-memory merge conflicts
r39170
Sushil khanchi
rebase: add --confirm option...
r38689 ==========================
Test for --confirm option|
==========================
$ cd ..
$ hg clone repo3 repo4 -q
$ cd repo4
$ hg strip 7 -q
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check it gives error when both --dryrun and --confirm is used:
$ hg rebase -s 2 -d . --confirm --dry-run
abort: cannot specify both --confirm and --dry-run
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Sushil khanchi
rebase: add --confirm option...
r38689 $ hg rebase -s 2 -d . --confirm --abort
Martin von Zweigbergk
rebase: use cmdutil.check_incompatible_arguments() for action+confirm/dryrun...
r44379 abort: cannot specify both --abort and --confirm
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Sushil khanchi
rebase: add --confirm option...
r38689 $ hg rebase -s 2 -d . --confirm --continue
Martin von Zweigbergk
rebase: use cmdutil.check_incompatible_arguments() for action+confirm/dryrun...
r44379 abort: cannot specify both --continue and --confirm
Martin von Zweigbergk
errors: introduce InputError and use it from commands and cmdutil...
r46431 [10]
Sushil khanchi
rebase: add --confirm option...
r38689
Test --confirm option when there are no conflicts:
$ hg rebase -s 2 -d . --keep --config ui.interactive=True --confirm << EOF
> n
> EOF
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
rebase completed successfully
apply changes (yn)? n
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
$ hg rebase -s 2 -d . --keep --config ui.interactive=True --confirm << EOF
> y
> EOF
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
rebase completed successfully
apply changes (yn)? y
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
o 9:9fd28f55f6dc test
| e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Test --confirm option when there is a conflict
$ hg up tip -q
$ echo ee>e
$ hg ci --amend -m "conflict with e" -q
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 9:906d72f66a59 test
| conflict with e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Sushil khanchi
rebase: in --confirm option just abort if hit a conflict...
r38701 $ hg rebase -s 4 -d . --keep --confirm
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 4:e860deea161a "e"
merging e
hit a merge conflict
[1]
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 9:906d72f66a59 test
| conflict with e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Kyle Lippincott
overlayworkingctx: fix exception in metadata-only inmemory merges (issue5960)...
r39163 Test a metadata-only in-memory merge
$ cd $TESTTMP
$ hg init no_exception
$ cd no_exception
# Produce the following graph:
# o 'add +x to foo.txt'
# | o r1 (adds bar.txt, just for something to rebase to)
# |/
# o r0 (adds foo.txt, no +x)
$ echo hi > foo.txt
$ hg ci -qAm r0
$ echo hi > bar.txt
$ hg ci -qAm r1
$ hg co -qr ".^"
$ chmod +x foo.txt
$ hg ci -qAm 'add +x to foo.txt'
issue5960: this was raising an AttributeError exception
$ hg rebase -r . -d 1
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:539b93e77479 tip "add +x to foo.txt"
Kyle Lippincott
overlayworkingctx: fix exception in metadata-only inmemory merges (issue5960)...
r39163 saved backup bundle to $TESTTMP/no_exception/.hg/strip-backup/*.hg (glob)
$ hg diff -c tip
diff --git a/foo.txt b/foo.txt
old mode 100644
new mode 100755
Martin von Zweigbergk
test: demonstrate crash with in-memory rebase and copies...
r42114
Test rebasing a commit with copy information, but no content changes
$ cd ..
$ hg clone -q repo1 merge-and-rename
$ cd merge-and-rename
$ cat << EOF >> .hg/hgrc
> [experimental]
> evolution.createmarkers=True
> evolution.allowunstable=True
> EOF
$ hg co -q 1
$ hg mv d e
$ hg ci -qm 'rename d to e'
$ hg co -q 3
$ hg merge -q 4
$ hg ci -m 'merge'
$ hg co -q 2
$ mv d e
$ hg addremove -qs 0
$ hg ci -qm 'untracked rename of d to e'
$ hg debugobsolete -q `hg log -T '{node}' -r 4` `hg log -T '{node}' -r .`
1 new orphan changesets
$ hg tglog
@ 6: 676538af172d 'untracked rename of d to e'
|
Valentin Gatien-Baron
commit: improve the files field of changelog for merges...
r42840 | * 5: 574d92ad16fc 'merge'
Martin von Zweigbergk
test: demonstrate crash with in-memory rebase and copies...
r42114 | |\
| | x 4: 2c8b5dad7956 'rename d to e'
| | |
| o | 3: ca58782ad1e4 'b'
|/ /
o / 2: 814f6bd05178 'c'
|/
o 1: 02952614a83d 'd'
|
o 0: b173517d0057 'a'
Martin von Zweigbergk
rebase: fix crash with in-memory rebase and copies...
r42115 $ hg rebase -b 5 -d tip
rebasing 3:ca58782ad1e4 "b"
Valentin Gatien-Baron
commit: improve the files field of changelog for merges...
r42840 rebasing 5:574d92ad16fc "merge"
note: not rebasing 5:574d92ad16fc "merge", its destination already has all its changes
Pulkit Goyal
tests: show IMM is broken when merging file empty in destination...
r42380
$ cd ..
Martin von Zweigbergk
tests: demonstrate another failure with in-memory rebase and copies...
r42473 Test rebasing a commit with copy information
$ hg init rebase-rename
$ cd rebase-rename
$ echo a > a
$ hg ci -Aqm 'add a'
$ echo a2 > a
$ hg ci -m 'modify a'
$ hg co -q 0
$ hg mv a b
$ hg ci -qm 'rename a to b'
Martin von Zweigbergk
overlaycontext: allow calling copydata() on clean context...
r42474 $ hg rebase -d 1
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:b977edf6f839 tip "rename a to b"
Martin von Zweigbergk
overlaycontext: allow calling copydata() on clean context...
r42474 merging a and b to b
saved backup bundle to $TESTTMP/rebase-rename/.hg/strip-backup/b977edf6f839-0864f570-rebase.hg
$ hg st --copies --change .
A b
a
R a
Martin von Zweigbergk
tests: demonstrate another failure with in-memory rebase and copies...
r42473 $ cd ..
Martin von Zweigbergk
tests: demonstrate broken in-memory rebase of copy to empty file...
r42727 Test rebasing a commit with copy information, where the target is empty
$ hg init rebase-rename-empty
$ cd rebase-rename-empty
$ echo a > a
$ hg ci -Aqm 'add a'
$ cat > a
$ hg ci -m 'make a empty'
$ hg co -q 0
$ hg mv a b
$ hg ci -qm 'rename a to b'
$ hg rebase -d 1
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:b977edf6f839 tip "rename a to b"
Martin von Zweigbergk
tests: demonstrate broken in-memory rebase of copy to empty file...
r42727 merging a and b to b
Martin von Zweigbergk
rebase: fix in-memory rebasing of copy of empty file...
r42728 saved backup bundle to $TESTTMP/rebase-rename-empty/.hg/strip-backup/b977edf6f839-0864f570-rebase.hg
Martin von Zweigbergk
tests: demonstrate broken in-memory rebase of copy to empty file...
r42727 $ hg st --copies --change .
A b
a
R a
$ cd ..
Martin von Zweigbergk
tests: demonstrate crash when rebasing across copy with --collapse...
r42508 Rebase across a copy with --collapse
$ hg init rebase-rename-collapse
$ cd rebase-rename-collapse
$ echo a > a
$ hg ci -Aqm 'add a'
$ hg mv a b
$ hg ci -m 'rename a to b'
$ hg co -q 0
$ echo a2 > a
$ hg ci -qm 'modify a'
$ hg rebase -r . -d 1 --collapse
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:41c4ea50d4cf tip "modify a"
Martin von Zweigbergk
tests: demonstrate crash when rebasing across copy with --collapse...
r42508 merging b and a to b
Martin von Zweigbergk
copies: fix duplicatecopies() with overlay context...
r42509 saved backup bundle to $TESTTMP/rebase-rename-collapse/.hg/strip-backup/41c4ea50d4cf-b90b7994-rebase.hg
Martin von Zweigbergk
tests: demonstrate crash when rebasing across copy with --collapse...
r42508 $ cd ..
Pulkit Goyal
tests: show IMM is broken when merging file empty in destination...
r42380 Test rebasing when the file we are merging in destination is empty
$ hg init test
$ cd test
$ echo a > foo
$ hg ci -Aqm 'added a to foo'
$ rm foo
$ touch foo
$ hg di
diff --git a/foo b/foo
--- a/foo
+++ b/foo
@@ -1,1 +0,0 @@
-a
$ hg ci -m "make foo an empty file"
$ hg up '.^'
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > foo
$ hg di
diff --git a/foo b/foo
--- a/foo
+++ b/foo
@@ -1,1 +1,1 @@
-a
+b
$ hg ci -m "add b to foo"
created new head
$ hg rebase -r . -d 1 --config ui.merge=internal:merge3
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:fb62b706688e tip "add b to foo"
Pulkit Goyal
tests: show IMM is broken when merging file empty in destination...
r42380 merging foo
Martin von Zweigbergk
rebase: teach in-memory rebase to not restart with on-disk rebase on conflict...
r46132 hit merge conflicts; rebasing that commit again in the working copy
Pulkit Goyal
context: check file exists before getting data from _wrappedctx...
r42381 merging foo
warning: conflicts while merging foo! (edit, then use 'hg resolve --mark')
Daniel Ploch
error: unify the error message formats for 'rebase' and 'unshelve'...
r45710 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988
$ cd $TESTTMP
Test rebasing when we're in the middle of a rebase already
$ hg init test_issue6214
$ cd test_issue6214
$ echo r0 > r0
$ hg ci -qAm 'r0'
$ echo hi > foo
$ hg ci -qAm 'hi from foo'
$ hg co -q '.^'
$ echo bye > foo
$ hg ci -qAm 'bye from foo'
$ hg co -q '.^'
$ echo unrelated > some_other_file
$ hg ci -qAm 'some unrelated changes'
$ hg log -G -T'{rev}: {desc}\n{files%"{file}\n"}'
@ 3: some unrelated changes
| some_other_file
| o 2: bye from foo
|/ foo
| o 1: hi from foo
|/ foo
o 0: r0
r0
$ hg rebase -r 2 -d 1 -t:merge3
rebasing 2:b4d249fbf8dd "bye from foo"
merging foo
Martin von Zweigbergk
rebase: teach in-memory rebase to not restart with on-disk rebase on conflict...
r46132 hit merge conflicts; rebasing that commit again in the working copy
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988 merging foo
warning: conflicts while merging foo! (edit, then use 'hg resolve --mark')
Daniel Ploch
error: unify the error message formats for 'rebase' and 'unshelve'...
r45710 unresolved conflicts (see 'hg resolve', then 'hg rebase --continue')
Martin von Zweigbergk
errors: add config that lets user get more detailed exit codes...
r46430 [240]
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988 $ hg rebase -r 3 -d 1 -t:merge3
abort: rebase in progress
Kyle Lippincott
morestatus: mention --stop even if not using --verbose...
r45774 (use 'hg rebase --continue', 'hg rebase --abort', or 'hg rebase --stop')
Martin von Zweigbergk
errors: introduce StateError and use it from commands and cmdutil...
r46444 [20]
Kyle Lippincott
rebase: check for unfinished ops even when inmemory (issue6214)...
r43988 $ hg resolve --list
U foo
$ hg resolve --all --re-merge -t:other
(no more unresolved files)
continue: hg rebase --continue
$ hg rebase --continue
rebasing 2:b4d249fbf8dd "bye from foo"
saved backup bundle to $TESTTMP/test_issue6214/.hg/strip-backup/b4d249fbf8dd-299ec25c-rebase.hg
$ hg log -G -T'{rev}: {desc}\n{files%"{file}\n"}'
o 3: bye from foo
| foo
| @ 2: some unrelated changes
| | some_other_file
o | 1: hi from foo
|/ foo
o 0: r0
r0
Manuel Jacob
rebase: add test case that shows that inmemory rebase does not preserve merges...
r45646
$ cd ..
Changesets that become empty should not be committed. Merges are not empty by
definition.
$ hg init keep_merge
$ cd keep_merge
$ echo base > base; hg add base; hg ci -m base
$ echo test > test; hg add test; hg ci -m a
$ hg up 0 -q
$ echo test > test; hg add test; hg ci -m b -q
$ hg up 0 -q
$ echo test > test; hg add test; hg ci -m c -q
$ hg up 1 -q
$ hg merge 2 -q
$ hg ci -m merge
$ hg up null -q
$ hg tglog
o 4: 59c8292117b1 'merge'
|\
| | o 3: 531f80391e4a 'c'
| | |
| o | 2: 0194f1db184a 'b'
| |/
o / 1: 6f252845ea45 'a'
|/
o 0: d20a80d4def3 'base'
$ hg rebase -s 2 -d 3
rebasing 2:0194f1db184a "b"
note: not rebasing 2:0194f1db184a "b", its destination already has all its changes
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 4:59c8292117b1 tip "merge"
Manuel Jacob
rebase: add test case that shows that inmemory rebase does not preserve merges...
r45646 saved backup bundle to $TESTTMP/keep_merge/.hg/strip-backup/0194f1db184a-aee31d03-rebase.hg
$ hg tglog
o 3: 506e2454484b 'merge'
|\
| o 2: 531f80391e4a 'c'
| |
o | 1: 6f252845ea45 'a'
|/
o 0: d20a80d4def3 'base'
Manuel Jacob
rebase: fix regression in file change detection introduced by 0ecb3b11fcad...
r45799
Augie Fackler
tests: add explicit coverage for update_hash_refs from rewriteutil...
r48590 Test that update_hash_refs works.
$ hg co 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo update_hash_refs > update_hash_refs
$ hg add update_hash_refs
$ hg ci -m 'this will change hash'
created new head
$ echo changed >> update_hash_refs
Augie Fackler
rewriteutil: fix crash when a rewritten message references f{6,64}...
r48591 $ hg ci -m "this starts as the child of `hg log -r . -T'{node|short}'` but not 506e2454484b. Also, ffffffffffffffff"
Augie Fackler
tests: add explicit coverage for update_hash_refs from rewriteutil...
r48590 $ hg tglog
Augie Fackler
rewriteutil: fix crash when a rewritten message references f{6,64}...
r48591 @ 5: a8b42cbbde83 'this starts as the child of 98789aa60148 but not 506e2454484b. Also, ffffffffffffffff'
Augie Fackler
tests: add explicit coverage for update_hash_refs from rewriteutil...
r48590 |
o 4: 98789aa60148 'this will change hash'
|
| o 3: 506e2454484b 'merge'
| |\
+---o 2: 531f80391e4a 'c'
| |
| o 1: 6f252845ea45 'a'
|/
o 0: d20a80d4def3 'base'
$ hg rebase -r '.^::' -d 3
rebasing 4:98789aa60148 "this will change hash"
Augie Fackler
rewriteutil: fix crash when a rewritten message references f{6,64}...
r48591 rebasing 5:a8b42cbbde83 tip "this starts as the child of 98789aa60148 but not 506e2454484b. Also, ffffffffffffffff"
saved backup bundle to $TESTTMP/keep_merge/.hg/strip-backup/98789aa60148-da3f4c2c-rebase.hg
Augie Fackler
tests: add explicit coverage for update_hash_refs from rewriteutil...
r48590 $ hg tglog
Augie Fackler
rewriteutil: fix crash when a rewritten message references f{6,64}...
r48591 @ 5: 0fd2912e6cc1 'this starts as the child of c16c25696fe7 but not 506e2454484b. Also, ffffffffffffffff'
Augie Fackler
tests: add explicit coverage for update_hash_refs from rewriteutil...
r48590 |
o 4: c16c25696fe7 'this will change hash'
|
o 3: 506e2454484b 'merge'
|\
| o 2: 531f80391e4a 'c'
| |
o | 1: 6f252845ea45 'a'
|/
o 0: d20a80d4def3 'base'
Kyle Lippincott
tests: add test demonstrating issue with ambiguous has prefixes during rebase...
r49940 Add an explicit test for rewrite_hash_refs when the detected prefix is
ambiguous. Here's the super low-tech way I found this collision, if the hashing
scheme ever changes:
# hg init
# echo test0 > test
# hg ci -qAm 'test0' -u 'test' -d '0 0'
# i=1
# while [[ $(chg log -r . -T'{shortest(node, 6)}' | wc -c) -eq 6 ]]; do
# chg co -r 0000000000
# echo "test$i" > test
# chg ci -qAm "test$i" -u test -d '0 0'
# (( ++i ))
# done
$ hg co -q 0000000000
$ echo test5281 > test
$ hg ci -qAm 'test5281'
$ hg co -q 000000000
$ echo test9912 > test
$ hg ci -qAm 'test9912'
$ hg co -q 4
$ echo contents > some_file
$ hg ci -qAm 'The previous two (parentless) commits had a hash prefix of b04363. Check that rewrite_hash_refs will not fail because of that.'
$ hg rebase -r . -d 5
rebasing 8:5c4cdabf5769 tip "The previous two (parentless) commits had a hash prefix of b04363. Check that rewrite_hash_refs will not fail because of that."
Kyle Lippincott
rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"...
r49941 saved backup bundle to $TESTTMP/keep_merge/.hg/strip-backup/5c4cdabf5769-335e1828-rebase.hg
Kyle Lippincott
tests: add test demonstrating issue with ambiguous has prefixes during rebase...
r49940
Manuel Jacob
rebase: fix regression in file change detection introduced by 0ecb3b11fcad...
r45799 $ cd ..
Test (virtual) working directory without changes, created by merge conflict
resolution. There was a regression where the file was incorrectly detected as
changed although the file contents were the same as in the parent.
$ hg init nofilechanges
$ cd nofilechanges
$ echo a > a; hg add a; hg ci -m a
$ echo foo > test; hg add test; hg ci -m b
$ hg up 0 -q
$ echo bar > test; hg add test; hg ci -m c
created new head
$ hg rebase -d 2 -d 1 --tool :local
Martin von Zweigbergk
rebase: change and standarize template for rebase's one-line summary...
r46356 rebasing 2:ca2749322ee5 tip "c"
note: not rebasing 2:ca2749322ee5 tip "c", its destination already has all its changes
Manuel Jacob
rebase: fix regression in file change detection introduced by 0ecb3b11fcad...
r45799 saved backup bundle to $TESTTMP/nofilechanges/.hg/strip-backup/ca2749322ee5-6dc7e94b-rebase.hg