comparison mercurial/repoview.py @ 18242:e4687edec014

clfilter: introduces a hidden filter This filter exclude all hidden revision. We plan to use this filter to hide revision instead of manually checking contents of the hidden revisions set.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Mon, 07 Jan 2013 19:24:06 +0100
parents 59a9f18d4587
children aff706b3a21c
comparison
equal deleted inserted replaced
18241:f5ed27c51995 18242:e4687edec014
6 # This software may be used and distributed according to the terms of the 6 # This software may be used and distributed according to the terms of the
7 # GNU General Public License version 2 or any later version. 7 # GNU General Public License version 2 or any later version.
8 8
9 import copy 9 import copy
10 import phases 10 import phases
11
12
13 def computehidden(repo):
14 """compute the set of hidden revision to filter
15
16 During most operation hidden should be filtered."""
17 assert not repo.changelog.filteredrevs
18 if repo.obsstore:
19 return frozenset(repo.revs('hidden()'))
20 return frozenset()
11 21
12 def computeunserved(repo): 22 def computeunserved(repo):
13 """compute the set of revision that should be filtered when used a server 23 """compute the set of revision that should be filtered when used a server
14 24
15 Secret and hidden changeset should not pretend to be here.""" 25 Secret and hidden changeset should not pretend to be here."""
18 if phases.hassecret(repo) or repo.obsstore: 28 if phases.hassecret(repo) or repo.obsstore:
19 return frozenset(repo.revs('hidden() + secret()')) 29 return frozenset(repo.revs('hidden() + secret()'))
20 return frozenset() 30 return frozenset()
21 31
22 # function to compute filtered set 32 # function to compute filtered set
23 filtertable = {'unserved': computeunserved} 33 filtertable = {'hidden': computehidden,
34 'unserved': computeunserved}
24 ### Nearest subset relation 35 ### Nearest subset relation
25 # Nearest subset of filter X is a filter Y so that: 36 # Nearest subset of filter X is a filter Y so that:
26 # * Y is included in X, 37 # * Y is included in X,
27 # * X - Y is as small as possible. 38 # * X - Y is as small as possible.
28 # This create and ordering used for branchmap purpose. 39 # This create and ordering used for branchmap purpose.
29 # the ordering may be partial 40 # the ordering may be partial
30 subsettable = {None: 'unserved'} 41 subsettable = {None: 'hidden',
42 'hidden': 'unserved'}
31 43
32 def filteredrevs(repo, filtername): 44 def filteredrevs(repo, filtername):
33 """returns set of filtered revision for this filter name""" 45 """returns set of filtered revision for this filter name"""
34 if filtername not in repo.filteredrevcache: 46 if filtername not in repo.filteredrevcache:
35 func = filtertable[filtername] 47 func = filtertable[filtername]