[PATCH 12 of 12] bookmarks: use 'applychanges' for bookmark update

Boris Feld boris.feld at octobus.net
Fri Jul 14 13:54:10 EDT 2017


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1499708423 -7200
#      Mon Jul 10 19:40:23 2017 +0200
# Node ID c8af08d67851fae61c1cf459f0f0bf20f61b9298
# Parent  bbebf6b3d2514134fc750903de90ec515cf4c4d3
# EXP-Topic tr.changes.bookmarks
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 bbebf6b3d251 -r c8af08d67851 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)


More information about the Mercurial-devel mailing list