Re: Trying to use git-filter-branch to compress history by removing large, obsolete binary files
- From
Elijah Newren <newren@gmail.com>
- Date
- Oct 8, 2007, 00:09 UTC
- Message-ID
- <51419b2c0710071709s2f797df0u986447f5455f306d@mail.gmail.com>
- In-Reply-To
- <20071007234039.GH2765@steel.home>
On 10/7/07, Alex Riesen <raa.lkml@gmail.com> wrote:
> you missed something. Your example compresses to about 124k.
What version of git are you running? I reran all the steps to which you responded (repeated below for clarity) with git-1.5.3.3 and still get 11MB. Also, you must have different filesystem extents than me since an empty git repo takes 196k here[1], so I don't think any repo is going to get down to 124k.
My understanding of the steps you suggest would work:
# Make a small repo mkdir test cd test git init echo hi > there git add there git commit -m 'Small repo'
# Add a random 10M binary file dd if=/dev/urandom of=testme.txt count=10 bs=1M git add testme.txt git commit -m 'Add big binary file'
# Remove the 10M binary file git rm testme.txt git commit -m 'Remove big binary file'
# Compress the repo, see how big the repo is git gc --aggressive --prune du -ks . # 10548K du -ks .git # 10532K
# Try to rewrite history to remove the binary file git-filter-branch --tree-filter 'rm -f testme.txt' HEAD git reset --hard
# Try to recompress and clean up, then check the new size git gc --aggressive --prune du -ks . # 10580K !?!?!? du -ks .git # 10564K
# Do the stuff Alex suggests to trim the history rm -rf .git/refs/original/ vi .git/packed-refs # Use vi to remove the line referring to refs/original... git reflog expire --all git gc --aggressive --prune du -ks . # Still 10564K
Thanks, Elijah
[1] An empty git repo takes 196k for me, as can be seen by: $mkdir tmp $cd tmp $git init $du -hs . 196K .