# HG changeset patch # User Sean Farley # Date 2014-03-19 01:10:33 # Node ID 91d28bd0e04e2b4c23c2f5e5ddbe722a1558b094 # Parent d66862b87ae69a92b233b88a212f79c4abcc1327 repoview: add non-global tags to candidate list for blocking hidden changesets Previously, only bookmarks would be considered for blocking a changeset from being hidden. Now, we also consider non-global tags. This is helpful if we have local tags that might be hard to find once they are hidden, or tag that are added by extensions (e.g. hggit or remotebranches). diff --git a/mercurial/repoview.py b/mercurial/repoview.py --- a/mercurial/repoview.py +++ b/mercurial/repoview.py @@ -35,6 +35,9 @@ def computehidden(repo): blockers.append(par.rev()) for bm in repo._bookmarks.values(): blockers.append(repo[bm].rev()) + tags = [n for t, n in repo.tags().iteritems() + if (repo.tagtype(t) and repo.tagtype(t) != 'global')] + blockers.extend(repo[t].rev() for t in tags) blocked = cl.ancestors(blockers, inclusive=True) return frozenset(r for r in hideable if r not in blocked) return frozenset() diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -884,4 +884,20 @@ This test issue 3814 no changes found [1] +Test that a local tag blocks a changeset from being hidden + $ hg tag -l visible -r 0 --hidden + $ hg log -G + @ changeset: 2:3816541e5485 + tag: tip + parent: -1:000000000000 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: A + + x changeset: 0:193e9254ce7e + tag: visible + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: A +