Mercurial > hg
comparison hgext/convert/hg.py @ 19890:9057855d8749
convert: refactor head calculation for hg sources
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 03 Oct 2013 18:01:21 +0200 |
parents | 948df0f10ec1 |
children | e271970b9821 |
comparison
equal
deleted
inserted
replaced
19889:3828b3e09462 | 19890:9057855d8749 |
---|---|
258 except error.RepoError: | 258 except error.RepoError: |
259 raise util.Abort(_('%s is not a valid start revision') | 259 raise util.Abort(_('%s is not a valid start revision') |
260 % startnode) | 260 % startnode) |
261 startrev = self.repo.changelog.rev(startnode) | 261 startrev = self.repo.changelog.rev(startnode) |
262 children = {startnode: 1} | 262 children = {startnode: 1} |
263 for rev in self.repo.changelog.descendants([startrev]): | 263 for r in self.repo.changelog.descendants([startrev]): |
264 children[self.repo.changelog.node(rev)] = 1 | 264 children[self.repo.changelog.node(r)] = 1 |
265 self.keep = children.__contains__ | 265 self.keep = children.__contains__ |
266 else: | 266 else: |
267 self.keep = util.always | 267 self.keep = util.always |
268 if rev: | |
269 self._heads = [self.repo[rev].node()] | |
270 else: | |
271 self._heads = self.repo.heads() | |
268 | 272 |
269 def changectx(self, rev): | 273 def changectx(self, rev): |
270 if self.lastrev != rev: | 274 if self.lastrev != rev: |
271 self.lastctx = self.repo[rev] | 275 self.lastctx = self.repo[rev] |
272 self.lastrev = rev | 276 self.lastrev = rev |
274 | 278 |
275 def parents(self, ctx): | 279 def parents(self, ctx): |
276 return [p for p in ctx.parents() if p and self.keep(p.node())] | 280 return [p for p in ctx.parents() if p and self.keep(p.node())] |
277 | 281 |
278 def getheads(self): | 282 def getheads(self): |
279 if self.rev: | 283 return [hex(h) for h in self._heads if self.keep(h)] |
280 heads = [self.repo[self.rev].node()] | |
281 else: | |
282 heads = self.repo.heads() | |
283 return [hex(h) for h in heads if self.keep(h)] | |
284 | 284 |
285 def getfile(self, name, rev): | 285 def getfile(self, name, rev): |
286 try: | 286 try: |
287 fctx = self.changectx(rev)[name] | 287 fctx = self.changectx(rev)[name] |
288 return fctx.data(), fctx.flags() | 288 return fctx.data(), fctx.flags() |