bookmarks: use 'applychanges' for bookmark update
authorBoris Feld <boris.feld@octobus.net>
Mon, 10 Jul 2017 19:40:23 +0200
changeset 33491 1adcb594eb6b
parent 33490 902fe63954a9
child 33492 14af04391fb9
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.
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)