shelve: add shelvename template keyword

Summary:
Add `shelvename` template keyword, which expands to the name of the shelve for
commits that contain shelves.

Reviewed By: farnz

Differential Revision: D14932985

fbshipit-source-id: cddebd2dbc6454f7c61ed296f37822179da8a2de
This commit is contained in:
Mark Thomas 2019-04-15 05:40:55 -07:00 committed by Facebook Github Bot
parent 7e2b3c256f
commit f4245770a3
2 changed files with 20 additions and 0 deletions

View File

@ -1311,3 +1311,17 @@ def shelved(repo, subset, x):
nodes = map(lambda x: nodemod.hex(repo[x].node()), nodes)
# returns intersection with shelved commits (including hidden)
return subset & repo.revs("%ls", nodes)
templatekeyword = registrar.templatekeyword()
@templatekeyword("shelvename")
def shelvename(repo, ctx, templ, **args):
"""String. The name of the shelved commit that this commit contains."""
node = ctx.node()
for filename in listshelvesfiles(repo):
shelve = shelvedfile(repo, filename, "oshelve")
if shelve.exists() and nodemod.bin(shelve.readobsshelveinfo()["node"]) == node:
return shelve.name
return ""

View File

@ -1275,6 +1275,10 @@ For this test enabled shelve extension is enough, and it is enabled at the top o
shelved as default-02
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ testshelvedcount 3
$ hg log --hidden -r "shelved()" --template "{node|short} {shelvename}\n"
d7a61836580c default
9dcce8f0ff7d default-01
225e1bca0190 default-02
$ hg unshelve > /dev/null
$ testshelvedcount 2
$ hg unshelve > /dev/null
@ -1345,6 +1349,8 @@ Test interrupted shelve - this should not lose work
$ hg shelve --list
default * shelve changes to: commit1 (glob)
$ hg log --hidden -r tip -T '{node|short} "{shelvename}" "{desc}"\n'
f70d92a087e8 "default" "shelve changes to: commit1"
$ hg unshelve
unshelving change 'default'
$ cat file2