[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