[PATCH] strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write

Laurent Charignon lcharignon at fb.com
Fri Nov 20 15:50:05 CST 2015


# HG changeset patch
# User Laurent Charignon <lcharignon at fb.com>
# Date 1448055996 28800
#      Fri Nov 20 13:46:36 2015 -0800
# Node ID 49bd868a99249497179cb7e7a43d5ad88055bf39
# Parent  8b9c04fb4c7e6d6cb872c63f7289ea679296dd3e
strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write

Before this patch, strip was using repo._bookmarks.write.
This patch replaces this code with the recommended way of saving bookmarks
changes: repo._bookmarks.recordchange.

diff --git a/hgext/strip.py b/hgext/strip.py
--- a/hgext/strip.py
+++ b/hgext/strip.py
@@ -64,13 +64,19 @@
 
         repomarks = repo._bookmarks
         if bookmarks:
-            if repo._activebookmark in bookmarks:
-                bookmarksmod.deactivate(repo)
-            for bookmark in bookmarks:
-                del repomarks[bookmark]
-            repomarks.write()
-            for bookmark in sorted(bookmarks):
-                ui.write(_("bookmark '%s' deleted\n") % bookmark)
+            tr = None
+            try:
+                tr = repo.transaction('bookmark')
+                if repo._activebookmark in bookmarks:
+                    bookmarksmod.deactivate(repo)
+                for bookmark in bookmarks:
+                    del repomarks[bookmark]
+                repomarks.recordchange(tr)
+                tr.close()
+                for bookmark in sorted(bookmarks):
+                    ui.write(_("bookmark '%s' deleted\n") % bookmark)
+            finally:
+                release(tr)
     finally:
         release(lock, wlock)
 
@@ -147,11 +153,18 @@
                     rsrevs = repair.stripbmrevset(repo, marks[0])
                     revs.update(set(rsrevs))
             if not revs:
-                for bookmark in bookmarks:
-                    del repomarks[bookmark]
-                repomarks.write()
-                for bookmark in sorted(bookmarks):
-                    ui.write(_("bookmark '%s' deleted\n") % bookmark)
+                lock = tr = None
+                try:
+                    lock = repo.lock()
+                    tr = repo.transaction('bookmark')
+                    for bookmark in bookmarks:
+                        del repomarks[bookmark]
+                    repomarks.recordchange(tr)
+                    tr.close()
+                    for bookmark in sorted(bookmarks):
+                        ui.write(_("bookmark '%s' deleted\n") % bookmark)
+                finally:
+                    release(lock, tr)
 
         if not revs:
             raise error.Abort(_('empty revision set'))


More information about the Mercurial-devel mailing list