13ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch#!/bin/bash 23ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# Copyright 2012 the V8 project authors. All rights reserved. 33ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# Redistribution and use in source and binary forms, with or without 43ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# modification, are permitted provided that the following conditions are 53ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# met: 63ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# 73ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# * Redistributions of source code must retain the above copyright 83ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# notice, this list of conditions and the following disclaimer. 93ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# * Redistributions in binary form must reproduce the above 103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# copyright notice, this list of conditions and the following 113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# disclaimer in the documentation and/or other materials provided 123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# with the distribution. 133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# * Neither the name of Google Inc. nor the names of its 143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# contributors may be used to endorse or promote products derived 153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# from this software without specific prior written permission. 163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# 173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch########## Global variable definitions 303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 313ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochBRANCHNAME=prepare-merge 323ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochPERSISTFILE_BASENAME=/tmp/v8-merge-to-branch-tempfile 333ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochALREADY_MERGING_SENTINEL_FILE="$PERSISTFILE_BASENAME-already-merging" 343ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochCOMMIT_HASHES_FILE="$PERSISTFILE_BASENAME-PATCH_COMMIT_HASHES" 353ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochTEMPORARY_PATCH_FILE="$PERSISTFILE_BASENAME-temporary-patch" 363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch########## Function definitions 383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochsource $(dirname $BASH_SOURCE)/common-includes.sh 403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochusage() { 423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochcat << EOF 433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochusage: $0 [OPTIONS]... [BRANCH] [REVISION]... 443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 453ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochPerforms the necessary steps to merge revisions from bleeding_edge 463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochto other branches, including trunk. 473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 483ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochOPTIONS: 493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch -h Show this message 503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch -s Specify the step where to start work. Default: 0. 513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch -p Specify a patch file to apply as part of the merge 523ef787dbeca8a5fb1086949cda830dccee07bfbdBen MurdochEOF 533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochpersist_patch_commit_hashes() { 563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "PATCH_COMMIT_HASHES=( ${PATCH_COMMIT_HASHES[@]} )" > $COMMIT_HASHES_FILE 573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochrestore_patch_commit_hashes() { 603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch source $COMMIT_HASHES_FILE 613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochrestore_patch_commit_hashes_if_unset() { 643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && restore_patch_commit_hashes 653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && [[ -z "$EXTRA_PATCH" ]] && \ 663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch die "Variable PATCH_COMMIT_HASHES could not be restored." 673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch} 683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch########## Option parsing 703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochwhile getopts ":hs:fp:" OPTION ; do 723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch case $OPTION in 733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch h) usage 743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch exit 0 753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ;; 763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch p) EXTRA_PATCH=$OPTARG 773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ;; 783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch f) rm -f "$ALREADY_MERGING_SENTINEL_FILE" 793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ;; 803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch s) START_STEP=$OPTARG 813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ;; 823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ?) echo "Illegal option: -$OPTARG" 833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch usage 843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch exit 1 853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch ;; 863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch esac 873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochdone 883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet OPTION_COUNT=$OPTIND-1 893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochshift $OPTION_COUNT 903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch########## Regular workflow 923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch# If there is a merge in progress, abort. 943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch[[ -e "$ALREADY_MERGING_SENTINEL_FILE" ]] && [[ $START_STEP -eq 0 ]] \ 953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch && die "A merge is already in progress" 963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochtouch "$ALREADY_MERGING_SENTINEL_FILE" 973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochinitial_environment_checks 993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ ${#@} -lt 2 ] && [ -z "$EXTRA_PATCH" ] ; then 1023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch die "Either a patch file or revision numbers must be specified" 1033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 1043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Preparation" 1053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch MERGE_TO_BRANCH=$1 1063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -n "$MERGE_TO_BRANCH" ]] || die "Please specify a branch to merge to" 1073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch shift 1083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist "MERGE_TO_BRANCH" 1093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch common_prepare 1103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 1113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 1133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Create a fresh branch for the patch." 1153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "MERGE_TO_BRANCH" 1163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git checkout -b $BRANCHNAME svn/$MERGE_TO_BRANCH \ 1173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch || die "Creating branch $BRANCHNAME failed." 1183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 1193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 1213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Find the git \ 1233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochrevisions associated with the patches." 1243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch current=0 1253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for REVISION in "$@" ; do 1263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch NEXT_HASH=$(git svn find-rev "r$REVISION" svn/bleeding_edge) 1273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -n "$NEXT_HASH" ]] \ 1283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch || die "Cannot determine git hash for r$REVISION" 1293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PATCH_COMMIT_HASHES[$current]="$NEXT_HASH" 1303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -n "$REVISION_LIST" ]] && REVISION_LIST="$REVISION_LIST," 1313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch REVISION_LIST="$REVISION_LIST r$REVISION" 1323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch let current+=1 1333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch done 1343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ -z "$REVISION_LIST" ] ; then 1353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch NEW_COMMIT_MSG="Applied patch to $MERGE_TO_BRANCH branch." 1363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch else 1373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch NEW_COMMIT_MSG="Merged$REVISION_LIST into $MERGE_TO_BRANCH branch." 1383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi; 1393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "$NEW_COMMIT_MSG" > $COMMITMSG_FILE 1413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "" >> $COMMITMSG_FILE 1423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for HASH in ${PATCH_COMMIT_HASHES[@]} ; do 1433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch PATCH_MERGE_DESCRIPTION=$(git log -1 --format=%s $HASH) 1443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "$PATCH_MERGE_DESCRIPTION" >> $COMMITMSG_FILE 1453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "" >> $COMMITMSG_FILE 1463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch done 1473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for HASH in ${PATCH_COMMIT_HASHES[@]} ; do 1483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch BUG=$(git log -1 $HASH | grep "BUG=" | awk -F '=' '{print $NF}') 1493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ -n "$BUG" ] ; then 1503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -n "$BUG_AGGREGATE" ]] && BUG_AGGREGATE="$BUG_AGGREGATE," 1513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch BUG_AGGREGATE="$BUG_AGGREGATE$BUG" 1523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 1533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch done 1543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ -n "$BUG_AGGREGATE" ] ; then 1553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "BUG=$BUG_AGGREGATE" >> $COMMITMSG_FILE 1563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 1573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist "NEW_COMMIT_MSG" 1583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist "REVISION_LIST" 1593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist_patch_commit_hashes 1603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 1613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 1633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Apply patches for selected revisions." 1653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "MERGE_TO_BRANCH" 1663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_patch_commit_hashes_if_unset "PATCH_COMMIT_HASHES" 1673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch rm -f "$TOUCHED_FILES_FILE" 1683ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch for HASH in ${PATCH_COMMIT_HASHES[@]} ; do 1693ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "Applying patch for $HASH to $MERGE_TO_BRANCH..." 1703ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git log -1 -p $HASH > "$TEMPORARY_PATCH_FILE" 1713ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch apply_patch "$TEMPORARY_PATCH_FILE" 1723ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch done 1733ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ -n "$EXTRA_PATCH" ] ; then 1743ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch apply_patch "$EXTRA_PATCH" 1753ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 1763ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch stage_files 1773ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 1783ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1793ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 1803ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1813ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Prepare $VERSION_FILE." 1823ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch # These version numbers are used again for creating the tag 1833ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch read_and_persist_version 1843ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 1853ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 1863ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 1873ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 1883ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Increment version number." 1893ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "PATCH" 1903ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch NEWPATCH=$(($PATCH + 1)) 1913ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch confirm "Automatically increment PATCH_LEVEL? (Saying 'n' will fire up \ 1923ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochyour EDITOR on $VERSION_FILE so you can make arbitrary changes. When \ 1933ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochyou're done, save the file and exit your EDITOR.)" 1943ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ $? -eq 0 ] ; then 1953ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch sed -e "/#define PATCH_LEVEL/s/[0-9]*$/$NEWPATCH/" \ 1963ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch -i "$VERSION_FILE" 1973ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch else 1983ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch $EDITOR "$VERSION_FILE" 1993ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 2003ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch read_and_persist_version "NEW" 2013ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 2023ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2033ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 2043ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 2053ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Commit to local branch." 2063ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git commit -a -F "$COMMITMSG_FILE" \ 2073ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch || die "'git commit -a' failed." 2083ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 2093ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2103ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochupload_step 2113ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2123ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 2133ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 2143ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Commit to the repository." 2153ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "MERGE_TO_BRANCH" 2163ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git checkout $BRANCHNAME \ 2173ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch || die "cannot ensure that the current branch is $BRANCHNAME" 2183ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch wait_for_lgtm 2193ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git cl dcommit || die "failed to commit to $MERGE_TO_BRANCH" 2203ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 2213ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2223ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 2233ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 2243ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Determine svn commit revision" 2253ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "NEW_COMMIT_MSG" 2263ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "MERGE_TO_BRANCH" 2273ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch git svn fetch || die "'git svn fetch' failed." 2283ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch COMMIT_HASH=$(git log -1 --format=%H --grep="$NEW_COMMIT_MSG" \ 2293ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch svn/$MERGE_TO_BRANCH) 2303ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -z "$COMMIT_HASH" ]] && die "Unable to map git commit to svn revision" 2313ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch SVN_REVISION=$(git svn find-rev $COMMIT_HASH) 2323ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "subversion revision number is r$SVN_REVISION" 2333ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist "SVN_REVISION" 2343ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 2353ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2363ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 2373ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 2383ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Create the tag." 2393ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "SVN_REVISION" 2403ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_version_if_unset "NEW" 2413ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "Creating tag svn/tags/$NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" 2423ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch if [ "$MERGE_TO_BRANCH" == "trunk" ] ; then 2433ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch TO_URL="$MERGE_TO_BRANCH" 2443ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch else 2453ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch TO_URL="branches/$MERGE_TO_BRANCH" 2463ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch fi 2473ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch svn copy -r $SVN_REVISION \ 2483ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch https://v8.googlecode.com/svn/$TO_URL \ 2493ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch https://v8.googlecode.com/svn/tags/$NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH \ 2503ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch -m "Tagging version $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" 2513ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch persist "TO_URL" 2523ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 2533ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch 2543ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochlet CURRENT_STEP+=1 2553ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochif [ $START_STEP -le $CURRENT_STEP ] ; then 2563ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo ">>> Step $CURRENT_STEP: Cleanup." 2573ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "SVN_REVISION" 2583ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "TO_URL" 2593ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_if_unset "REVISION_LIST" 2603ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch restore_version_if_unset "NEW" 2613ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch common_cleanup 2623ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "*** SUMMARY ***" 2633ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "version: $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" 2643ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "branch: $TO_URL" 2653ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch echo "svn revision: $SVN_REVISION" 2663ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdoch [[ -n "$REVISION_LIST" ]] && echo "patches:$REVISION_LIST" 2673ef787dbeca8a5fb1086949cda830dccee07bfbdBen Murdochfi 268