##// END OF EJS Templates
identify: add template support...
identify: add template support This is based on a patch proposed last year by Mathias De Maré[1], with a few changes. - Tags and bookmarks are now formatted lists, for more flexible queries. - The templater is populated whether or not [-nibtB] is specified. (Plain output is unchanged.) This seems more consistent with other templated commands. - The 'id' property is a string, instead of a list. - The parents of 'wdir()' have their own list of attributes. I left 'id' as a string because it seems very useful for generating version info. It's also a bit strange because the value and meaning changes depending on whether or not --debug is passed (short vs full hash), whether the revision is a merge or not (one hash or two, separated by a '+'), the working directory or not (node vs p1node), and local or not (remote defaults to tip, and never has '+'). The equivalent string built with {rev} seems much less useful, and I couldn't think of a reasonable name, so I left it out. The discussion seemed to be pointing towards having a list of nodes, with more than one entry for a merge. It seems simpler to give the nodes a name, and use {node} for the actual commit probed, especially now that there is a virtual node for 'wdir()'. Yuya mentioned using fm.nested() in that thread, so I did for the parent nodes. I'm not sure if the plan is to fill in all of the context attributes in these items, or if these nested items should simply be made {p1node} and {p1rev}. I used ':' as the tag separator for consistency with {tags} in the log templater. Likewise, bookmarks are separated by a space for consistency with the corresponding log template. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-August/087039.html

File last commit:

r31380:65d93d71 default
r33051:15a79ac8 default
Show More
test-rebase-named-branches.t
409 lines | 7.7 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-named-branches.t
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 $ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
>
Pierre-Yves David
phases: prevent rebase to rebase immutable changeset.
r15742 > [phases]
> publish=False
>
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 > [alias]
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
> EOF
$ hg init a
$ cd a
Thomas Arendsen Hein
tests: make tests work if directory contains special characters...
r16350 $ hg unbundle "$TESTDIR/bundles/rebase.hg"
Nicolas Dumazet
tests: introduce a rebase bundle to use with rebase tests...
r14118 adding changesets
adding manifests
adding file changes
Nicolas Dumazet
tests: upgrade bundles/rebase.hg to support test-rebase-collapse...
r14119 added 8 changesets with 7 changes to 7 files (+2 heads)
Nicolas Dumazet
tests: introduce a rebase bundle to use with rebase tests...
r14118 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg up tip
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 $ cd ..
$ hg clone -q -u . a a1
$ cd a1
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 $ hg update 3
3 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg branch dev-one
marked working directory as branch dev-one
(branches are permanent and global, did you want a bookmark?)
$ hg ci -m 'dev-one named branch'
$ hg update 7
2 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ hg branch dev-two
marked working directory as branch dev-two
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733
$ echo x > x
$ hg add x
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 $ hg ci -m 'dev-two named branch'
$ hg tglog
@ 9: 'dev-two named branch' dev-two
|
| o 8: 'dev-one named branch' dev-one
| |
o | 7: 'H'
| |
+---o 6: 'G'
| | |
o | | 5: 'F'
| | |
+---o 4: 'E'
| |
| o 3: 'D'
| |
| o 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'
Branch name containing a dash (issue3181)
$ hg rebase -b dev-two -d dev-one --keepbranches
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:24b6387c8c8c "F"
rebasing 6:eea13746799a "G"
rebasing 7:02de42196ebe "H"
rebasing 9:cb039b7cae8e "dev-two named branch" (tip)
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/24b6387c8c8c-24cb8001-backup.hg (glob)
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800
$ hg tglog
@ 9: 'dev-two named branch' dev-two
|
o 8: 'H'
|
| o 7: 'G'
|/|
o | 6: 'F'
| |
o | 5: 'dev-one named branch' dev-one
| |
| o 4: 'E'
| |
o | 3: 'D'
| |
o | 2: 'C'
| |
o | 1: 'B'
|/
o 0: 'A'
$ hg rebase -s dev-one -d 0 --keepbranches
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:643fc9128048 "dev-one named branch"
rebasing 6:24de4aff8e28 "F"
rebasing 7:4b988a958030 "G"
rebasing 8:31d0e4ba75e6 "H"
rebasing 9:9e70cd31750f "dev-two named branch" (tip)
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/643fc9128048-c4ee9ef5-backup.hg (glob)
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733
$ hg tglog
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 @ 9: 'dev-two named branch' dev-two
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 8: 'H'
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o 7: 'G'
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 |/|
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o | 6: 'F'
| |
o | 5: 'dev-one named branch' dev-one
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 | |
| o 4: 'E'
|/
| o 3: 'D'
| |
| o 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'
$ hg update 3
3 files updated, 0 files merged, 3 files removed, 0 files unresolved
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 $ hg branch -f dev-one
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 marked working directory as branch dev-one
$ hg ci -m 'dev-one named branch'
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 created new head
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800
$ hg tglog
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 @ 10: 'dev-one named branch' dev-one
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o 9: 'dev-two named branch' dev-two
| |
| o 8: 'H'
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 | |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | | o 7: 'G'
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 | |/|
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o | 6: 'F'
| | |
| o | 5: 'dev-one named branch' dev-one
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 | | |
| | o 4: 'E'
| |/
o | 3: 'D'
| |
o | 2: 'C'
| |
o | 1: 'B'
|/
o 0: 'A'
$ hg rebase -b 'max(branch("dev-two"))' -d dev-one --keepbranches
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 rebasing 5:bc8139ee757c "dev-one named branch"
note: rebase of 5:bc8139ee757c created no changes to commit
rebasing 6:42aa3cf0fa7a "F"
rebasing 7:1a1e6f72ec38 "G"
rebasing 8:904590360559 "H"
rebasing 9:59c2e59309fe "dev-two named branch"
saved backup bundle to $TESTTMP/a1/.hg/strip-backup/bc8139ee757c-f11c1080-backup.hg (glob)
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800
$ hg tglog
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 o 9: 'dev-two named branch' dev-two
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 |
o 8: 'H'
|
| o 7: 'G'
|/|
o | 6: 'F'
| |
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 @ | 5: 'dev-one named branch' dev-one
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 | |
| o 4: 'E'
| |
o | 3: 'D'
| |
o | 2: 'C'
| |
o | 1: 'B'
|/
o 0: 'A'
$ hg rebase -s 'max(branch("dev-one"))' -d 0 --keepbranches
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 5:643fc9128048 "dev-one named branch"
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 rebasing 6:679f28760620 "F"
rebasing 7:549f007a9f5f "G"
rebasing 8:12b2bc666e20 "H"
rebasing 9:71325f8bc082 "dev-two named branch" (tip)
saved backup bundle to $TESTTMP/a1/.hg/strip-backup/643fc9128048-6cdd1a52-backup.hg (glob)
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800
$ hg tglog
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 9: 'dev-two named branch' dev-two
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 8: 'H'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o 7: 'G'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |/|
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o | 6: 'F'
| |
@ | 5: 'dev-one named branch' dev-one
Nicolas Dumazet
tests: upgrade bundles/rebase.hg to support test-rebase-collapse...
r14119 | |
| o 4: 'E'
|/
| o 3: 'D'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 | |
| o 2: 'C'
Nicolas Dumazet
tests: upgrade bundles/rebase.hg to support test-rebase-collapse...
r14119 | |
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 | o 1: 'B'
|/
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 0: 'A'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 $ hg up -r 0 > /dev/null
Nicolas Dumazet
tests: simplify test-rebase-named-branches...
r14120
Steven Brown
rebase: reinstate old-style rev spec support for the source and base (issue3181)...
r15800 Rebasing descendant onto ancestor across different named branches
Nicolas Dumazet
tests: simplify test-rebase-named-branches...
r14120
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 $ hg rebase -s 1 -d 9 --keepbranches
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 1:42ccdea3bb16 "B"
rebasing 2:5fddd98957c8 "C"
rebasing 3:32af7686d403 "D"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/42ccdea3bb16-3cb021d3-backup.hg (glob)
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733
$ hg tglog
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 9: 'D'
|
o 8: 'C'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 7: 'B'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 6: 'dev-two named branch' dev-two
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 5: 'H'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o 4: 'G'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |/|
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o | 3: 'F'
| |
o | 2: 'dev-one named branch' dev-one
Nicolas Dumazet
tests: upgrade bundles/rebase.hg to support test-rebase-collapse...
r14119 | |
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 | o 1: 'E'
Nicolas Dumazet
tests: upgrade bundles/rebase.hg to support test-rebase-collapse...
r14119 |/
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 @ 0: 'A'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 $ hg rebase -s 5 -d 6
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 abort: source is ancestor of destination
[255]
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 $ hg rebase -s 6 -d 5
rebasing 6:3944801ae4ea "dev-two named branch"
rebasing 7:3bdb949809d9 "B"
rebasing 8:a0d543090fa4 "C"
rebasing 9:e9f862ce8bad "D" (tip)
saved backup bundle to $TESTTMP/a1/.hg/strip-backup/3944801ae4ea-fb46ed74-backup.hg (glob)
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124
$ hg tglog
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 9: 'D'
|
o 8: 'C'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 7: 'B'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 6: 'dev-two named branch'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o 5: 'H'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 | o 4: 'G'
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 |/|
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 o | 3: 'F'
| |
o | 2: 'dev-one named branch' dev-one
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 | |
Nicolas Dumazet
tests: move rebase-keep-branch into rebase-named-branches...
r14124 | o 1: 'E'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 |/
Pierre-Yves David
rebase: preserve working directory parent (BC)...
r19925 @ 0: 'A'
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733
Mads Kiilerich
rebase: tell when reopening a closed branch head...
r21027
Reopen branch by rebase
$ hg up -qr3
$ hg branch -q b
$ hg ci -m 'create b'
$ hg ci -m 'close b' --close
$ hg rebase -b 8 -d b
timeless@mozdev.org
rebase: avoid losing branch commits with --keepbranch (issue4835)
r26360 reopening closed branch head 2b586e70108d
rebasing 5:8e279d293175 "H"
rebasing 6:c57724c84928 "dev-two named branch"
rebasing 7:160b0930ccc6 "B"
rebasing 8:810110211f50 "C"
rebasing 9:e522577ccdbd "D"
saved backup bundle to $TESTTMP/a1/.hg/strip-backup/8e279d293175-b023e27c-backup.hg (glob)
Mads Kiilerich
rebase: tell when reopening a closed branch head...
r21027
Stefano Tortarolo
rebase: allow for rebasing descendants onto ancestors on different named branches...
r13733 $ cd ..
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251
Rebase to other head on branch
Set up a case:
$ hg init case1
$ cd case1
$ touch f
$ hg ci -qAm0
$ hg branch -q b
$ echo >> f
$ hg ci -qAm 'b1'
$ hg up -qr -2
$ hg branch -qf b
$ hg ci -qm 'b2'
$ hg up -qr -3
$ hg branch -q c
$ hg ci -m 'c1'
$ hg tglog
@ 3: 'c1' c
|
| o 2: 'b2' b
|/
| o 1: 'b1' b
|/
o 0: '0'
$ hg clone -q . ../case2
rebase 'b2' to another lower branch head
$ hg up -qr 2
$ hg rebase
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 rebasing 2:792845bb77ee "b2"
note: rebase of 2:792845bb77ee created no changes to commit
saved backup bundle to $TESTTMP/case1/.hg/strip-backup/792845bb77ee-627120ee-backup.hg (glob)
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 $ hg tglog
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 o 2: 'c1' c
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 |
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 | @ 1: 'b1' b
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 |/
o 0: '0'
rebase 'b1' on top of the tip of the branch ('b2') - ignoring the tip branch ('c1')
$ cd ../case2
$ hg up -qr 1
$ hg rebase
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 1:40039acb7ca5 "b1"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/case2/.hg/strip-backup/40039acb7ca5-342b72d1-backup.hg (glob)
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 $ hg tglog
@ 3: 'b1' b
|
| o 2: 'c1' c
| |
o | 1: 'b2' b
|/
o 0: '0'
rebase 'c1' to the branch head 'c2' that is closed
$ hg branch -qf c
$ hg ci -qm 'c2 closed' --close
$ hg up -qr 2
$ hg tglog
Jordi Gutiérrez Hermoso
log: display closing-branch nodes as "_" (BC)...
r24216 _ 4: 'c2 closed' c
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 |
o 3: 'b1' b
|
| @ 2: 'c1' c
| |
o | 1: 'b2' b
|/
o 0: '0'
$ hg rebase
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 abort: branch 'c' has one head - please rebase to an explicit rev
(run 'hg heads' to see all heads)
[255]
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 $ hg tglog
Jordi Gutiérrez Hermoso
log: display closing-branch nodes as "_" (BC)...
r24216 _ 4: 'c2 closed' c
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 |
o 3: 'b1' b
|
| @ 2: 'c1' c
| |
o | 1: 'b2' b
|/
o 0: '0'
Mads Kiilerich
rebase: allow rebasing children of wd to wd if a new branch has been set (BC)...
r31380 $ hg up -cr 1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch x
marked working directory as branch x
$ hg rebase -r 3:: -d .
rebasing 3:76abc1c6f8c7 "b1"
rebasing 4:8427af5d86f2 "c2 closed" (tip)
note: rebase of 4:8427af5d86f2 created no changes to commit
saved backup bundle to $TESTTMP/case2/.hg/strip-backup/76abc1c6f8c7-cd698d13-backup.hg (glob)
$ hg tglog
o 3: 'b1' x
|
| o 2: 'c1' c
| |
@ | 1: 'b2' b
|/
o 0: '0'
Mads Kiilerich
tests: introduce test for rebasing on named branches with closed heads
r20251 $ cd ..