| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 # Copyright 2012 the V8 project authors. All rights reserved. | 2 # Copyright 2012 the V8 project authors. All rights reserved. |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following | 10 # copyright notice, this list of conditions and the following |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 cat << EOF | 42 cat << EOF |
| 43 usage: $0 [OPTIONS]... [BRANCH] [REVISION]... | 43 usage: $0 [OPTIONS]... [BRANCH] [REVISION]... |
| 44 | 44 |
| 45 Performs the necessary steps to merge revisions from bleeding_edge | 45 Performs the necessary steps to merge revisions from bleeding_edge |
| 46 to other branches, including trunk. | 46 to other branches, including trunk. |
| 47 | 47 |
| 48 OPTIONS: | 48 OPTIONS: |
| 49 -h Show this message | 49 -h Show this message |
| 50 -s Specify the step where to start work. Default: 0. | 50 -s Specify the step where to start work. Default: 0. |
| 51 -p Specify a patch file to apply as part of the merge | 51 -p Specify a patch file to apply as part of the merge |
| 52 -r Reverse specified patches |
| 52 EOF | 53 EOF |
| 53 } | 54 } |
| 54 | 55 |
| 55 persist_patch_commit_hashes() { | 56 persist_patch_commit_hashes() { |
| 56 echo "PATCH_COMMIT_HASHES=( ${PATCH_COMMIT_HASHES[@]} )" > $COMMIT_HASHES_FILE | 57 echo "PATCH_COMMIT_HASHES=( ${PATCH_COMMIT_HASHES[@]} )" > $COMMIT_HASHES_FILE |
| 57 } | 58 } |
| 58 | 59 |
| 59 restore_patch_commit_hashes() { | 60 restore_patch_commit_hashes() { |
| 60 source $COMMIT_HASHES_FILE | 61 source $COMMIT_HASHES_FILE |
| 61 } | 62 } |
| 62 | 63 |
| 63 restore_patch_commit_hashes_if_unset() { | 64 restore_patch_commit_hashes_if_unset() { |
| 64 [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && restore_patch_commit_hashes | 65 [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && restore_patch_commit_hashes |
| 65 [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && [[ -z "$EXTRA_PATCH" ]] && \ | 66 [[ "${#PATCH_COMMIT_HASHES[@]}" == 0 ]] && [[ -z "$EXTRA_PATCH" ]] && \ |
| 66 die "Variable PATCH_COMMIT_HASHES could not be restored." | 67 die "Variable PATCH_COMMIT_HASHES could not be restored." |
| 67 } | 68 } |
| 68 | 69 |
| 69 ########## Option parsing | 70 ########## Option parsing |
| 70 | 71 |
| 71 while getopts ":hs:fp:" OPTION ; do | 72 while getopts ":hs:fp:r" OPTION ; do |
| 72 case $OPTION in | 73 case $OPTION in |
| 73 h) usage | 74 h) usage |
| 74 exit 0 | 75 exit 0 |
| 75 ;; | 76 ;; |
| 76 p) EXTRA_PATCH=$OPTARG | 77 p) EXTRA_PATCH=$OPTARG |
| 77 ;; | 78 ;; |
| 78 f) rm -f "$ALREADY_MERGING_SENTINEL_FILE" | 79 f) rm -f "$ALREADY_MERGING_SENTINEL_FILE" |
| 79 ;; | 80 ;; |
| 81 r) REVERSE_PATCH="--reverse" |
| 82 ;; |
| 80 s) START_STEP=$OPTARG | 83 s) START_STEP=$OPTARG |
| 81 ;; | 84 ;; |
| 82 ?) echo "Illegal option: -$OPTARG" | 85 ?) echo "Illegal option: -$OPTARG" |
| 83 usage | 86 usage |
| 84 exit 1 | 87 exit 1 |
| 85 ;; | 88 ;; |
| 86 esac | 89 esac |
| 87 done | 90 done |
| 88 let OPTION_COUNT=$OPTIND-1 | 91 let OPTION_COUNT=$OPTIND-1 |
| 89 shift $OPTION_COUNT | 92 shift $OPTION_COUNT |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 [[ -n "$NEXT_HASH" ]] \ | 130 [[ -n "$NEXT_HASH" ]] \ |
| 128 || die "Cannot determine git hash for r$REVISION" | 131 || die "Cannot determine git hash for r$REVISION" |
| 129 PATCH_COMMIT_HASHES[$current]="$NEXT_HASH" | 132 PATCH_COMMIT_HASHES[$current]="$NEXT_HASH" |
| 130 [[ -n "$REVISION_LIST" ]] && REVISION_LIST="$REVISION_LIST," | 133 [[ -n "$REVISION_LIST" ]] && REVISION_LIST="$REVISION_LIST," |
| 131 REVISION_LIST="$REVISION_LIST r$REVISION" | 134 REVISION_LIST="$REVISION_LIST r$REVISION" |
| 132 let current+=1 | 135 let current+=1 |
| 133 done | 136 done |
| 134 if [ -z "$REVISION_LIST" ] ; then | 137 if [ -z "$REVISION_LIST" ] ; then |
| 135 NEW_COMMIT_MSG="Applied patch to $MERGE_TO_BRANCH branch." | 138 NEW_COMMIT_MSG="Applied patch to $MERGE_TO_BRANCH branch." |
| 136 else | 139 else |
| 137 NEW_COMMIT_MSG="Merged$REVISION_LIST into $MERGE_TO_BRANCH branch." | 140 if [ -n "$REVERSE_PATCH" ] ; then |
| 141 NEW_COMMIT_MSG="Rollback of$REVISION_LIST in \ |
| 142 $MERGE_TO_BRANCH branch." |
| 143 else |
| 144 NEW_COMMIT_MSG="Merged$REVISION_LIST into \ |
| 145 $MERGE_TO_BRANCH branch." |
| 146 fi; |
| 138 fi; | 147 fi; |
| 139 | 148 |
| 140 echo "$NEW_COMMIT_MSG" > $COMMITMSG_FILE | 149 echo "$NEW_COMMIT_MSG" > $COMMITMSG_FILE |
| 141 echo "" >> $COMMITMSG_FILE | 150 echo "" >> $COMMITMSG_FILE |
| 142 for HASH in ${PATCH_COMMIT_HASHES[@]} ; do | 151 for HASH in ${PATCH_COMMIT_HASHES[@]} ; do |
| 143 PATCH_MERGE_DESCRIPTION=$(git log -1 --format=%s $HASH) | 152 PATCH_MERGE_DESCRIPTION=$(git log -1 --format=%s $HASH) |
| 144 echo "$PATCH_MERGE_DESCRIPTION" >> $COMMITMSG_FILE | 153 echo "$PATCH_MERGE_DESCRIPTION" >> $COMMITMSG_FILE |
| 145 echo "" >> $COMMITMSG_FILE | 154 echo "" >> $COMMITMSG_FILE |
| 146 done | 155 done |
| 147 for HASH in ${PATCH_COMMIT_HASHES[@]} ; do | 156 for HASH in ${PATCH_COMMIT_HASHES[@]} ; do |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 restore_if_unset "TO_URL" | 267 restore_if_unset "TO_URL" |
| 259 restore_if_unset "REVISION_LIST" | 268 restore_if_unset "REVISION_LIST" |
| 260 restore_version_if_unset "NEW" | 269 restore_version_if_unset "NEW" |
| 261 common_cleanup | 270 common_cleanup |
| 262 echo "*** SUMMARY ***" | 271 echo "*** SUMMARY ***" |
| 263 echo "version: $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" | 272 echo "version: $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" |
| 264 echo "branch: $TO_URL" | 273 echo "branch: $TO_URL" |
| 265 echo "svn revision: $SVN_REVISION" | 274 echo "svn revision: $SVN_REVISION" |
| 266 [[ -n "$REVISION_LIST" ]] && echo "patches:$REVISION_LIST" | 275 [[ -n "$REVISION_LIST" ]] && echo "patches:$REVISION_LIST" |
| 267 fi | 276 fi |
| OLD | NEW |