Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 20991:a05d694599f9
revlog: use context ancestor instead of changelog ancestor
We want to move in this direction.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Mon, 07 Apr 2014 23:17:51 +0200 |
parents | f52e4ca93529 |
children | 7731a2281cf0 |
comparison
equal
deleted
inserted
replaced
20990:d9e211a658eb | 20991:a05d694599f9 |
---|---|
318 pat = getstring(x, _("adds requires a pattern")) | 318 pat = getstring(x, _("adds requires a pattern")) |
319 return checkstatus(repo, subset, pat, 1) | 319 return checkstatus(repo, subset, pat, 1) |
320 | 320 |
321 def ancestor(repo, subset, x): | 321 def ancestor(repo, subset, x): |
322 """``ancestor(*changeset)`` | 322 """``ancestor(*changeset)`` |
323 Greatest common ancestor of the changesets. | 323 A greatest common ancestor of the changesets. |
324 | 324 |
325 Accepts 0 or more changesets. | 325 Accepts 0 or more changesets. |
326 Will return empty list when passed no args. | 326 Will return empty list when passed no args. |
327 Greatest common ancestor of a single changeset is that changeset. | 327 Greatest common ancestor of a single changeset is that changeset. |
328 """ | 328 """ |
330 l = getlist(x) | 330 l = getlist(x) |
331 rl = spanset(repo) | 331 rl = spanset(repo) |
332 anc = None | 332 anc = None |
333 | 333 |
334 # (getset(repo, rl, i) for i in l) generates a list of lists | 334 # (getset(repo, rl, i) for i in l) generates a list of lists |
335 rev = repo.changelog.rev | |
336 ancestor = repo.changelog.ancestor | |
337 node = repo.changelog.node | |
338 for revs in (getset(repo, rl, i) for i in l): | 335 for revs in (getset(repo, rl, i) for i in l): |
339 for r in revs: | 336 for r in revs: |
340 if anc is None: | 337 if anc is None: |
341 anc = r | 338 anc = repo[r] |
342 else: | 339 else: |
343 anc = rev(ancestor(node(anc), node(r))) | 340 anc = anc.ancestor(repo[r]) |
344 | 341 |
345 if anc is not None and anc in subset: | 342 if anc is not None and anc.rev() in subset: |
346 return baseset([anc]) | 343 return baseset([anc.rev()]) |
347 return baseset([]) | 344 return baseset([]) |
348 | 345 |
349 def _ancestors(repo, subset, x, followfirst=False): | 346 def _ancestors(repo, subset, x, followfirst=False): |
350 args = getset(repo, spanset(repo), x) | 347 args = getset(repo, spanset(repo), x) |
351 if not args: | 348 if not args: |