Mercurial > hg
comparison mercurial/repoview.py @ 18382:f3b21beb9802
filtering: rename filters to their antonyms
Now that changelog filtering is in place, it's become evident that
naming the filters according to the set of revs _not_ included in the
filtered changelog is confusing. This is especially evident in the
collaborative branch cache scheme.
This changes the names of the filters to reflect the revs that _are_
included:
hidden -> visible
unserved -> served
mutable -> immutable
impactable -> base
repoview.filteredrevs is renamed to filterrevs, so that callers read a
bit more sensibly, e.g.:
filterrevs('visible') # filter revs according to what's visible
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Sun, 13 Jan 2013 01:39:16 -0600 |
parents | 1f35d6737ed8 |
children | 64848f7fb764 |
comparison
equal
deleted
inserted
replaced
18381:7ac4449f0f39 | 18382:f3b21beb9802 |
---|---|
42 """compute the set of revision that should be filtered when used a server | 42 """compute the set of revision that should be filtered when used a server |
43 | 43 |
44 Secret and hidden changeset should not pretend to be here.""" | 44 Secret and hidden changeset should not pretend to be here.""" |
45 assert not repo.changelog.filteredrevs | 45 assert not repo.changelog.filteredrevs |
46 # fast path in simple case to avoid impact of non optimised code | 46 # fast path in simple case to avoid impact of non optimised code |
47 hiddens = filteredrevs(repo, 'hidden') | 47 hiddens = filterrevs(repo, 'visible') |
48 if phases.hassecret(repo): | 48 if phases.hassecret(repo): |
49 cl = repo.changelog | 49 cl = repo.changelog |
50 secret = phases.secret | 50 secret = phases.secret |
51 getphase = repo._phasecache.phase | 51 getphase = repo._phasecache.phase |
52 first = min(cl.rev(n) for n in repo._phasecache.phaseroots[secret]) | 52 first = min(cl.rev(n) for n in repo._phasecache.phaseroots[secret]) |
63 Secret and hidden changeset should not pretend to be here.""" | 63 Secret and hidden changeset should not pretend to be here.""" |
64 assert not repo.changelog.filteredrevs | 64 assert not repo.changelog.filteredrevs |
65 # fast check to avoid revset call on huge repo | 65 # fast check to avoid revset call on huge repo |
66 if util.any(repo._phasecache.phaseroots[1:]): | 66 if util.any(repo._phasecache.phaseroots[1:]): |
67 getphase = repo._phasecache.phase | 67 getphase = repo._phasecache.phase |
68 maymutable = filteredrevs(repo, 'impactable') | 68 maymutable = filterrevs(repo, 'base') |
69 return frozenset(r for r in maymutable if getphase(repo, r)) | 69 return frozenset(r for r in maymutable if getphase(repo, r)) |
70 return frozenset() | 70 return frozenset() |
71 | 71 |
72 def computeimpactable(repo): | 72 def computeimpactable(repo): |
73 """Everything impactable by mutable revision | 73 """Everything impactable by mutable revision |
91 if roots: | 91 if roots: |
92 firstmutable = min(firstmutable, min(cl.rev(r) for r in roots)) | 92 firstmutable = min(firstmutable, min(cl.rev(r) for r in roots)) |
93 return frozenset(xrange(firstmutable, len(cl))) | 93 return frozenset(xrange(firstmutable, len(cl))) |
94 | 94 |
95 # function to compute filtered set | 95 # function to compute filtered set |
96 filtertable = {'hidden': computehidden, | 96 filtertable = {'visible': computehidden, |
97 'unserved': computeunserved, | 97 'served': computeunserved, |
98 'mutable': computemutable, | 98 'immutable': computemutable, |
99 'impactable': computeimpactable} | 99 'base': computeimpactable} |
100 ### Nearest subset relation | 100 ### Nearest subset relation |
101 # Nearest subset of filter X is a filter Y so that: | 101 # Nearest subset of filter X is a filter Y so that: |
102 # * Y is included in X, | 102 # * Y is included in X, |
103 # * X - Y is as small as possible. | 103 # * X - Y is as small as possible. |
104 # This create and ordering used for branchmap purpose. | 104 # This create and ordering used for branchmap purpose. |
105 # the ordering may be partial | 105 # the ordering may be partial |
106 subsettable = {None: 'hidden', | 106 subsettable = {None: 'visible', |
107 'hidden': 'unserved', | 107 'visible': 'served', |
108 'unserved': 'mutable', | 108 'served': 'immutable', |
109 'mutable': 'impactable'} | 109 'immutable': 'base'} |
110 | 110 |
111 def filteredrevs(repo, filtername): | 111 def filterrevs(repo, filtername): |
112 """returns set of filtered revision for this filter name""" | 112 """returns set of filtered revision for this filter name""" |
113 if filtername not in repo.filteredrevcache: | 113 if filtername not in repo.filteredrevcache: |
114 func = filtertable[filtername] | 114 func = filtertable[filtername] |
115 repo.filteredrevcache[filtername] = func(repo.unfiltered()) | 115 repo.filteredrevcache[filtername] = func(repo.unfiltered()) |
116 return repo.filteredrevcache[filtername] | 116 return repo.filteredrevcache[filtername] |
160 """return a filtered version of the changeset | 160 """return a filtered version of the changeset |
161 | 161 |
162 this changelog must not be used for writing""" | 162 this changelog must not be used for writing""" |
163 # some cache may be implemented later | 163 # some cache may be implemented later |
164 cl = copy.copy(self._unfilteredrepo.changelog) | 164 cl = copy.copy(self._unfilteredrepo.changelog) |
165 cl.filteredrevs = filteredrevs(self._unfilteredrepo, self.filtername) | 165 cl.filteredrevs = filterrevs(self._unfilteredrepo, self.filtername) |
166 return cl | 166 return cl |
167 | 167 |
168 def unfiltered(self): | 168 def unfiltered(self): |
169 """Return an unfiltered version of a repo""" | 169 """Return an unfiltered version of a repo""" |
170 return self._unfilteredrepo | 170 return self._unfilteredrepo |