mercurial/commands.py
changeset 39989 c9026e9297e3
parent 39932 e743907d0932
child 39990 a91398dc73ab
--- a/mercurial/commands.py	Wed Oct 03 13:59:19 2018 +0300
+++ b/mercurial/commands.py	Mon Oct 01 09:58:42 2018 -0400
@@ -3023,6 +3023,7 @@
             output = [hexrev]
         fm.data(id=hexrev)
 
+        @util.cachefunc
         def getbms():
             bms = []
 
@@ -3033,17 +3034,17 @@
 
             return sorted(bms)
 
-        bms = getbms()
         if bookmarks:
-            output.extend(bms)
+            output.extend(getbms())
         elif default and not ui.quiet:
             # multiple bookmarks for a single parent separated by '/'
-            bm = '/'.join(bms)
+            bm = '/'.join(getbms())
             if bm:
                 output.append(bm)
 
         fm.data(node=hex(remoterev))
-        fm.data(bookmarks=fm.formatlist(bms, name='bookmark'))
+        if 'bookmarks' in fm.datahint():
+            fm.data(bookmarks=fm.formatlist(getbms(), name='bookmark'))
     else:
         if rev:
             repo = scmutil.unhidehashlikerevs(repo, [rev], 'nowarn')