# HG changeset patch # User Boris Feld # Date 1499708423 -7200 # 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 -r 902fe63954a9 -r 1adcb594eb6b mercurial/bookmarks.py --- a/mercurial/bookmarks.py Mon Jul 10 17:46:47 2017 +0200 +++ b/mercurial/bookmarks.py Mon Jul 10 19:40:23 2017 +0200 @@ -350,6 +350,7 @@ 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 @@ 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 @@ try: lock = repo.lock() tr = repo.transaction('bookmark') - marks.recordchange(tr) + marks.applychanges(repo, tr, bmchanges) tr.close() finally: lockmod.release(tr, lock)