From e3751a1763112b301f2269dd268190900d7ddd29 Mon Sep 17 00:00:00 2001 From: Felipe Contreras Date: Fri, 24 May 2013 21:30:03 -0500 Subject: remote-hg: add support for --dry-run This needs a specific patch from Git not applied yet. Signed-off-by: Felipe Contreras Signed-off-by: Junio C Hamano --- contrib/remote-helpers/git-remote-hg | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'contrib/remote-helpers/git-remote-hg') diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg index b983627ce..20abb3480 100755 --- a/contrib/remote-helpers/git-remote-hg +++ b/contrib/remote-helpers/git-remote-hg @@ -557,6 +557,7 @@ def do_capabilities(parser): if os.path.exists(path): print "*import-marks %s" % path print "*export-marks %s" % path + print "option" print @@ -724,6 +725,11 @@ def parse_commit(parser): die('Unknown file command: %s' % line) files[path] = f + # only export the commits if we are on an internal proxy repo + if dry_run and not peer: + parsed_refs[ref] = None + return + def getfilectx(repo, memctx, f): of = files[f] if 'deleted' in of: @@ -809,7 +815,10 @@ def parse_reset(parser): from_mark = parser.get_mark() parser.next() - rev = mark_to_rev(from_mark) + try: + rev = mark_to_rev(from_mark) + except KeyError: + rev = None parsed_refs[ref] = rev def parse_tag(parser): @@ -1007,7 +1016,7 @@ def do_export(parser): need_fetch = False for ref, node in parsed_refs.iteritems(): - bnode = hgbin(node) + bnode = hgbin(node) if node else None if ref.startswith('refs/heads/branches'): branch = ref[len('refs/heads/branches/'):] if branch in branches and bnode in branches[branch]: @@ -1048,6 +1057,9 @@ def do_export(parser): p_revs[bnode] = ref elif ref.startswith('refs/tags/'): + if dry_run: + print "ok %s" % ref + continue tag = ref[len('refs/tags/'):] tag = hgref(tag) author, msg = parsed_tags.get(tag, (None, None)) @@ -1097,6 +1109,15 @@ def do_export(parser): print +def do_option(parser): + global dry_run + _, key, value = parser.line.split(' ') + if key == 'dry-run': + dry_run = (value == 'true') + print 'ok' + else: + print 'unsupported' + def fix_path(alias, repo, orig_url): url = urlparse.urlparse(orig_url, 'file') if url.scheme != 'file' or os.path.isabs(url.path): @@ -1113,6 +1134,7 @@ def main(args): global parsed_tags global filenodes global fake_bmark, hg_version + global dry_run alias = args[1] url = args[2] @@ -1151,6 +1173,7 @@ def main(args): hg_version = tuple(int(e) for e in util.version().split('.')) except: hg_version = None + dry_run = False repo = get_repo(url, alias) prefix = 'refs/hg/%s' % alias @@ -1175,6 +1198,8 @@ def main(args): do_import(parser) elif parser.check('export'): do_export(parser) + elif parser.check('option'): + do_option(parser) else: die('unhandled command: %s' % line) sys.stdout.flush() -- cgit v1.2.1