survived 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/zsh
  2. wordiness=$1
  3. author=""
  4. survived=0
  5. survived_lines=0
  6. function diffone {
  7. this_author=`git show -s --pretty=short $1 | tail -n +2 | head -n 1 | grep -oE ": .* <" | sed 's/: //' | sed 's/ <//' | tr ' ' '_'`
  8. if [[ "$author" != "$this_author" ]]; then
  9. return
  10. fi
  11. this_survived=`git show --minimal --oneline $1 -- ./main.tex | tail -n +6 | wdiff -d -1 -3 -i | grep -v -E "^=+$" | sed 's/[^\\]%.*//' | grep -v -E "^ *%.*" | grep -v -E "^ *$" | grep -v -E "^@" | grep -E "([^ ]+ ){$wordiness}.*[^ ]+" | wdiff -1 -2 -i ./main.tex - | grep -v -E "^=+$" | sed 's/[^\\]%.*//' | grep -v -E "^%.*" | grep -v -E "^ *$" | grep -v -E "^@" | grep -E "([^ ]+ ){$wordiness}.*[^ ]+" | wc -w`
  12. this_survived_lines=`git show --minimal --oneline $1 -- ./main.tex | tail -n +6 | wdiff -d -1 -3 -i | grep -v -E "^=+$" | sed 's/[^\\]%.*//' | grep -v -E "^ *%.*" | grep -v -E "^ *$" | grep -v -E "^@" | grep -E "([^ ]+){$wordiness}.*[^ ]+ [^ ]+ [^ ]+" | wdiff -1 -2 -i ./main.tex - | grep -v -E "^=+$" | sed 's/[^\\]%.*//' | grep -v -E "^%.*" | grep -v -E "^ *$" | grep -v -E "^@" | grep -E "([^ ]+ ){$wordiness}.*[^ ]+ [^ ]+ [^ ]+" | wc -l`
  13. survived=$((survived+this_survived))
  14. survived_lines=$((survived_lines+this_survived_lines))
  15. }
  16. head=`git show -s --oneline HEAD | head -n 1 | sed 's/ .*//'`
  17. function oneauthor {
  18. author=$1
  19. survived=0
  20. survived_lines=0
  21. for h in `git log --all --oneline | sed 's/ .*//'`; do
  22. # if [[ "$head" != "$h" ]]; then
  23. diffone $h
  24. # fi
  25. done
  26. echo -e "$2\t$survived\t$survived_lines"
  27. }
  28. echo "== Survived lines per author =="
  29. for a in `git log | grep -E "^Author:" | grep -oE ": .* <" | sed 's/: //' | sed 's/ <//' | sort -u | tr ' ' '_'`; do
  30. aname=`printf "%25s\t\n" $a`
  31. aname=${aname/_/ }
  32. oneauthor $a "$aname"
  33. done