- add sources.
[platform/framework/web/crosswalk.git] / src / tools / git / graph.sh
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.