D292: repair: move manifest strip to a separate function
durham (Durham Goode)
phabricator at mercurial-scm.org
Wed Aug 9 00:33:28 UTC 2017
durham created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
This moves manifest stripping to a separate function so implementations of the
manifest that don't support stripping can replace this function with a no-op.
I considered adding a strip api to the manifestlog, so other implementations
could make it a no-op there, but it seems like strip might be unique to the
revlog implementation, and therefore shouldn't be present on the generic api.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D292
AFFECTED FILES
mercurial/repair.py
CHANGE DETAILS
diff --git a/mercurial/repair.py b/mercurial/repair.py
--- a/mercurial/repair.py
+++ b/mercurial/repair.py
@@ -178,16 +178,13 @@
tmpbundlefile = _bundle(repo, savebases, saveheads, node, 'temp',
compress=False, obsolescence=False)
- mfst = repo.manifestlog._revlog
-
try:
with repo.transaction("strip") as tr:
offset = len(tr.entries)
tr.startgroup()
cl.strip(striprev, tr)
- mfst.strip(striprev, tr)
- striptrees(repo, tr, striprev, files)
+ stripmanifest(repo, striprev, tr, files)
for fn in files:
repo.file(fn).strip(striprev, tr)
@@ -314,6 +311,11 @@
callback.topic = topic
callback.addnodes(nodelist)
+def stripmanifest(repo, striprev, tr, files):
+ revlog = repo.manifestlog._revlog
+ revlog.strip(striprev, tr)
+ striptrees(repo, tr, striprev, files)
+
def striptrees(repo, tr, striprev, files):
if 'treemanifest' in repo.requirements: # safe but unnecessary
# otherwise
To: durham, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list