Skip to content
Snippets Groups Projects
  • Martin von Zweigbergk's avatar
    87c184c9
    treemanifests: actually strip directory manifests · 87c184c9
    Martin von Zweigbergk authored
    Stripping has only partly worked since 7cbb3a01fa38 (repair: use cg3
    for treemanifests, 2016-01-19): the bundle seems to have been created
    correctly, but revlog entries in subdirectory revlogs were not
    stripped. This meant that e.g. "hg verify" would fail after stripping
    in a tree manifest repo.
    
    To find the revisions to strip, we simply iterate over all directories
    in the repo (included in store.datafiles()). This is inefficient for
    stripping few commits, but efficient for stripping many commits. To
    optimize for stripping few commits, we could instead walk the tree
    from the root and find modified subdirectories, just like we do in the
    changegroup code. I'm leaving that for another day.
    87c184c9
    History
    treemanifests: actually strip directory manifests
    Martin von Zweigbergk authored
    Stripping has only partly worked since 7cbb3a01fa38 (repair: use cg3
    for treemanifests, 2016-01-19): the bundle seems to have been created
    correctly, but revlog entries in subdirectory revlogs were not
    stripped. This meant that e.g. "hg verify" would fail after stripping
    in a tree manifest repo.
    
    To find the revisions to strip, we simply iterate over all directories
    in the repo (included in store.datafiles()). This is inefficient for
    stripping few commits, but efficient for stripping many commits. To
    optimize for stripping few commits, we could instead walk the tree
    from the root and find modified subdirectories, just like we do in the
    changegroup code. I'm leaving that for another day.