strip: move tree strip logic to it's own function

This will allow external extensions to modify tree strip behavior more
precisely.
This commit is contained in:
Durham Goode 2017-05-08 11:35:23 -07:00
parent 53fada2d33
commit 7f29b67f6b

View File

@ -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.