141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#!/bin/bash
241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# Copyright 2013 the V8 project authors. All rights reserved.
341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# Redistribution and use in source and binary forms, with or without
441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# modification, are permitted provided that the following conditions are
541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# met:
641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#
741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#     * Redistributions of source code must retain the above copyright
841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       notice, this list of conditions and the following disclaimer.
941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#     * Redistributions in binary form must reproduce the above
1041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       copyright notice, this list of conditions and the following
1141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       disclaimer in the documentation and/or other materials provided
1241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       with the distribution.
1341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#     * Neither the name of Google Inc. nor the names of its
1441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       contributors may be used to endorse or promote products derived
1541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#       from this software without specific prior written permission.
1641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#
1741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
2941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
3041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Global variable definitions
3141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
3241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgDEPS_STRING='"v8_revision":'
3341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgINFO=tools/v8-info.sh
3441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
3541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgV8="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
3641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
3741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Function definitions
3841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
3941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgusage() {
4041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgcat << EOF
4141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgusage: $0 OPTIONS
4241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
4341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgRun in chromium/src to get information about V8 rolls.
4441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
4541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgOPTIONS:
4641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  -h    Show this message.
4741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  -n    Number of rolls to print information about.
4841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  -s    Chromium git hash to start printing V8 information about.
4941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgEOF
5041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
5141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
5241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_line() {
5341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  git show $1:DEPS | grep -n $DEPS_STRING | cut -d":" -f1
5441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
5541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
5641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_info() {
5741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  git blame -L$(v8_line $1),+1 $1 DEPS | grep $DEPS_STRING
5841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
5941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
6041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_svn() {
6141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  sed -e 's/^.*"\([0-9]\+\)",$/\1/'
6241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
6341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
6441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_roll() {
6541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  cut -d" " -f1
6641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
6741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
6841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgfind_rev() {
6941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  git svn find-rev $1
7041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
7141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
7241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgmsg() {
7341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  msg=$(git log --format="%h %ci %ce" -1 $1)
7441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  h=$(echo $msg | cut -d" " -f1)
7541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  d=$(echo $msg | cut -d" " -f2)
7641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  t=$(echo $msg | cut -d" " -f3)
7741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  a=$(echo $msg | cut -d" " -f5)
7841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  a1=$(echo $a | cut -d"@" -f1)
7941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  a2=$(echo $a | cut -d"@" -f2)
8041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  echo $h $d $t $a1@$a2
8141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
8241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
8341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_revision() {
8441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  cd $V8
8541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  $INFO -v $1
8641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
8741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
8841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgrolls() {
8941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  roll=$2
9041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  for i in $(seq 1 $1); do
9141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    info=$(v8_info $roll)
9241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    roll=$(echo $info | v8_roll $roll)
9341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    trunk=$(echo $info | v8_svn $roll)
9441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    echo "$(v8_revision $trunk) $trunk $(find_rev $roll) $(msg $roll)"
9541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    roll=$roll^1
9641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  done
9741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org}
9841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
9941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Option parsing
10041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
10141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgREVISIONS=1
10241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgSTART=HEAD
10341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
10441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgwhile getopts ":hn:s:" OPTION ; do
10541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  case $OPTION in
10641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    h)  usage
10741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        exit 0
10841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        ;;
10941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    n) REVISIONS=$OPTARG
11041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        ;;
11141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    s) START=$OPTARG
11241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        ;;
11341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org    ?)  echo "Illegal option: -$OPTARG"
11441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        usage
11541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        exit 1
11641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org        ;;
11741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org  esac
11841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgdone
11941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org
12041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgrolls $REVISIONS $START
121