#!/bin/sh # How much of the very original version from Linus survive? _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40" summary= while case $# in 0) break ;; esac do case "$1" in -s | --summary) summary=t ;; -*) echo >&2 "$1: unknown option" exit 1 ;; *) break ;; esac shift done if test $# = 0 then this=HEAD else this=$1 shift fi if test $# = 0 then initial=e83c5163316f89bfbde7d9ab23ca2e25604af290 range="..$this" else initial=$1 range="$initial..$this" shift fi this=$(git rev-parse --verify "$this^0") && initial=$(git rev-parse --verify "$initial^0") || exit tmp="/var/tmp/Linus.$$" trap 'rm -f "$tmp".*' 0 # We blame each file in the initial revision pretending as if it is a # direct descendant of the given version, and also pretend that the # latter is a root commit. This way, lines in the initial revision # that survived to the other version can be identified (they will be # attributed to the other version). graft="$tmp.graft" && { echo "$initial $this" echo "$this" } >"$graft" || exit opts='-C -C -C -w' show () { s=$1 t=$2 n=$3 p=$(($s * 100 / $t)) c=$(($s * 10000 / $t - $p * 100)) printf "%12d %12d %s (%d.%02d%%)\n" $s $t $n $p $c } empty_tree=$(git hash-object -t tree -w --stdin