remote-hg: shuffle some code
In preparation to shift to SHA-1's. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras committed
May 24, 2013 at 21:29 UTC
52036431ff630ba9de9430fb6982a6869473d002
1 file changed
+17
-13
contrib/remote-helpers/git-remote-hg
+17
-13
@@ -75,6 +75,9 @@ def hgmode(mode):
75
def hghex(node):
76
return hg.node.hex(node)
77
78
+def hgbin(node):
79
+ return hg.node.bin(node)
80
+
81
def hgref(ref):
82
return ref.replace('___', ' ')
83
@@ -261,7 +264,7 @@ def get_filechanges(repo, ctx, parent):
264
removed = set()
265
266
# load earliest manifest first for caching reasons
264
- prev = repo[parent].manifest().copy()
267
+ prev = parent.manifest().copy()
268
cur = ctx.manifest()
269
270
for fn in cur:
@@ -401,7 +404,7 @@ def export_ref(repo, name, kind, head):
404
else:
405
committer = author
406
404
- parents = [p for p in repo.changelog.parentrevs(rev) if p >= 0]
407
+ parents = [repo[p] for p in repo.changelog.parentrevs(rev) if p >= 0]
408
409
if len(parents) == 0:
410
modified = c.manifest().keys()
@@ -450,9 +453,9 @@ def export_ref(repo, name, kind, head):
453
print desc
454
455
if len(parents) > 0:
453
- print "from :%s" % (rev_to_mark(parents[0]))
456
+ print "from :%s" % (rev_to_mark(parents[0].rev()))
457
if len(parents) > 1:
455
- print "merge :%s" % (rev_to_mark(parents[1]))
458
+ print "merge :%s" % (rev_to_mark(parents[1].rev()))
459
460
for f in modified_final:
461
print "M %s :%u %s" % f
@@ -466,10 +469,10 @@ def export_ref(repo, name, kind, head):
469
470
# make sure the ref is updated
471
print "reset %s/%s" % (prefix, ename)
469
- print "from :%u" % rev_to_mark(rev)
472
+ print "from :%u" % rev_to_mark(head.rev())
473
print
474
472
- marks.set_tip(ename, rev)
475
+ marks.set_tip(ename, head.rev())
476
477
def export_tag(repo, tag):
478
export_ref(repo, tag, 'tags', repo[hgref(tag)])
@@ -739,7 +742,7 @@ def parse_commit(parser):
742
tmp = encoding.encoding
743
encoding.encoding = 'utf-8'
744
742
- node = repo.commitctx(ctx)
745
+ node = hghex(repo.commitctx(ctx))
746
747
encoding.encoding = tmp
748
@@ -763,7 +766,7 @@ def parse_reset(parser):
766
parser.next()
767
768
node = parser.repo.changelog.node(mark_to_rev(from_mark))
766
- parsed_refs[ref] = node
769
+ parsed_refs[ref] = hghex(node)
770
771
def parse_tag(parser):
772
name = parser[1]
@@ -788,7 +791,7 @@ def write_tag(repo, tag, node, msg, author):
791
data = fctx.data()
792
except error.ManifestLookupError:
793
data = ""
791
- content = data + "%s %s\n" % (hghex(node), tag)
794
+ content = data + "%s %s\n" % (node, tag)
795
return context.memfilectx(f, content, False, False, None)
796
797
p1 = tip.hex()
@@ -832,9 +835,10 @@ def do_export(parser):
835
die('unhandled export command: %s' % line)
836
837
for ref, node in parsed_refs.iteritems():
838
+ bnode = hgbin(node)
839
if ref.startswith('refs/heads/branches'):
840
branch = ref[len('refs/heads/branches/'):]
837
- if branch in branches and node in branches[branch]:
841
+ if branch in branches and bnode in branches[branch]:
842
# up to date
843
continue
844
print "ok %s" % ref
@@ -848,11 +852,11 @@ def do_export(parser):
852
author, msg = parsed_tags.get(tag, (None, None))
853
if mode == 'git':
854
if not msg:
851
- msg = 'Added tag %s for changeset %s' % (tag, hghex(node[:6]));
855
+ msg = 'Added tag %s for changeset %s' % (tag, node[:12]);
856
write_tag(parser.repo, tag, node, msg, author)
857
else:
858
fp = parser.repo.opener('localtags', 'a')
855
- fp.write('%s %s\n' % (hghex(node), tag))
859
+ fp.write('%s %s\n' % (node, tag))
860
fp.close()
861
print "ok %s" % ref
862
else:
@@ -866,7 +870,7 @@ def do_export(parser):
870
# handle bookmarks
871
for bmark, node in p_bmarks:
872
ref = 'refs/heads/' + bmark
869
- new = hghex(node)
873
+ new = node
874
875
if bmark in bmarks:
876
old = bmarks[bmark].hex()