changeset 812:60dd0c401034

drophack: major speedup to marker stripping It appear that each call to obsstore.add have a significant overhead (in particular the creation of a set form the list of markers and file system operation to the obsstore file. We now compute the marker we need to store and write them in a single call.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Tue, 25 Feb 2014 11:14:37 -0800
parents acfa2b67cff6
children b49a9276ec8e
files hgext/drophack.py tests/test-drop.t
diffstat 2 files changed, 3 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/drophack.py	Mon Feb 24 19:01:12 2014 -0800
+++ b/hgext/drophack.py	Tue Feb 25 11:14:37 2014 -0800
@@ -71,11 +71,10 @@
     del repo.obsstore # drop the cache
     newstore = repo.obsstore
     assert not newstore # should be empty after rename
+    newmarkers = [m for m in oldmarkers if m not in markers]
     tr = repo.transaction('drophack')
     try:
-        for m in oldmarkers:
-            if m not in markers:
-                newstore.add(tr, [m])
+        newstore.add(tr, newmarkers)
         tr.close()
     finally:
         tr.release()
--- a/tests/test-drop.t	Mon Feb 24 19:01:12 2014 -0800
+++ b/tests/test-drop.t	Tue Feb 25 11:14:37 2014 -0800
@@ -236,7 +236,7 @@
   search nodes: wall * comb * user * sys * (glob)
   2 nodes found
   strip obsmarker: wall * comb * user * sys * (glob)
-  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/a2c06c884bfe-drophack.hg (glob)
+  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-drophack.hg (glob)
   strip nodes: wall * comb * user * sys * (glob)
   $ summary
   ============ graph ==============