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

r26614:ef1eb6df default
r33051:15a79ac8 default
Show More
test-bookmarks-rebase.t
105 lines | 2.5 KiB | text/troff | Tads3Lexer
/ tests / test-bookmarks-rebase.t
$ echo "[extensions]" >> $HGRCPATH
$ echo "rebase=" >> $HGRCPATH
initialize repository
$ hg init
$ echo 'a' > a
$ hg ci -A -m "0"
adding a
$ echo 'b' > b
$ hg ci -A -m "1"
adding b
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo 'c' > c
$ hg ci -A -m "2"
adding c
created new head
$ echo 'd' > d
$ hg ci -A -m "3"
adding d
$ hg bookmark -r 1 one
$ hg bookmark -r 3 two
$ hg up -q two
bookmark list
$ hg bookmark
one 1:925d80f479bb
* two 3:2ae46b1d99a7
rebase
$ hg rebase -s two -d one
rebasing 3:2ae46b1d99a7 "3" (tip two)
saved backup bundle to $TESTTMP/.hg/strip-backup/2ae46b1d99a7-e6b057bc-backup.hg (glob)
$ hg log
changeset: 3:42e5ed2cdcf4
bookmark: two
tag: tip
parent: 1:925d80f479bb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 3
changeset: 2:db815d6d32e6
parent: 0:f7b1eb17ad24
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 2
changeset: 1:925d80f479bb
bookmark: one
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 1
changeset: 0:f7b1eb17ad24
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 0
aborted rebase should restore active bookmark.
$ hg up 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(leaving bookmark two)
$ echo 'e' > d
$ hg ci -A -m "4"
adding d
created new head
$ hg bookmark three
$ hg rebase -s three -d two
rebasing 4:dd7c838e8362 "4" (tip three)
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
$ hg rebase --abort
rebase aborted
$ hg bookmark
one 1:925d80f479bb
* three 4:dd7c838e8362
two 3:42e5ed2cdcf4
after aborted rebase, restoring a bookmark that has been removed should not fail
$ hg rebase -s three -d two
rebasing 4:dd7c838e8362 "4" (tip three)
merging d
warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
$ hg bookmark -d three
$ hg rebase --abort
rebase aborted
$ hg bookmark
one 1:925d80f479bb
two 3:42e5ed2cdcf4