3 # Script to deltafy an entire GIT repository based on the commit list.
4 # The most recent version of a file is the reference and previous versions
5 # are made delta against the best earlier version available. And so on for
6 # successive versions going back in time. This way the delta overhead is
7 # pushed towards older version of any given file.
9 # NOTE: the "best earlier version" is not implemented in mkdelta yet
10 # and therefore only the next eariler version is used at this time.
12 # TODO: deltafy tree objects as well.
14 # The -d argument allows to provide a limit on the delta chain depth.
15 # If 0 is passed then everything is undeltafied.
20 [ "$1" == "-d" ] && depth
="--max-depth=$2" && shift 2
25 git-diff-tree
-r --stdin |
26 sed -n '/^\*/ s/^.*->\(.\{41\}\)\(.*\)$/\2 \1/p' |
sort |
uniq |
27 while read file sha1
; do
28 if [ "$file" == "$curr_file" ]; then
32 echo "Processing $curr_file"
33 echo "$head $list" |
xargs git-mkdelta
$depth -v