3 ms·
I have not used this in a while but here is an old function from /etc/profile.d/functions.sh on Alpine that I used to tame some unwieldy .git folders in the pas
by LinuxBender 2y ago
I have not used this in a while but here is an old function from /etc/profile.d/functions.sh on Alpine that I used to tame some unwieldy .git folders in the past. No idea if any of it has been deprecated. It's like one big monster alias. Nowadays I instead just clone a repo to a ramdisk, purge the .git folder and then rsync it to my hoarded stash of git repos.
function gitgc()
{
git config --global core.compression 6
git config --global core.loosecompression 6
git config --global pack.compression 6
git config --global core.autocrlf input
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global branch.autosetuprebase always
git config --global pack.threads "2"
git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m"
export GIT_HTTP_MAX_REQUEST_BUFFER=100M
git config --global ssh.postBuffer 1000000000
git config --global http.postBuffer 1000000000
# echo '*.zip -delta' > .gitattributes
# echo '*.jpg -delta' >> .gitattributes
# echo '*.bin binary -delta' >> .gitattributes
git fsck --full --unreachable;
git repack -a -d -F --depth=1 --window=10;
git reflog expire --all --expire=now --expire-unreachable=now;
git repack -a -d -F --depth=1 --window=10;
git gc --prune=now --aggressive;
git fsck --full --unreachable;
}
- gcmeplz 2y ago> Nowadays I instead just clone a repo to a ramdisk, purge the .git folder and then rsync it to my hoarded stash of git repos. You're probably already doing this, but if you do a shallow clone (git clone --depth=1 ..) you'll limit the amount that ends up in .git that you need to purge. Even with shallow clones, I'm still surprised that it ends up with a .git that's a decent percentage of the total. I just tried it on a repo and ended up with 16% of the total size being .git. I would have guessed that it'd be much smaller than that.
- LinuxBender 2y agoI had also tried that but some repos still get fairly big and all I wanted was the code not the .git since I am not a proper developer. To your point they can still be quite large. cd /dev/shm/block && git clone -j4 --depth=1 --branch=master https://github.com/firehol/blocklist-ipsets.git du --max-depth 1 -hc 24M ./ipip_country 4.0M ./ipdeny_country 9.6M ./ip2location_country 6.9M ./geolite2_country 25M ./.git 140M . 140M total It's not awful but I currently keep up to date copies of about 300 git repos and if I keep all the big ones it can add up to several GB of data I do not need. For now I just clone to a ramdisk and whack the .git directory for several of the big ones before I rsync back to disk. I probably lose some interesting history doing that.