Mercurial > hg
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] |