changeset 20807:91d28bd0e04e

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).
author Sean Farley <sean.michael.farley@gmail.com>
date Tue, 18 Mar 2014 20:10:33 -0500
parents d66862b87ae6
children 4c9130c7a29f
files mercurial/repoview.py tests/test-obsolete.t
diffstat 2 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/repoview.py	Thu Mar 13 16:05:06 2014 -0700
+++ b/mercurial/repoview.py	Tue Mar 18 20:10:33 2014 -0500
@@ -35,6 +35,9 @@
             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()
--- a/tests/test-obsolete.t	Thu Mar 13 16:05:06 2014 -0700
+++ b/tests/test-obsolete.t	Tue Mar 18 20:10:33 2014 -0500
@@ -884,4 +884,20 @@
   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
+