summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Felipe Contreras <felipe.contreras@gmail.com>2013-04-26 16:12:33 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-04-26 15:20:26 -0700
commitd6bb9136c93baddf0ee5052638591bd881b19f77 (patch)
treea6e0829c7988b50d2f4e75877f46815cf00c2f7e
parentremote-hg: remove extra check (diff)
downloadtgif-d6bb9136c93baddf0ee5052638591bd881b19f77.tar.xz
remote-bzr: fix bad state issue
Carried from remote-hg. 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-bzr6
1 files changed, 6 insertions, 0 deletions
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
index 31cba64d93..bfc298b2e1 100755
--- a/contrib/remote-helpers/git-remote-bzr
+++ b/contrib/remote-helpers/git-remote-bzr
@@ -32,6 +32,7 @@ import os
import json
import re
import StringIO
+import atexit
NAME_RE = re.compile('^([^<>]+)')
AUTHOR_RE = re.compile('^([^<>]+?)? ?<([^<>]*)>$')
@@ -728,6 +729,7 @@ def main(args):
blob_marks = {}
parsed_refs = {}
files_cache = {}
+ marks = None
gitdir = os.environ['GIT_DIR']
dirname = os.path.join(gitdir, 'bzr', alias)
@@ -754,6 +756,10 @@ def main(args):
die('unhandled command: %s' % line)
sys.stdout.flush()
+def bye():
+ if not marks:
+ return
marks.store()
+atexit.register(bye)
sys.exit(main(sys.argv))