Home | History | Annotate | Download | only in git
      1 #!/bin/bash
      2 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 about="Given a grep expression, creates a graph of occurrences of that
      7 expression in the recent history of the tree.
      8 
      9 Prerequisites: git and GNU R (apt-get install r-base).
     10 "
     11 
     12 set -e
     13 
     14 target="$1"
     15 
     16 if [ -z $target ]; then
     17     echo "usage: $0 <grep-compatible expression>"
     18     echo
     19     echo "$about"
     20     exit 1
     21 fi
     22 
     23 datafile=$(mktemp -t tmp.XXXXXXXXXX)
     24 trap "rm -f $datafile" EXIT
     25 
     26 echo 'ago count' > $datafile
     27 for ago in {90..0}; do
     28     commit=$(git rev-list -1 --until="$ago days ago" origin/trunk)
     29     git checkout -q -f $commit
     30     count=$(git grep -E "$target" -- '*.cc' '*.h' '*.m' '*.mm' | wc -l)
     31     echo "-$ago $count" >> $datafile
     32     echo -n '.'
     33 done
     34 
     35 R CMD BATCH <(cat <<EOF
     36 data = read.delim("$datafile", sep=' ')
     37 png(width=600, height=300)
     38 plot(count ~ ago, type="l", main="$target", xlab='days ago', data=data)
     39 EOF
     40 ) /dev/null
     41 
     42 echo done.  # Primarily to add a newline after all the dots.
     43