[PATCH 3 of 7 V4] clfilter: introduce a "unserver" filtering mode
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Thu Dec 20 16:23:42 UTC 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1355760722 -3600
# Node ID 92ce40f2bb8a27653c52d2aa43333b9f0c0b19ea
# Parent 54f51cc8f3a34dac96178a873e7aad5ad4fe207a
clfilter: introduce a "unserver" filtering mode
This mode is for repository used as a server. It filter secret and hidden
changeset out.
It is put to use in later changeset.
diff --git a/mercurial/repoview.py b/mercurial/repoview.py
--- a/mercurial/repoview.py
+++ b/mercurial/repoview.py
@@ -5,13 +5,24 @@
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
import copy
+import phases
+
+def computeunserved(repo):
+ """compute the set of revision that should be filtered when used a server
+
+ Secret and hidden changeset should not pretend to be here."""
+ assert not repo.changelog.filteredrevs
+ # fast path in simple case to avoid impact of non optimised code
+ if phases.hassecret(repo) or repo.obsstore:
+ return frozenset(repo.revs('hidden() + secret()'))
+ return ()
# function to compute filtered set
-filtertable = {}
+filtertable = {'unserved': computeunserved}
def filteredrevs(repo, filtername):
"""returns set of filtered revision for this filter name"""
if filtername not in repo.filteredrevcache:
func = filtertable[filtername]
More information about the Mercurial-devel
mailing list