diff -r a2be2abe9476 -r 7bcc9a5ab96e mercurial/repair.py --- a/mercurial/repair.py Mon May 08 11:35:23 2017 -0700 +++ b/mercurial/repair.py Mon May 08 11:35:23 2017 -0700 @@ -238,11 +238,12 @@ 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) + treerevlog = repo.manifestlog._revlog + for dir in util.dirs(files): + # If the revlog doesn't exist, this returns an empty revlog and is a + # no-op. + rl = treerevlog.dirlog(dir) + rl.strip(striprev, tr) def rebuildfncache(ui, repo): """Rebuilds the fncache file from repo history.