Skip to content
Snippets Groups Projects
Commit 078c3912 authored by Ryan McElroy's avatar Ryan McElroy
Browse files

bookmarks: compatibility with new applychanges api

Recent versions of mercuiral issue a devel-warn if the old recordchange api is
used, but we want to remain backwards-compatible, so this patch refactors things
to be forward-compatible and backwards-compatible.
parent 78959c8e
No related branches found
No related tags found
No related merge requests found
......@@ -300,8 +300,8 @@
# make sure the bookmark exists; at the point the remote
# branches has already been set up
suffix = self.branch_bookmark_suffix or ''
self.repo._bookmarks[rhead + suffix] = rnode
util.recordbookmarks(self.repo, self.repo._bookmarks)
changes = [(rhead + suffix, rnode)]
util.updatebookmarks(self.repo, changes)
bms = [rhead + suffix]
if bms:
......@@ -1372,6 +1372,7 @@
if ref.startswith('refs/heads/')])
suffix = self.branch_bookmark_suffix or ''
changes = []
for head, sha in heads.iteritems():
# refs contains all the refs in the server, not just
# the ones we are pulling
......@@ -1381,8 +1382,8 @@
hgsha = bin(hgsha)
if head not in bms:
# new branch
bms[head + suffix] = hgsha
changes.append((head + suffix, hgsha))
else:
bm = self.repo[bms[head]]
if bm.ancestor(self.repo[hgsha]) == bm:
# fast forward
......@@ -1385,7 +1386,7 @@
else:
bm = self.repo[bms[head]]
if bm.ancestor(self.repo[hgsha]) == bm:
# fast forward
bms[head + suffix] = hgsha
changes.append((head + suffix, hgsha))
if heads:
......@@ -1390,6 +1391,6 @@
if heads:
util.recordbookmarks(self.repo, bms)
util.updatebookmarks(self.repo, changes)
except AttributeError:
self.ui.warn(_('creating bookmarks failed, do you have'
......
......@@ -94,5 +94,5 @@
return True
return False
def recordbookmarks(repo, bms, name='git_handler'):
def updatebookmarks(repo, changes, name='git_handler'):
"""abstract writing bookmarks for backwards compatibility"""
......@@ -98,6 +98,7 @@
"""abstract writing bookmarks for backwards compatibility"""
bms = repo._bookmarks
tr = lock = wlock = None
try:
wlock = repo.wlock()
lock = repo.lock()
tr = repo.transaction(name)
......@@ -99,9 +100,9 @@
tr = lock = wlock = None
try:
wlock = repo.wlock()
lock = repo.lock()
tr = repo.transaction(name)
if hgutil.safehasattr(bms, 'recordchange'):
# recordchange was added in mercurial 3.2
bms.recordchange(tr)
if hgutil.safehasattr(bms, 'applychanges'):
# applychanges was added in mercurial 4.3
bms.applychanges(repo, tr, changes)
else:
......@@ -107,5 +108,14 @@
else:
bms.write()
for name, node in changes:
if node is None:
del bms[name]
else:
bms[name] = node
if hgutil.safehasattr(bms, 'recordchange'):
# recordchange was added in mercurial 3.2
bms.recordchange(tr)
else:
bms.write()
tr.close()
finally:
lockmod.release(tr, lock, wlock)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment