# HG changeset patch # User Boris Feld # Date 2017-07-10 17:40:23 # Node ID 1adcb594eb6b075a9f3b676a1da5b56ed9e2a2ae # Parent 902fe63954a9a54709f0df6bf7b8ac671cfcfdc6 bookmarks: use 'applychanges' for bookmark update There is still some use of 'deletedivergent' bookmark here. They will be taken care of later. The 'deletedivergent' code needs some rework before fitting in the new world. diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -350,6 +350,7 @@ def update(repo, parents, node): if not active: return False + bmchanges = [] if marks[active] in parents: new = repo[node] divs = [repo[b] for b in marks @@ -357,7 +358,7 @@ def update(repo, parents, node): anc = repo.changelog.ancestors([new.rev()]) deletefrom = [b.node() for b in divs if b.rev() in anc or b == new] if validdest(repo, repo[marks[active]], new): - marks[active] = new.node() + bmchanges.append((active, new.node())) update = True if deletedivergent(repo, deletefrom, active): @@ -368,7 +369,7 @@ def update(repo, parents, node): try: lock = repo.lock() tr = repo.transaction('bookmark') - marks.recordchange(tr) + marks.applychanges(repo, tr, bmchanges) tr.close() finally: lockmod.release(tr, lock)