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>
This commit is contained in:
Felipe Contreras 2013-04-11 07:23:14 -05:00 коммит произвёл Junio C Hamano
Родитель 2e8e813232
Коммит 2594a79ea9
1 изменённых файлов: 7 добавлений и 1 удалений

Просмотреть файл

@ -18,6 +18,7 @@ import json
import shutil import shutil
import subprocess import subprocess
import urllib import urllib
import atexit
# #
# If you want to switch to hg-git compatibility mode: # If you want to switch to hg-git compatibility mode:
@ -791,7 +792,7 @@ def main(args):
global prefix, dirname, branches, bmarks global prefix, dirname, branches, bmarks
global marks, blob_marks, parsed_refs global marks, blob_marks, parsed_refs
global peer, mode, bad_mail, bad_name global peer, mode, bad_mail, bad_name
global track_branches, force_push global track_branches, force_push, is_tmp
alias = args[1] alias = args[1]
url = args[2] url = args[2]
@ -833,6 +834,7 @@ def main(args):
bmarks = {} bmarks = {}
blob_marks = {} blob_marks = {}
parsed_refs = {} parsed_refs = {}
marks = None
repo = get_repo(url, alias) repo = get_repo(url, alias)
prefix = 'refs/hg/%s' % alias prefix = 'refs/hg/%s' % alias
@ -860,9 +862,13 @@ def main(args):
die('unhandled command: %s' % line) die('unhandled command: %s' % line)
sys.stdout.flush() sys.stdout.flush()
def bye():
if not marks:
return
if not is_tmp: if not is_tmp:
marks.store() marks.store()
else: else:
shutil.rmtree(dirname) shutil.rmtree(dirname)
atexit.register(bye)
sys.exit(main(sys.argv)) sys.exit(main(sys.argv))