test-update-branches.t
726 lines
| 18.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-update-branches.t
Rodrigo Damazio Bovendorp
|
r44336 | $ cat >> $HGRCPATH <<EOF | ||
> [commands] | ||||
> status.verbose=1 | ||||
> EOF | ||||
Adrian Buehlmann
|
r12279 | # Construct the following history tree: | ||
# | ||||
# @ 5:e1bb631146ca b1 | ||||
# | | ||||
# o 4:a4fdb3b883c4 0:b608b9236435 b1 | ||||
# | | ||||
# | o 3:4b57d2520816 1:44592833ba9f | ||||
# | | | ||||
# | | o 2:063f31070f65 | ||||
# | |/ | ||||
# | o 1:44592833ba9f | ||||
# |/ | ||||
# o 0:b608b9236435 | ||||
Siddharth Agarwal
|
r17773 | $ mkdir b1 | ||
$ cd b1 | ||||
Adrian Buehlmann
|
r12279 | $ hg init | ||
$ echo foo > foo | ||||
$ echo zero > a | ||||
Patrick Mezard
|
r16491 | $ hg init sub | ||
$ echo suba > sub/suba | ||||
$ hg --cwd sub ci -Am addsuba | ||||
adding suba | ||||
$ echo 'sub = sub' > .hgsub | ||||
Adrian Buehlmann
|
r12279 | $ hg ci -qAm0 | ||
$ echo one > a ; hg ci -m1 | ||||
$ echo two > a ; hg ci -m2 | ||||
$ hg up -q 1 | ||||
$ echo three > a ; hg ci -qm3 | ||||
$ hg up -q 0 | ||||
$ hg branch -q b1 | ||||
$ echo four > a ; hg ci -qm4 | ||||
$ echo five > a ; hg ci -qm5 | ||||
Initial repo state: | ||||
Martin Geisler
|
r20117 | $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n' | ||
Patrick Mezard
|
r16491 | @ 5:ff252e8273df b1 | ||
Adrian Buehlmann
|
r12279 | | | ||
Patrick Mezard
|
r16491 | o 4:d047485b3896 0:60829823a42a b1 | ||
Adrian Buehlmann
|
r12279 | | | ||
Patrick Mezard
|
r16491 | | o 3:6efa171f091b 1:0786582aa4b1 | ||
Adrian Buehlmann
|
r12279 | | | | ||
Patrick Mezard
|
r16491 | | | o 2:bd10386d478c | ||
Adrian Buehlmann
|
r12279 | | |/ | ||
Patrick Mezard
|
r16491 | | o 1:0786582aa4b1 | ||
Adrian Buehlmann
|
r12279 | |/ | ||
Patrick Mezard
|
r16491 | o 0:60829823a42a | ||
Adrian Buehlmann
|
r12279 | |||
Siddharth Agarwal
|
r17773 | Make sure update doesn't assume b1 is a repository if invoked from outside: | ||
$ cd .. | ||||
$ hg update b1 | ||||
Martin von Zweigbergk
|
r46518 | abort: no repository found in '$TESTTMP' (.hg not found) | ||
Martin von Zweigbergk
|
r46523 | [10] | ||
Siddharth Agarwal
|
r17773 | $ cd b1 | ||
Adrian Buehlmann
|
r12279 | Test helper functions: | ||
$ revtest () { | ||||
> msg=$1 | ||||
Patrick Mezard
|
r16491 | > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub' | ||
Adrian Buehlmann
|
r12279 | > startrev=$3 | ||
> targetrev=$4 | ||||
> opt=$5 | ||||
> hg up -qC $startrev | ||||
> test $dirtyflag = dirty && echo dirty > foo | ||||
Patrick Mezard
|
r16491 | > test $dirtyflag = dirtysub && echo dirty > sub/suba | ||
Adrian Buehlmann
|
r12279 | > hg up $opt $targetrev | ||
> hg parent --template 'parent={rev}\n' | ||||
Patrick Mezard
|
r16491 | > hg stat -S | ||
Mads Kiilerich
|
r17347 | > } | ||
Adrian Buehlmann
|
r12279 | |||
$ norevtest () { | ||||
> msg=$1 | ||||
Patrick Mezard
|
r16491 | > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub' | ||
Adrian Buehlmann
|
r12279 | > startrev=$3 | ||
> opt=$4 | ||||
> hg up -qC $startrev | ||||
> test $dirtyflag = dirty && echo dirty > foo | ||||
Patrick Mezard
|
r16491 | > test $dirtyflag = dirtysub && echo dirty > sub/suba | ||
Adrian Buehlmann
|
r12279 | > hg up $opt | ||
> hg parent --template 'parent={rev}\n' | ||||
Patrick Mezard
|
r16491 | > hg stat -S | ||
Mads Kiilerich
|
r17347 | > } | ||
Adrian Buehlmann
|
r12279 | |||
Matt Mackall
|
r12328 | Test cases are documented in a table in the update function of merge.py. | ||
Cases are run as shown in that table, row by row. | ||||
Adrian Buehlmann
|
r12279 | |||
$ norevtest 'none clean linear' clean 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=5 | ||||
$ norevtest 'none clean same' clean 2 | ||||
Pierre-Yves David
|
r28065 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Pulkit Goyal
|
r32698 | updated to "bd10386d478c: 2" | ||
Pierre-Yves David
|
r28065 | 1 other heads for branch "default" | ||
Adrian Buehlmann
|
r12279 | parent=2 | ||
$ revtest 'none clean linear' clean 1 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
$ revtest 'none clean same' clean 2 3 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=3 | ||||
$ revtest 'none clean cross' clean 3 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=4 | ||||
$ revtest 'none dirty linear' dirty 1 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M foo | ||||
Patrick Mezard
|
r16491 | $ revtest 'none dirtysub linear' dirtysub 1 2 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M sub/suba | ||||
Adrian Buehlmann
|
r12279 | $ revtest 'none dirty same' dirty 2 3 | ||
Siddharth Agarwal
|
r19799 | abort: uncommitted changes | ||
(commit or update --clean to discard changes) | ||||
Adrian Buehlmann
|
r12279 | parent=2 | ||
M foo | ||||
Patrick Mezard
|
r16491 | $ revtest 'none dirtysub same' dirtysub 2 3 | ||
Siddharth Agarwal
|
r19799 | abort: uncommitted changes | ||
(commit or update --clean to discard changes) | ||||
Patrick Mezard
|
r16491 | parent=2 | ||
M sub/suba | ||||
Adrian Buehlmann
|
r12279 | $ revtest 'none dirty cross' dirty 3 4 | ||
Siddharth Agarwal
|
r19799 | abort: uncommitted changes | ||
(commit or update --clean to discard changes) | ||||
Adrian Buehlmann
|
r12279 | parent=3 | ||
M foo | ||||
Siddharth Agarwal
|
r19800 | $ norevtest 'none dirty cross' dirty 2 | ||
Pierre-Yves David
|
r28065 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Pulkit Goyal
|
r32698 | updated to "bd10386d478c: 2" | ||
Pierre-Yves David
|
r28065 | 1 other heads for branch "default" | ||
Siddharth Agarwal
|
r19800 | parent=2 | ||
M foo | ||||
Patrick Mezard
|
r16491 | $ revtest 'none dirtysub cross' dirtysub 3 4 | ||
Siddharth Agarwal
|
r19799 | abort: uncommitted changes | ||
(commit or update --clean to discard changes) | ||||
Patrick Mezard
|
r16491 | parent=3 | ||
M sub/suba | ||||
Adrian Buehlmann
|
r12279 | |||
r49234 | $ revtest '--clean dirty linear' dirty 1 2 --clean | |||
Adrian Buehlmann
|
r12279 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
parent=2 | ||||
r49234 | $ revtest '--check dirty linear' dirty 1 2 --check | |||
Siddharth Agarwal
|
r19801 | abort: uncommitted changes | ||
Adrian Buehlmann
|
r12279 | parent=1 | ||
M foo | ||||
r49234 | $ revtest '--merge dirty linear' dirty 1 2 --merge | |||
Martin von Zweigbergk
|
r31166 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
parent=2 | ||||
M foo | ||||
r49234 | $ revtest '--merge dirty cross' dirty 3 4 --merge | |||
Martin von Zweigbergk
|
r31166 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
parent=4 | ||||
M foo | ||||
r49234 | $ revtest '--check dirtysub linear' dirtysub 1 2 --check | |||
Matt Harbison
|
r33365 | abort: uncommitted changes in subrepository "sub" | ||
Patrick Mezard
|
r16491 | parent=1 | ||
M sub/suba | ||||
r49234 | $ norevtest '--check clean same' clean 2 -c | |||
Pierre-Yves David
|
r28065 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Pulkit Goyal
|
r32698 | updated to "bd10386d478c: 2" | ||
Pierre-Yves David
|
r28029 | 1 other heads for branch "default" | ||
Pierre-Yves David
|
r28065 | parent=2 | ||
Adrian Buehlmann
|
r12279 | |||
r49234 | $ revtest '--check --clean dirty linear' dirty 1 2 "--check --clean" | |||
Valentin Gatien-Baron
|
r44893 | abort: cannot specify both --clean and --check | ||
Martin von Zweigbergk
|
r31166 | parent=1 | ||
M foo | ||||
r49234 | $ revtest '--merge -checkc dirty linear' dirty 1 2 "--merge --check" | |||
Valentin Gatien-Baron
|
r44893 | abort: cannot specify both --check and --merge | ||
Martin von Zweigbergk
|
r31166 | parent=1 | ||
M foo | ||||
r49234 | $ revtest '--merge -clean dirty linear' dirty 1 2 "--merge --clean" | |||
Valentin Gatien-Baron
|
r44893 | abort: cannot specify both --clean and --merge | ||
Adrian Buehlmann
|
r12279 | parent=1 | ||
M foo | ||||
Augie Fackler
|
r34706 | $ echo '[commands]' >> .hg/hgrc | ||
$ echo 'update.check = abort' >> .hg/hgrc | ||||
Martin von Zweigbergk
|
r31167 | |||
$ revtest 'none dirty linear' dirty 1 2 | ||||
abort: uncommitted changes | ||||
parent=1 | ||||
M foo | ||||
r49234 | $ revtest 'none dirty linear' dirty 1 2 --check | |||
Martin von Zweigbergk
|
r31167 | abort: uncommitted changes | ||
parent=1 | ||||
M foo | ||||
r49234 | $ revtest '--merge none dirty linear' dirty 1 2 --check | |||
abort: uncommitted changes | ||||
parent=1 | ||||
M foo | ||||
r49235 | $ revtest '--merge none dirty linear' dirty 1 2 --merge | |||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M foo | ||||
r49236 | $ revtest '--merge none dirty linear' dirty 1 2 --no-check | |||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M foo | ||||
r49234 | $ revtest 'none dirty linear' dirty 1 2 --clean | |||
Martin von Zweigbergk
|
r31167 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
parent=2 | ||||
Augie Fackler
|
r34706 | $ echo 'update.check = none' >> .hg/hgrc | ||
Martin von Zweigbergk
|
r31167 | |||
$ revtest 'none dirty cross' dirty 3 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=4 | ||||
M foo | ||||
$ revtest 'none dirty linear' dirty 1 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M foo | ||||
r49234 | $ revtest 'none dirty linear' dirty 1 2 --check | |||
Martin von Zweigbergk
|
r31167 | abort: uncommitted changes | ||
parent=1 | ||||
M foo | ||||
r49236 | $ revtest 'none dirty linear' dirty 1 2 --no-merge | |||
abort: uncommitted changes | ||||
parent=1 | ||||
M foo | ||||
r49234 | $ revtest 'none dirty linear' dirty 1 2 --clean | |||
Martin von Zweigbergk
|
r31167 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
parent=2 | ||||
$ hg co -qC 3 | ||||
$ echo dirty >> a | ||||
$ hg co --tool :merge3 4 | ||||
merging a | ||||
warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
[1] | ||||
Martin von Zweigbergk
|
r44818 | $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n' | ||
o 5:ff252e8273df b1 | ||||
| | ||||
@ 4:d047485b3896 0:60829823a42a b1 | ||||
| | ||||
Martin von Zweigbergk
|
r44819 | | % 3:6efa171f091b 1:0786582aa4b1 | ||
Martin von Zweigbergk
|
r44818 | | | | ||
| | o 2:bd10386d478c | ||||
| |/ | ||||
| o 1:0786582aa4b1 | ||||
|/ | ||||
o 0:60829823a42a | ||||
Martin von Zweigbergk
|
r31167 | $ hg st | ||
M a | ||||
? a.orig | ||||
Rodrigo Damazio Bovendorp
|
r44391 | # Unresolved merge conflicts: | ||
# | ||||
# a | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
Martin von Zweigbergk
|
r31167 | $ cat a | ||
Martin von Zweigbergk
|
r49436 | <<<<<<< working copy: 6efa171f091b - test: 3 | ||
Martin von Zweigbergk
|
r31167 | three | ||
dirty | ||||
Martin von Zweigbergk
|
r49436 | ||||||| working copy parent: 6efa171f091b - test: 3 | ||
Martin von Zweigbergk
|
r31167 | three | ||
======= | ||||
four | ||||
Martin von Zweigbergk
|
r49436 | >>>>>>> destination: d047485b3896 b1 - test: 4 | ||
Martin von Zweigbergk
|
r31167 | $ rm a.orig | ||
Augie Fackler
|
r34706 | $ echo 'update.check = noconflict' >> .hg/hgrc | ||
Martin von Zweigbergk
|
r31168 | |||
$ revtest 'none dirty cross' dirty 3 4 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=4 | ||||
M foo | ||||
$ revtest 'none dirty linear' dirty 1 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
M foo | ||||
$ revtest 'none dirty linear' dirty 1 2 -c | ||||
abort: uncommitted changes | ||||
parent=1 | ||||
M foo | ||||
$ revtest 'none dirty linear' dirty 1 2 -C | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
Locally added file is allowed | ||||
$ hg up -qC 3 | ||||
$ echo a > bar | ||||
$ hg add bar | ||||
$ hg up -q 4 | ||||
$ hg st | ||||
A bar | ||||
$ hg forget bar | ||||
$ rm bar | ||||
Locally removed file is allowed | ||||
$ hg up -qC 3 | ||||
Martin von Zweigbergk
|
r31174 | $ hg rm foo | ||
Martin von Zweigbergk
|
r31168 | $ hg up -q 4 | ||
File conflict is not allowed | ||||
$ hg up -qC 3 | ||||
$ echo dirty >> a | ||||
$ hg up -q 4 | ||||
Martin von Zweigbergk
|
r31175 | abort: conflicting changes | ||
(commit or update --clean to discard changes) | ||||
Martin von Zweigbergk
|
r47146 | [20] | ||
Martin von Zweigbergk
|
r31168 | $ hg up -m 4 | ||
merging a | ||||
warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
[1] | ||||
$ rm a.orig | ||||
Rodrigo Damazio Bovendorp
|
r44336 | $ hg status | ||
M a | ||||
Rodrigo Damazio Bovendorp
|
r44391 | # Unresolved merge conflicts: | ||
# | ||||
# a | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
Rodrigo Damazio Bovendorp
|
r44336 | $ hg resolve -l | ||
U a | ||||
Martin von Zweigbergk
|
r31168 | |||
Martin von Zweigbergk
|
r44888 | Try to make empty commit while there are conflicts | ||
$ hg revert -r . a | ||||
$ rm a.orig | ||||
$ hg ci -m empty | ||||
Martin von Zweigbergk
|
r44889 | abort: unresolved merge conflicts (see 'hg help resolve') | ||
Martin von Zweigbergk
|
r46528 | [20] | ||
Martin von Zweigbergk
|
r44888 | $ hg resolve -m a | ||
(no more unresolved files) | ||||
$ hg resolve -l | ||||
R a | ||||
$ hg ci -m empty | ||||
nothing changed | ||||
[1] | ||||
$ hg resolve -l | ||||
Martin von Zweigbergk
|
r31168 | Change/delete conflict is not allowed | ||
$ hg up -qC 3 | ||||
$ hg rm foo | ||||
$ hg up -q 4 | ||||
Martin von Zweigbergk
|
r31167 | Uses default value of "linear" when value is misspelled | ||
Augie Fackler
|
r34706 | $ echo 'update.check = linyar' >> .hg/hgrc | ||
Martin von Zweigbergk
|
r31167 | |||
$ revtest 'dirty cross' dirty 3 4 | ||||
abort: uncommitted changes | ||||
(commit or update --clean to discard changes) | ||||
parent=3 | ||||
M foo | ||||
Setup for later tests | ||||
$ revtest 'none dirty linear' dirty 1 2 -c | ||||
abort: uncommitted changes | ||||
parent=1 | ||||
M foo | ||||
FUJIWARA Katsunori
|
r28266 | $ cd .. | ||
Martin von Zweigbergk
|
r30900 | Test updating to null revision | ||
$ hg init null-repo | ||||
$ cd null-repo | ||||
$ echo a > a | ||||
$ hg add a | ||||
$ hg ci -m a | ||||
$ hg up -qC 0 | ||||
$ echo b > b | ||||
$ hg add b | ||||
$ hg up null | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg st | ||||
A b | ||||
$ hg up -q 0 | ||||
$ hg st | ||||
A b | ||||
$ hg up -qC null | ||||
$ hg st | ||||
? b | ||||
$ cd .. | ||||
FUJIWARA Katsunori
|
r28266 | Test updating with closed head | ||
--------------------------------------------------------------------- | ||||
$ hg clone -U -q b1 closed-heads | ||||
$ cd closed-heads | ||||
Test updating if at least one non-closed branch head exists | ||||
if on the closed branch head: | ||||
FUJIWARA Katsunori
|
r28385 | - update to "." | ||
- "updated to a closed branch head ...." message is displayed | ||||
FUJIWARA Katsunori
|
r28266 | - "N other heads for ...." message is displayed | ||
$ hg update -q -C 3 | ||||
$ hg commit --close-branch -m 6 | ||||
$ norevtest "on closed branch head" clean 6 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r28683 | no open descendant heads on branch "default", updating to a closed head | ||
timeless
|
r29964 | (committing will reopen the head, use 'hg heads .' to see 1 other heads) | ||
FUJIWARA Katsunori
|
r28385 | parent=6 | ||
if descendant non-closed branch head exists, and it is only one branch head: | ||||
- update to it, even if its revision is less than closed one | ||||
- "N other heads for ...." message isn't displayed | ||||
$ norevtest "non-closed 2 should be chosen" clean 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=2 | ||||
if all descendant branch heads are closed, but there is another branch head: | ||||
- update to the tipmost descendant head | ||||
- "updated to a closed branch head ...." message is displayed | ||||
- "N other heads for ...." message is displayed | ||||
$ norevtest "all descendant branch heads are closed" clean 3 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r28683 | no open descendant heads on branch "default", updating to a closed head | ||
timeless
|
r29964 | (committing will reopen the head, use 'hg heads .' to see 1 other heads) | ||
FUJIWARA Katsunori
|
r28266 | parent=6 | ||
Test updating if all branch heads are closed | ||||
if on the closed branch head: | ||||
FUJIWARA Katsunori
|
r28385 | - update to "." | ||
- "updated to a closed branch head ...." message is displayed | ||||
- "all heads of branch ...." message is displayed | ||||
FUJIWARA Katsunori
|
r28266 | |||
$ hg update -q -C 2 | ||||
$ hg commit --close-branch -m 7 | ||||
$ norevtest "all heads of branch default are closed" clean 6 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r28683 | no open descendant heads on branch "default", updating to a closed head | ||
(committing will reopen branch "default") | ||||
FUJIWARA Katsunori
|
r28266 | parent=6 | ||
FUJIWARA Katsunori
|
r28385 | if not on the closed branch head: | ||
- update to the tipmost descendant (closed) head | ||||
- "updated to a closed branch head ...." message is displayed | ||||
- "all heads of branch ...." message is displayed | ||||
$ norevtest "all heads of branch default are closed" clean 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r28683 | no open descendant heads on branch "default", updating to a closed head | ||
(committing will reopen branch "default") | ||||
FUJIWARA Katsunori
|
r28385 | parent=7 | ||
$ cd .. | ||||
Test updating if "default" branch doesn't exist and no revision is | ||||
checked out (= "default" is used as current branch) | ||||
$ hg init no-default-branch | ||||
$ cd no-default-branch | ||||
$ hg branch foobar | ||||
marked working directory as branch foobar | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ echo a > a | ||||
$ hg commit -m "#0" -A | ||||
adding a | ||||
$ echo 1 >> a | ||||
$ hg commit -m "#1" | ||||
$ hg update -q 0 | ||||
$ echo 3 >> a | ||||
$ hg commit -m "#2" | ||||
created new head | ||||
$ hg commit --close-branch -m "#3" | ||||
if there is at least one non-closed branch head: | ||||
- update to the tipmost branch head | ||||
$ norevtest "non-closed 1 should be chosen" clean null | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
parent=1 | ||||
if all branch heads are closed | ||||
- update to "tip" | ||||
- "updated to a closed branch head ...." message is displayed | ||||
- "all heads for branch "XXXX" are closed" message is displayed | ||||
$ hg update -q -C 1 | ||||
$ hg commit --close-branch -m "#4" | ||||
$ norevtest "all branches are closed" clean null | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
FUJIWARA Katsunori
|
r28683 | no open descendant heads on branch "foobar", updating to a closed head | ||
(committing will reopen branch "foobar") | ||||
FUJIWARA Katsunori
|
r28385 | parent=4 | ||
FUJIWARA Katsunori
|
r28266 | $ cd ../b1 | ||
Pierre-Yves David
|
r18985 | Test obsolescence behavior | ||
--------------------------------------------------------------------- | ||||
successors should be taken in account when checking head destination | ||||
$ cat << EOF >> $HGRCPATH | ||||
> [ui] | ||||
> logtemplate={rev}:{node|short} {desc|firstline} | ||||
Durham Goode
|
r22955 | > [experimental] | ||
Boris Feld
|
r34867 | > evolution.createmarkers=True | ||
Pierre-Yves David
|
r18985 | > EOF | ||
Test no-argument update to a successor of an obsoleted changeset | ||||
$ hg log -G | ||||
o 5:ff252e8273df 5 | ||||
| | ||||
o 4:d047485b3896 4 | ||||
| | ||||
| o 3:6efa171f091b 3 | ||||
| | | ||||
| | o 2:bd10386d478c 2 | ||||
| |/ | ||||
| @ 1:0786582aa4b1 1 | ||||
|/ | ||||
o 0:60829823a42a 0 | ||||
Sean Farley
|
r20107 | $ hg book bm -r 3 | ||
Pierre-Yves David
|
r18985 | $ hg status | ||
M foo | ||||
We add simple obsolescence marker between 3 and 4 (indirect successors) | ||||
$ hg id --debug -i -r 3 | ||||
6efa171f091b00a3c35edc15d48c52a498929953 | ||||
$ hg id --debug -i -r 4 | ||||
d047485b3896813b2a624e86201983520f003206 | ||||
$ hg debugobsolete 6efa171f091b00a3c35edc15d48c52a498929953 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | ||||
r43163 | 1 new obsolescence markers | |||
Boris Feld
|
r33542 | obsoleted 1 changesets | ||
Pierre-Yves David
|
r18985 | $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d047485b3896813b2a624e86201983520f003206 | ||
r43163 | 1 new obsolescence markers | |||
Pierre-Yves David
|
r18985 | |||
Sean Farley
|
r20107 | Test that 5 is detected as a valid destination from 3 and also accepts moving | ||
the bookmark (issue4015) | ||||
Pierre-Yves David
|
r18985 | $ hg up --quiet --hidden 3 | ||
$ hg up 5 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Sean Farley
|
r20107 | $ hg book bm | ||
moving bookmark 'bm' forward from 6efa171f091b | ||||
$ hg bookmarks | ||||
* bm 5:ff252e8273df | ||||
Pierre-Yves David
|
r18985 | |||
Martin von Zweigbergk
|
r37939 | Test that we abort before we warn about the hidden commit if the working | ||
directory is dirty | ||||
$ echo conflict > a | ||||
$ hg up --hidden 3 | ||||
abort: uncommitted changes | ||||
(commit or update --clean to discard changes) | ||||
[255] | ||||
Test that we still warn also when there are conflicts | ||||
$ hg up -m --hidden 3 | ||||
merging a | ||||
warning: conflicts while merging a! (edit, then use 'hg resolve --mark') | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
(leaving bookmark bm) | ||||
updated to hidden changeset 6efa171f091b | ||||
(hidden revision '6efa171f091b' was rewritten as: d047485b3896) | ||||
[1] | ||||
Rodrigo Damazio Bovendorp
|
r44336 | |||
Test that statuses are reported properly before and after merge resolution. | ||||
$ rm a.orig | ||||
$ hg resolve -l | ||||
U a | ||||
$ hg status | ||||
M a | ||||
M foo | ||||
Rodrigo Damazio Bovendorp
|
r44391 | # Unresolved merge conflicts: | ||
# | ||||
# a | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
Rodrigo Damazio Bovendorp
|
r44336 | |||
Martin von Zweigbergk
|
r37939 | $ hg revert -r . a | ||
Rodrigo Damazio Bovendorp
|
r44336 | |||
$ rm a.orig | ||||
$ hg resolve -l | ||||
U a | ||||
$ hg status | ||||
M foo | ||||
Rodrigo Damazio Bovendorp
|
r44391 | # Unresolved merge conflicts: | ||
# | ||||
# a | ||||
# | ||||
# To mark files as resolved: hg resolve --mark FILE | ||||
Martin von Zweigbergk
|
r50351 | $ hg status -T '{status} {path} - {relpath(path)}\n' | ||
M foo - foo | ||||
a - a | ||||
Rodrigo Damazio Bovendorp
|
r44336 | $ hg status -Tjson | ||
[ | ||||
{ | ||||
"itemtype": "file", | ||||
"path": "foo", | ||||
"status": "M" | ||||
Rodrigo Damazio Bovendorp
|
r44392 | }, | ||
{ | ||||
"itemtype": "file", | ||||
"path": "a", | ||||
"unresolved": true | ||||
Rodrigo Damazio Bovendorp
|
r44336 | } | ||
] | ||||
Martin von Zweigbergk
|
r37939 | $ hg resolve -m | ||
(no more unresolved files) | ||||
Rodrigo Damazio Bovendorp
|
r44336 | $ hg resolve -l | ||
R a | ||||
$ hg status | ||||
M foo | ||||
Rodrigo Damazio Bovendorp
|
r44391 | # No unresolved merge conflicts. | ||
Rodrigo Damazio Bovendorp
|
r44336 | $ hg status -Tjson | ||
[ | ||||
{ | ||||
"itemtype": "file", | ||||
"path": "foo", | ||||
"status": "M" | ||||
} | ||||
] | ||||
Sean Farley
|
r20281 | Test that 4 is detected as the no-argument destination from 3 and also moves | ||
the bookmark with it | ||||
Sean Farley
|
r20280 | $ hg up --quiet 0 # we should be able to update to 3 directly | ||
Rodrigo Damazio Bovendorp
|
r44391 | $ hg status | ||
M foo | ||||
Sean Farley
|
r20280 | $ hg up --quiet --hidden 3 # but not implemented yet. | ||
Martin von Zweigbergk
|
r37939 | updated to hidden changeset 6efa171f091b | ||
Boris Feld
|
r35729 | (hidden revision '6efa171f091b' was rewritten as: d047485b3896) | ||
Sean Farley
|
r20281 | $ hg book -f bm | ||
Sean Farley
|
r20280 | $ hg up | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Sean Farley
|
r20281 | updating bookmark bm | ||
$ hg book | ||||
* bm 4:d047485b3896 | ||||
Sean Farley
|
r20280 | |||
Pierre-Yves David
|
r18985 | Test that 5 is detected as a valid destination from 1 | ||
$ hg up --quiet 0 # we should be able to update to 3 directly | ||||
$ hg up --quiet --hidden 3 # but not implemented yet. | ||||
Martin von Zweigbergk
|
r37939 | updated to hidden changeset 6efa171f091b | ||
Boris Feld
|
r35729 | (hidden revision '6efa171f091b' was rewritten as: d047485b3896) | ||
Pierre-Yves David
|
r18985 | $ hg up 5 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Test that 5 is not detected as a valid destination from 2 | ||||
$ hg up --quiet 0 | ||||
$ hg up --quiet 2 | ||||
$ hg up 5 | ||||
Siddharth Agarwal
|
r19799 | abort: uncommitted changes | ||
(commit or update --clean to discard changes) | ||||
Pierre-Yves David
|
r18985 | [255] | ||
Sean Farley
|
r20280 | |||
r49538 | Test that we update to the closest non-obsolete ancestor when updating from a | |||
pruned changeset (i.e. that has no successors) | ||||
Sean Farley
|
r20280 | $ hg id --debug -r 2 | ||
bd10386d478cd5a9faf2e604114c8e6da62d3889 | ||||
$ hg up --quiet 0 | ||||
$ hg up --quiet 2 | ||||
$ hg debugobsolete bd10386d478cd5a9faf2e604114c8e6da62d3889 | ||||
r43163 | 1 new obsolescence markers | |||
Boris Feld
|
r33542 | obsoleted 1 changesets | ||
r49538 | $ hg log -r '_destupdate()' | |||
1:0786582aa4b1 1 (no-eol) | ||||
Sean Farley
|
r20280 | $ hg up | ||
r49538 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
Augie Fackler
|
r29947 | |||
Test that boolean flags allow --no-flag specification to override [defaults] | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [defaults] | ||||
> update = --check | ||||
> EOF | ||||
r49538 | $ hg co 1 | |||
Augie Fackler
|
r29947 | abort: uncommitted changes | ||
Martin von Zweigbergk
|
r46444 | [20] | ||
r49538 | $ hg co --no-check 1 | |||
Augie Fackler
|
r29947 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||