mercurial/bookmarks.py
changeset 33491 1adcb594eb6b
parent 33485 505021482541
child 33499 0407a51b9d8c
--- 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)