diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2013-04-11 07:23:14 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-04-11 10:46:47 -0700 |
commit | 2594a79ea9d34053384d514afd5dcaaaeed15480 (patch) | |
tree | 1adea4e7104239982b31825c51a5d21f8309620d | |
parent | remote-hg: add 'insecure' option (diff) | |
download | tgif-2594a79ea9d34053384d514afd5dcaaaeed15480.tar.xz |
remote-hg: fix bad state issue
The problem reportedly happened after doing a push that fails, the abort
causes the state of remote-hg to go bad, this happens because
remote-hg's marks are not stored, but 'git fast-export' marks are.
Ensure that the marks are _always_ stored.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | contrib/remote-helpers/git-remote-hg | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg index 3eb07dc93c..e3d7f77879 100755 --- a/contrib/remote-helpers/git-remote-hg +++ b/contrib/remote-helpers/git-remote-hg @@ -18,6 +18,7 @@ import json import shutil import subprocess import urllib +import atexit # # If you want to switch to hg-git compatibility mode: @@ -791,7 +792,7 @@ def main(args): global prefix, dirname, branches, bmarks global marks, blob_marks, parsed_refs global peer, mode, bad_mail, bad_name - global track_branches, force_push + global track_branches, force_push, is_tmp alias = args[1] url = args[2] @@ -833,6 +834,7 @@ def main(args): bmarks = {} blob_marks = {} parsed_refs = {} + marks = None repo = get_repo(url, alias) prefix = 'refs/hg/%s' % alias @@ -860,9 +862,13 @@ def main(args): die('unhandled command: %s' % line) sys.stdout.flush() +def bye(): + if not marks: + return if not is_tmp: marks.store() else: shutil.rmtree(dirname) +atexit.register(bye) sys.exit(main(sys.argv)) |