[PATCH 25 of 27 clfilter V2] clfilter: enforce hidden changeset globally
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Mon Oct 8 16:38:16 CDT 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1349717972 -7200
# Node ID 7e01da407798085edec102d22961e3bd303b7ee0
# Parent fe75772948f780687aab08859b6fd63dd84ba9d4
clfilter: enforce hidden changeset globally
The dispatch code now enables filtering of "hidden" changesets globally. The
filter is installed before command and extension invocation. The `--hidden`
switch is now global and disables this filtering for any command.
Code in log dedicated to changeset exclusion is removed as this global filtering
has the same effect.
diff --git a/hgext/graphlog.py b/hgext/graphlog.py
--- a/hgext/graphlog.py
+++ b/hgext/graphlog.py
@@ -39,7 +39,6 @@
_('show changesets within the given named branch'), _('BRANCH')),
('P', 'prune', [],
_('do not display revision or any of its ancestors'), _('REV')),
- ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')),
] + commands.logopts + commands.walkopts,
_('[OPTION]... [FILE]'))
def graphlog(ui, repo, *pats, **opts):
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1403,12 +1403,7 @@
if expr:
matcher = revset.match(repo.ui, expr)
revs = increasingrevs(repo, revs, matcher)
- if not opts.get('hidden'):
- # --hidden is still experimental and not worth a dedicated revset
- # yet. Fortunately, filtering revision number is fast.
- revs = (r for r in revs if r not in repo.hiddenrevs)
- else:
- revs = iter(revs)
+ revs = iter(revs)
return revs, expr, filematcher
def displaygraph(ui, dag, displayer, showparents, edgefn, getrenamed=None,
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -49,6 +49,7 @@
('', 'profile', None, _('print command execution profile')),
('', 'version', None, _('output version information and exit')),
('h', 'help', None, _('display help and exit')),
+ ('', 'hidden', False, _('consider hidden changesets')),
]
dryrunopts = [('n', 'dry-run', None,
@@ -3982,7 +3983,6 @@
_('show changesets within the given named branch'), _('BRANCH')),
('P', 'prune', [],
_('do not display revision or any of its ancestors'), _('REV')),
- ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')),
] + logopts + walkopts,
_('[OPTION]... [FILE]'))
def log(ui, repo, *pats, **opts):
@@ -4098,8 +4098,6 @@
return
if opts.get('branch') and ctx.branch() not in opts['branch']:
return
- if not opts.get('hidden') and ctx.hidden():
- return
if df and not df(ctx.date()[0]):
return
diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
--- a/mercurial/dispatch.py
+++ b/mercurial/dispatch.py
@@ -710,6 +710,10 @@
repo = hg.repository(ui, path=path)
if not repo.local():
raise util.Abort(_("repository '%s' is not local") % path)
+ if not options['hidden']:
+ repo = repo.filtered('hidden')
+ else:
+ repo = repo.unfiltered()
repo.ui.setconfig("bundle", "mainreporoot", repo.root)
except error.RequirementError:
raise
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -58,6 +58,14 @@
return wrapper
# function to compute filtered set
+
+def computehidden(repo):
+ """compute the set of hidden revision to filter
+
+ During most operation hidden should be filtered."""
+ assert not repo.changelog.filteredrevs
+ return set(repo.revs('hidden()'))
+
def computeunserved(repo):
"""compute the set of revision that should be filtered when used a server
@@ -65,7 +73,8 @@
assert not repo.changelog.filteredrevs
return frozenset(repo.revs('hidden() + secret()'))
-computefiltered = {'unserved': computeunserved}
+computefiltered = {'unserved': computeunserved,
+ 'hidden': computehidden}
def _filteredrevs(repo, filtername):
"""returns set of filtered revision for this filter name"""
diff --git a/tests/test-debugcomplete.t b/tests/test-debugcomplete.t
--- a/tests/test-debugcomplete.t
+++ b/tests/test-debugcomplete.t
@@ -122,6 +122,7 @@
--encoding
--encodingmode
--help
+ --hidden
--noninteractive
--profile
--quiet
@@ -152,6 +153,7 @@
--encodingmode
--errorlog
--help
+ --hidden
--ipv6
--name
--noninteractive
@@ -199,7 +201,7 @@
export: output, switch-parent, rev, text, git, nodates
forget: include, exclude
init: ssh, remotecmd, insecure
- log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, hidden, patch, git, limit, no-merges, stat, graph, style, template, include, exclude
+ log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, patch, git, limit, no-merges, stat, graph, style, template, include, exclude
merge: force, rev, preview, tool
phase: public, draft, secret, force, rev
pull: update, force, rev, bookmark, branch, ssh, remotecmd, insecure
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -200,6 +200,7 @@
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
+ --hidden consider hidden changesets
[+] marked option can be specified multiple times
@@ -230,6 +231,7 @@
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
+ --hidden consider hidden changesets
[+] marked option can be specified multiple times
$ echo 'debugextension = !' >> $HGRCPATH
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -251,6 +251,7 @@
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
+ --hidden consider hidden changesets
[+] marked option can be specified multiple times
@@ -337,6 +338,7 @@
--profile print command execution profile
--version output version information and exit
-h --help display help and exit
+ --hidden consider hidden changesets
[+] marked option can be specified multiple times
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -123,7 +123,7 @@
Check that public changeset are not accounted as obsolete:
- $ hg phase --public 2
+ $ hg --hidden phase --public 2
$ hg --config 'extensions.graphlog=' glog
@ changeset: 5:5601fb93a350
| tag: tip
More information about the Mercurial-devel
mailing list