Re: [PATCH] Documentation: pruning recipe for destructive filter-branch
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:46:10
Thomas Rast [off-list ref] writes:
quoted hunk
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 [off-list ref], -- 1.6.2.rc0.274.g97213 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html