From f4245770a39f3f23989f960ff238e988f004b280 Mon Sep 17 00:00:00 2001 From: Mark Thomas Date: Mon, 15 Apr 2019 05:40:55 -0700 Subject: [PATCH] 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 --- edenscm/hgext/shelve.py | 14 ++++++++++++++ tests/test-shelve.t | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/edenscm/hgext/shelve.py b/edenscm/hgext/shelve.py index 491fda3f0b..da072c1794 100644 --- a/edenscm/hgext/shelve.py +++ b/edenscm/hgext/shelve.py @@ -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 "" diff --git a/tests/test-shelve.t b/tests/test-shelve.t index 62aa3492d7..6542976414 100644 --- a/tests/test-shelve.t +++ b/tests/test-shelve.t @@ -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