#!/bin/bash
#=======================================================================#
#         Simple script for repacking all not packed git repos          #
#=======================================================================#
# (c) Denis Smirnov <mithraen@freesource.info>                          #
#=======================================================================#
WLEN=150
DEPTH=150

repack_here()
{
	git repack -a -d -f --window=$WLEN --depth=$DEPTH
}

find -type f \
	| grep git/objects \
	| grep -v /pack/pack- \
	| grep -v /packs$ \
	| sed 's!/objects/.*!!' \
	| sed 's/.git$//' \
	| uniq | while read a; do
	  pushd "$a" > /dev/null
	  echo $a
	  git prune
	  repack_here
	  popd
	done
find -type f \
	| grep git/objects \
	| grep -v /pack/pack- \
	| grep -v /packs$ \
	| sed 's!/objects/.*!!' \
	| uniq

