bookmarks: calculate visibility exceptions only once
In the loop "for mark in names", the rev is same in each iteration, so it does
not makes sense to call unhidehashlikerevs multiple times. Thanks to Yuya for
spotting this.
--- a/mercurial/bookmarks.py Sun Dec 10 18:25:33 2017 +0900
+++ b/mercurial/bookmarks.py Mon Jan 15 00:16:11 2018 +0530
@@ -830,7 +830,12 @@
cur = repo.changectx('.').node()
newact = None
changes = []
- hiddenrevs = set()
+ hiddenrev = None
+
+ # unhide revs if any
+ if rev:
+ repo = scmutil.unhidehashlikerevs(repo, [rev], 'nowarn')
+
for mark in names:
mark = checkformat(repo, mark)
if newact is None:
@@ -840,17 +845,16 @@
return
tgt = cur
if rev:
- repo = scmutil.unhidehashlikerevs(repo, [rev], 'nowarn')
ctx = scmutil.revsingle(repo, rev)
if ctx.hidden():
- hiddenrevs.add(ctx.hex()[:12])
+ hiddenrev = ctx.hex()[:12]
tgt = ctx.node()
for bm in marks.checkconflict(mark, force, tgt):
changes.append((bm, None))
changes.append((mark, tgt))
- if hiddenrevs:
- repo.ui.warn(_("bookmarking hidden changeset %s\n") %
- ', '.join(hiddenrevs))
+
+ if hiddenrev:
+ repo.ui.warn(_("bookmarking hidden changeset %s\n") % hiddenrev)
marks.applychanges(repo, tr, changes)
if not inactive and cur == marks[newact] and not rev:
activate(repo, newact)