Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/branchmap.py @ 18305:2502a15e033d
branchmap: pass revision insteads of changectx to the update function
Creation of changectx objects is very slow, and they are not very
useful. We are going to drop them. The first step is to change the
function argument type.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Tue, 08 Jan 2013 01:28:39 +0100 |
parents | a55b06885cda |
children | 0eed2546118a |
comparison
equal
deleted
inserted
replaced
18304:9b6ae29d4801 | 18305:2502a15e033d |
---|---|
75 partial = subset.branchmap().copy() | 75 partial = subset.branchmap().copy() |
76 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs | 76 extrarevs = subset.changelog.filteredrevs - cl.filteredrevs |
77 revs.extend(r for r in extrarevs if r <= partial.tiprev) | 77 revs.extend(r for r in extrarevs if r <= partial.tiprev) |
78 revs.extend(cl.revs(start=partial.tiprev + 1)) | 78 revs.extend(cl.revs(start=partial.tiprev + 1)) |
79 if revs: | 79 if revs: |
80 ctxgen = (repo[r] for r in revs) | 80 partial.update(repo, revs) |
81 partial.update(repo, ctxgen) | |
82 partial.write(repo) | 81 partial.write(repo) |
83 assert partial.validfor(repo) | 82 assert partial.validfor(repo) |
84 repo._branchcaches[repo.filtername] = partial | 83 repo._branchcaches[repo.filtername] = partial |
85 | 84 |
86 class branchcache(dict): | 85 class branchcache(dict): |
142 f.close() | 141 f.close() |
143 except (IOError, OSError, util.Abort): | 142 except (IOError, OSError, util.Abort): |
144 # Abort may be raise by read only opener | 143 # Abort may be raise by read only opener |
145 pass | 144 pass |
146 | 145 |
147 def update(self, repo, ctxgen): | 146 def update(self, repo, revgen): |
148 """Given a branchhead cache, self, that may have extra nodes or be | 147 """Given a branchhead cache, self, that may have extra nodes or be |
149 missing heads, and a generator of nodes that are at least a superset of | 148 missing heads, and a generator of nodes that are at least a superset of |
150 heads missing, this function updates self to be correct. | 149 heads missing, this function updates self to be correct. |
151 """ | 150 """ |
152 cl = repo.changelog | 151 cl = repo.changelog |
152 ctxgen = (repo[r] for r in revgen) | |
153 # collect new branch entries | 153 # collect new branch entries |
154 newbranches = {} | 154 newbranches = {} |
155 for c in ctxgen: | 155 for c in ctxgen: |
156 newbranches.setdefault(c.branch(), []).append(c.node()) | 156 newbranches.setdefault(c.branch(), []).append(c.node()) |
157 # if older branchheads are reachable from new ones, they aren't | 157 # if older branchheads are reachable from new ones, they aren't |