##// 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:

r32698:1b5c61d3 default
r33051:15a79ac8 default
Show More
test-rebase-pull.t
452 lines | 8.4 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-pull.t
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 > histedit=
Adrian Buehlmann
tests: unify test-rebase*
r12608 >
> [alias]
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
> EOF
$ hg init a
$ cd a
$ echo C1 > C1
$ hg ci -Am C1
adding C1
$ echo C2 > C2
$ hg ci -Am C2
adding C2
$ cd ..
$ hg clone a b
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg clone a c
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd b
$ echo L1 > L1
$ hg ci -Am L1
adding L1
$ cd ../a
$ echo R1 > R1
$ hg ci -Am R1
adding R1
$ cd ../b
Now b has one revision to be pulled from a:
$ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:ff8d69a621f9 "L1"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/b/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog
@ 3: 'L1'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Re-run:
$ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 Abort pull early if working dir is not clean:
$ echo L1-mod > L1
$ hg pull --rebase
abort: uncommitted changes
Valters Vingolds
rebase: provide detailed hint to abort message if working dir is not clean...
r30755 (cannot pull with rebase: please commit or shelve your changes first)
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 [255]
$ hg update --clean --quiet
Abort pull early if another operation (histedit) is in progress:
$ hg histedit . -q --commands - << EOF
> edit d80cc2da061e histedit: generate unfinished state
> EOF
Editing (d80cc2da061e), you may commit or record as needed now.
(hg histedit --continue to resume)
[1]
$ hg pull --rebase
abort: histedit in progress
(use 'hg histedit --continue' or 'hg histedit --abort')
[255]
$ hg histedit --abort --quiet
Adrian Buehlmann
tests: unify test-rebase*
r12608
Valters Vingolds
rebase: provide detailed hint to abort message if working dir is not clean...
r30755 Abort pull early with pending uncommitted merge:
$ cd ..
$ hg clone --noupdate c d
$ cd d
$ hg tglog
o 1: 'C2'
|
o 0: 'C1'
$ hg update --quiet 0
$ echo M1 > M1
$ hg commit --quiet -Am M1
$ hg update --quiet 1
$ hg merge 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg pull --rebase
abort: outstanding uncommitted merge
(cannot pull with rebase: please commit or shelve your changes first)
[255]
$ hg update --clean --quiet
Abort pull early with unclean subrepo:
$ echo s = s > .hgsub
$ hg add .hgsub
$ hg init s
$ hg commit -m "generated a subrepo"
$ echo a > s/a
$ hg -R s add s/a
$ hg pull --rebase
abort: uncommitted changes in subrepository 's'
(cannot pull with rebase: please commit or shelve your changes first)
[255]
Adrian Buehlmann
tests: unify test-rebase*
r12608 Invoke pull --rebase and nothing to rebase:
$ cd ../c
Matt Mackall
rebase: move bookmarks as needed with pull --rebase (issue3285)
r16228 $ hg book norebase
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 nothing to rebase - updating instead
Adrian Buehlmann
tests: unify test-rebase*
r12608 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
rebase: move bookmarks as needed with pull --rebase (issue3285)
r16228 updating bookmark norebase
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog -l 1
@ 2: 'R1'
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
Adrian Buehlmann
tests: unify test-rebase*
r12608
pull --rebase --update should ignore --update:
$ hg pull --rebase --update
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
pull --rebase doesn't update if nothing has been pulled:
$ hg up -q 1
$ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
$ hg tglog -l 1
o 2: 'R1'
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
Adrian Buehlmann
tests: unify test-rebase*
r12608
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988
pull --rebase works when a specific revision is pulled (issue3619)
$ cd a
$ hg tglog
@ 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
$ echo R2 > R2
$ hg ci -Am R2
adding R2
$ echo R3 > R3
$ hg ci -Am R3
adding R3
$ cd ../c
$ hg tglog
o 2: 'R1'
|
@ 1: 'C2'
|
o 0: 'C1'
$ echo L1 > L1
$ hg ci -Am L1
adding L1
created new head
$ hg pull --rev tip --rebase
Kevin Bullock
tests: fix some slash-based Windows failures
r18108 pulling from $TESTTMP/a (glob)
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988 searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 3:ff8d69a621f9 "L1"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/c/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988 $ hg tglog
@ 5: 'L1'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 pull --rebase works with bundle2 turned on
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 $ cd ../a
$ echo R4 > R4
$ hg ci -Am R4
adding R4
$ hg tglog
@ 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
$ cd ../c
Pierre-Yves David
strip: use bundle2 + cg2 by default when repository use general delta...
r26423 $ hg pull --rebase
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 pulling from $TESTTMP/a (glob)
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
rebasing 5:518d153c0ba3 "L1"
saved backup bundle to $TESTTMP/c/.hg/strip-backup/518d153c0ba3-73407f14-backup.hg (glob)
$ hg tglog
@ 6: 'L1'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Pierre-Yves David
rebase: 'hg pull --rebase' now update only if there was nothing to rebase...
r28117
pull --rebase only update if there is nothing to rebase
$ cd ../a
$ echo R5 > R5
$ hg ci -Am R5
adding R5
$ hg tglog
@ 6: 'R5'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
$ cd ../c
$ echo L2 > L2
$ hg ci -Am L2
adding L2
$ hg up 'desc(L1)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg pull --rebase
pulling from $TESTTMP/a (glob)
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
rebasing 6:0d0727eb7ce0 "L1"
rebasing 7:c1f58876e3bf "L2"
saved backup bundle to $TESTTMP/c/.hg/strip-backup/0d0727eb7ce0-ef61ccb2-backup.hg (glob)
$ hg tglog
o 8: 'L2'
|
@ 7: 'L1'
|
o 6: 'R5'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118
pull --rebase update (no rebase) use proper update:
- warn about other head.
$ cd ../a
$ echo R6 > R6
$ hg ci -Am R6
adding R6
$ cd ../c
$ hg up 'desc(R5)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg pull --rebase
pulling from $TESTTMP/a (glob)
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 nothing to rebase - updating instead
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pulkit Goyal
update: show the commit to which we updated in case of multiple heads (BC)...
r32698 updated to "65bc164c1d9b: R6"
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118 1 other heads for branch "default"
$ hg tglog
@ 9: 'R6'
|
| o 8: 'L2'
| |
| o 7: 'L1'
|/
o 6: 'R5'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Pierre-Yves David
rebase: restrict rebase destination to the pulled set (issue5214)...
r29044
Multiple pre-existing heads on the branch
-----------------------------------------
Pull bring content, but nothing on the current branch, we should not consider
pre-existing heads.
$ cd ../a
$ hg branch unrelatedbranch
marked working directory as branch unrelatedbranch
(branches are permanent and global, did you want a bookmark?)
$ echo B1 > B1
$ hg commit -Am B1
adding B1
$ cd ../c
$ hg up 'desc(L2)'
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg pull --rebase
pulling from $TESTTMP/a (glob)
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
nothing to rebase
There is two local heads and we pull a third one.
The second local head should not confuse the `hg pull rebase`.
$ hg up 'desc(R6)'
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo M1 > M1
$ hg commit -Am M1
adding M1
$ cd ../a
$ hg up 'desc(R6)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo R7 > R7
$ hg commit -Am R7
adding R7
$ cd ../c
$ hg up 'desc(L2)'
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg pull --rebase
pulling from $TESTTMP/a (glob)
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
rebasing 7:864e0a2d2614 "L1"
rebasing 8:6dc0ea5dcf55 "L2"
saved backup bundle to $TESTTMP/c/.hg/strip-backup/864e0a2d2614-2f72c89c-backup.hg (glob)
$ hg tglog
@ 12: 'L2'
|
o 11: 'L1'
|
o 10: 'R7'
|
| o 9: 'M1'
|/
| o 8: 'B1' unrelatedbranch
|/
o 7: 'R6'
|
o 6: 'R5'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'