Thomas Rast <trast@xxxxxxxxxxxxxxx> writes: > diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt > index 1fbbbb4..737c555 100644 > --- a/Documentation/git-filter-branch.txt > +++ b/Documentation/git-filter-branch.txt > @@ -339,6 +339,42 @@ git filter-branch --index-filter \ > --------------------------------------------------------------- > > > + > +Checklist for Shrinking a Repository > +------------------------------------ > + > +git-filter-branch is often used to get rid of a subset of files, > +usually with some combination of `\--index-filter` and > +`\--subdirectory-filter`. If you want to physically shrink the > +repository afterwards, you have some choices: > + > +* Clone it with `git clone file:///path/to/repo`. The clone will not > + have the removed objects. See linkgit:git-clone[1]. (Note that > + cloning with a plain path just hardlinks everything!) > + > +If you really don't want to clone it, for whatever reasons, check the > +following points (in this order). This is a very destructive > +approach, so *make a backup* or go back to cloning it. You have been > +warned. Sounds sane so far and even somewhat amusing. > +* Make sure you really removed all variants of a filename, if a blob > + was moved over its lifetime. `git log \--follow \--all \-- foo` can > + help you find renames. > + > +* Make sure you really filtered all refs: use `\--tag-name-filter cat > + \-- \--all` when calling git-filter-branch. Don't these two apply equally to "git clone" approach? Only the remaining four are specific to in-place pruning, if I am reading this correctly. > +* Make sure you remove the original refs backed up by > + git-filter-branch: say `git for-each-ref \--format="%(refname)" > + refs/original/ | xargs -n 1 git update-ref -d`. > + > +* Expire all reflogs with `git reflog expire \--expire=now \--all`. > + > +* Repack to remove packed objects with `git repack -ad`. > + > +* Prune unpacked unreferenced objects with `git prune \--expire=now`. > + > + > Author > ------ > Written by Petr "Pasky" Baudis <pasky@xxxxxxx>, > -- > 1.6.2.rc0.274.g97213 > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html