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()