mirror of
https://github.com/mnauw/git-remote-hg.git
synced 2026-03-19 00:10:13 +01:00
Simplify gitrange
The internal function for `a %% b` is marginally faster, and much simpler. Nowadays most versions of hg should have it. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
This commit is contained in:
@@ -497,41 +497,6 @@ def rev_to_mark(rev):
|
||||
def mark_to_rev(mark):
|
||||
return marks.to_rev(mark).encode()
|
||||
|
||||
# Get a range of revisions in the form of a..b (git committish)
|
||||
def gitrange(repo, a, b):
|
||||
if a == b:
|
||||
return []
|
||||
|
||||
pfunc = repo.changelog.parentrevs
|
||||
it = iter(range(b.rev(), -1, -1))
|
||||
|
||||
positive = []
|
||||
pending = set([b.rev()])
|
||||
negative = set([a.rev()])
|
||||
|
||||
def get_parents(rev):
|
||||
for p in pfunc(rev):
|
||||
if p == -1: continue
|
||||
yield p
|
||||
|
||||
while pending:
|
||||
cur = next(it)
|
||||
|
||||
if cur in negative:
|
||||
negative.remove(cur)
|
||||
for p in get_parents(cur):
|
||||
negative.add(p)
|
||||
pending.discard(p)
|
||||
elif cur in pending:
|
||||
positive.append(cur)
|
||||
pending.remove(cur)
|
||||
for p in get_parents(cur):
|
||||
if p not in negative:
|
||||
pending.add(p)
|
||||
|
||||
positive.reverse()
|
||||
return positive
|
||||
|
||||
def export_ref(repo, name, kind, head):
|
||||
ename = '%s/%s' % (kind, name)
|
||||
try:
|
||||
@@ -540,7 +505,8 @@ def export_ref(repo, name, kind, head):
|
||||
except (KeyError,error.RepoLookupError):
|
||||
tip = repo[-1]
|
||||
|
||||
revs = gitrange(repo, tip, head)
|
||||
# tip..head
|
||||
revs = repo.changelog.findmissingrevs(common={tip.rev()}, heads={head.rev()})
|
||||
|
||||
total = len(revs)
|
||||
tip = tip.rev()
|
||||
|
||||
Reference in New Issue
Block a user