summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Felipe Contreras <felipe.contreras@gmail.com>2013-04-11 07:23:14 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-04-11 10:46:47 -0700
commit2594a79ea9d34053384d514afd5dcaaaeed15480 (patch)
tree1adea4e7104239982b31825c51a5d21f8309620d
parentremote-hg: add 'insecure' option (diff)
downloadtgif-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-xcontrib/remote-helpers/git-remote-hg8
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))