diff mercurial/bookmarks.py @ 33491:1adcb594eb6b

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.
author Boris Feld <boris.feld@octobus.net>
date Mon, 10 Jul 2017 19:40:23 +0200
parents 505021482541
children 0407a51b9d8c
line wrap: on
line diff
--- 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)