Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- contrib/remote-hg/git-remote-hg | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/contrib/remote-hg/git-remote-hg b/contrib/remote-hg/git-remote-hg index c771182..4ba9ee6 100755 --- a/contrib/remote-hg/git-remote-hg +++ b/contrib/remote-hg/git-remote-hg @@ -6,7 +6,7 @@ # Then you can clone with: # git clone hg::/path/to/mercurial/repo/ -from mercurial import hg, ui +from mercurial import hg, ui, bookmarks import re import sys @@ -229,6 +229,10 @@ def export_ref(repo, name, kind, head): def export_tag(repo, tag): export_ref(repo, tag, 'tags', repo[tag]) +def export_bookmark(repo, bmark): + head = bmarks[bmark] + export_ref(repo, bmark, 'bookmarks', head) + def export_branch(repo, branch): tip = get_branch_tip(repo, branch) head = repo[tip] @@ -243,6 +247,7 @@ def do_capabilities(parser): print "import" print "refspec refs/heads/branches/*:%s/branches/*" % prefix + print "refspec refs/heads/*:%s/bookmarks/*" % prefix print "refspec refs/tags/*:%s/tags/*" % prefix print @@ -269,7 +274,7 @@ def list_branch_head(repo, cur): g_head = (head, 'branches', repo[tip]) def do_list(parser): - global branches + global branches, bmarks repo = parser.repo for branch in repo.branchmap(): @@ -277,11 +282,16 @@ def do_list(parser): if len(heads): branches[branch] = heads + for bmark, node in bookmarks.listbookmarks(repo).iteritems(): + bmarks[bmark] = repo[node] + cur = repo.dirstate.branch() list_branch_head(repo, cur) for branch in branches: print "? refs/heads/branches/%s" % branch + for bmark in bmarks: + print "? refs/heads/%s" % bmark for tag, node in repo.tagslist(): if tag == 'tip': @@ -310,6 +320,9 @@ def do_import(parser): elif ref.startswith('refs/heads/branches/'): branch = ref[len('refs/heads/branches/'):] export_branch(repo, branch) + elif ref.startswith('refs/heads/'): + bmark = ref[len('refs/heads/'):] + export_bookmark(repo, bmark) elif ref.startswith('refs/tags/'): tag = ref[len('refs/tags/'):] export_tag(repo, tag) @@ -319,7 +332,7 @@ def do_import(parser): print 'done' def main(args): - global prefix, dirname, marks, branches + global prefix, dirname, marks, branches, bmarks alias = args[1] url = args[2] @@ -327,6 +340,7 @@ def main(args): gitdir = os.environ['GIT_DIR'] dirname = os.path.join(gitdir, 'hg', alias) branches = {} + bmarks = {} repo = get_repo(url, alias) prefix = 'refs/hg/%s' % alias -- 1.8.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html