Index: tools/git/graph.sh |
diff --git a/tools/git/graph.sh b/tools/git/graph.sh |
new file mode 100755 |
index 0000000000000000000000000000000000000000..9b79ffb57dd25db16e6e83babed522fe0d967146 |
--- /dev/null |
+++ b/tools/git/graph.sh |
@@ -0,0 +1,42 @@ |
+#!/bin/bash |
+# Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+about="Given a grep expression, creates a graph of occurrences of that |
+expression in the recent history of the tree. |
+ |
+Prerequisites: git and GNU R (apt-get install r-base). |
+" |
+ |
+set -e |
+ |
+target="$1" |
+ |
+if [ -z $target ]; then |
+ echo "usage: $0 <grep-compatible expression>" |
+ echo |
+ echo "$about" |
+ exit 1 |
+fi |
+ |
+datafile=$(mktemp) |
+echo 'ago count' > $datafile |
+for ago in $(seq 90 -1 0); do |
Nico
2010/08/05 18:11:53
`for ago in {90..0}; do` instead?
|
+ commit=$(git rev-list -1 --until="$ago days ago" origin/trunk) |
+ git checkout -q -f $commit |
+ count=$(git grep -E "$target" -- '*.cc' '*.h' '*.m' '*.mm' | wc -l) |
+ echo "-$ago $count" >> $datafile |
+ echo -n '.' |
+done |
+ |
+R CMD BATCH <(cat <<EOF |
Nico
2010/08/05 18:11:53
Neat, I wasn't actively aware that <() evaluates t
|
+data = read.delim("$datafile", sep=' ') |
+png(width=600, height=300) |
+plot(count ~ ago, type="l", main="$target", xlab='days ago', data=data) |
+EOF |
+) /dev/null |
+ |
+echo done. |
+ |
+rm -f $datafile |
Nico
2010/08/05 18:11:53
do you want a trap for this? if not, maybe a comme
|