diff --git a/mercurial/repoview.py b/mercurial/repoview.py
index d66862b87ae69a92b233b88a212f79c4abcc1327_bWVyY3VyaWFsL3JlcG92aWV3LnB5..91d28bd0e04e2b4c23c2f5e5ddbe722a1558b094_bWVyY3VyaWFsL3JlcG92aWV3LnB5 100644
--- a/mercurial/repoview.py
+++ b/mercurial/repoview.py
@@ -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()
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
index d66862b87ae69a92b233b88a212f79c4abcc1327_dGVzdHMvdGVzdC1vYnNvbGV0ZS50..91d28bd0e04e2b4c23c2f5e5ddbe722a1558b094_dGVzdHMvdGVzdC1vYnNvbGV0ZS50 100644
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -884,4 +884,5 @@
   no changes found
   [1]
 
+Test that a local tag blocks a changeset from being hidden
 
@@ -887,1 +888,16 @@
 
+  $ 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
+