From 7f29b67f6b679c34adf99fe156130fef0c4192a1 Mon Sep 17 00:00:00 2001 From: Durham Goode Date: Mon, 8 May 2017 11:35:23 -0700 Subject: [PATCH] strip: move tree strip logic to it's own function This will allow external extensions to modify tree strip behavior more precisely. --- mercurial/repair.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mercurial/repair.py b/mercurial/repair.py index 7852408dc1..4a04152bf7 100644 --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -165,13 +165,8 @@ def strip(ui, repo, nodelist, backup=True, topic='backup'): tr.startgroup() cl.strip(striprev, tr) mfst.strip(striprev, tr) - if 'treemanifest' in repo.requirements: # safe but unnecessary - # otherwise - for unencoded, encoded, size in repo.store.datafiles(): - if (unencoded.startswith('meta/') and - unencoded.endswith('00manifest.i')): - dir = unencoded[5:-12] - repo.manifestlog._revlog.dirlog(dir).strip(striprev, tr) + striptrees(repo, tr, striprev, files) + for fn in files: repo.file(fn).strip(striprev, tr) tr.endgroup() @@ -240,6 +235,15 @@ def strip(ui, repo, nodelist, backup=True, topic='backup'): # extensions can use it return backupfile +def striptrees(repo, tr, striprev, files): + if 'treemanifest' in repo.requirements: # safe but unnecessary + # otherwise + for unencoded, encoded, size in repo.store.datafiles(): + if (unencoded.startswith('meta/') and + unencoded.endswith('00manifest.i')): + dir = unencoded[5:-12] + repo.manifestlog._revlog.dirlog(dir).strip(striprev, tr) + def rebuildfncache(ui, repo): """Rebuilds the fncache file from repo history.