2 Commits

Author SHA1 Message Date
Mark Nauwelaerts
8f9d2797fd Add notes based on current notes ref
See felipec/git-remote-hg#58
2016-07-02 19:57:48 +02:00
Felipe Contreras
822c6e4b03 Avoid deprecated bookmarks.write()
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2016-05-17 21:26:18 -05:00

View File

@@ -110,6 +110,12 @@ def get_config_bool(config, default=False):
else:
return default
def rev_parse(rev):
cmd = ['git', 'rev-parse', '--verify', '-q', rev]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
output, _ = process.communicate()
return output
class Marks:
def __init__(self, path, repo):
@@ -373,10 +379,23 @@ def updatebookmarks(repo, peer):
for k, v in remotemarks.iteritems():
localmarks[k] = hgbin(v)
if hasattr(localmarks, 'write'):
localmarks.write()
if check_version(3, 6):
lock = tr = None
try:
lock = repo.lock()
tr = repo.transaction('bookmark')
localmarks.recordchange(tr)
tr.close()
finally:
if tr is not None:
tr.release()
if lock is not None:
lock.release()
else:
bookmarks.write(repo)
if hasattr(localmarks, 'write'):
localmarks.write()
else:
bookmarks.write(repo)
def get_repo(url, alias):
global peer
@@ -589,8 +608,11 @@ def export_ref(repo, name, kind, head):
desc = "Notes for %s\n" % (name)
print "data %d" % (len(desc))
print desc
if marks.last_note:
print "from :%u" % marks.last_note
# continue incrementally on current notes branch (whenever possible)
# to avoid wiping out present content upon fetch of new repo
current_note = rev_parse(ref)
if current_note:
print 'from %s^0' % (ref)
for rev in pending_revs:
notes.add(rev)