From f68b1ca25abf59a32ccd84d57da31252f6ccdfc2 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Thu, 11 Apr 2013 07:23:04 -0500 Subject: [PATCH] remote-hg: split bookmark handling Will be useful for remote bookmarks. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- git-remote-hg | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/git-remote-hg b/git-remote-hg index f89eea0..7abfed6 100755 --- a/git-remote-hg +++ b/git-remote-hg @@ -686,6 +686,8 @@ def parse_tag(parser): def do_export(parser): global parsed_refs, bmarks, peer + p_bmarks = [] + parser.next() for line in parser.each_block('done'): @@ -707,20 +709,9 @@ def do_export(parser): pass elif ref.startswith('refs/heads/'): bmark = ref[len('refs/heads/'):] - if bmark in bmarks: - old = bmarks[bmark].hex() - else: - old = '' - - if bmark == 'master' and 'master' not in parser.repo._bookmarks: - # fake bookmark - print "ok %s" % ref - continue - - if not bookmarks.pushbookmark(parser.repo, bmark, old, node): - print "error %s" % ref - continue - + p_bmarks.append((bmark, node)) + # handle below + continue elif ref.startswith('refs/tags/'): tag = ref[len('refs/tags/'):] parser.repo.tag([tag], node, None, True, None, {}) @@ -732,6 +723,26 @@ def do_export(parser): if peer: parser.repo.push(peer, force=False) + # handle bookmarks + for bmark, node in p_bmarks: + ref = 'refs/heads/' + bmark + + if bmark in bmarks: + old = bmarks[bmark].hex() + else: + old = '' + + if bmark == 'master' and 'master' not in parser.repo._bookmarks: + # fake bookmark + print "ok %s" % ref + continue + + if not bookmarks.pushbookmark(parser.repo, bmark, old, node): + print "error %s" % ref + continue + + print "ok %s" % ref + print def fix_path(alias, repo, orig_url):