| Index: tools/merge-to-branch.sh | 
| diff --git a/tools/merge-to-branch.sh b/tools/merge-to-branch.sh | 
| index 260dc8a1493ecb63a96384c8bc520faf4845c1c6..0314cb4cb845ba5df4980c8d48f5365e2a1ebb29 100755 | 
| --- a/tools/merge-to-branch.sh | 
| +++ b/tools/merge-to-branch.sh | 
| @@ -69,8 +69,9 @@ restore_patch_commit_hashes_if_unset() { | 
| } | 
|  | 
| ########## Option parsing | 
| +REVERT_FROM_BLEEDING_EDGE=0 | 
|  | 
| -while getopts ":hs:fp:rm:" OPTION ; do | 
| +while getopts ":hs:fp:rm:R" OPTION ; do | 
| case $OPTION in | 
| h)  usage | 
| exit 0 | 
| @@ -85,6 +86,9 @@ while getopts ":hs:fp:rm:" OPTION ; do | 
| ;; | 
| s)  START_STEP=$OPTARG | 
| ;; | 
| +    R)  REVERSE_PATCH="--reverse" | 
| +        REVERT_FROM_BLEEDING_EDGE=1 | 
| +        ;; | 
| ?)  echo "Illegal option: -$OPTARG" | 
| usage | 
| exit 1 | 
| @@ -104,7 +108,8 @@ touch "$ALREADY_MERGING_SENTINEL_FILE" | 
| initial_environment_checks | 
|  | 
| if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| -  if [ ${#@} -lt 2 ] ; then | 
| +  let MIN_EXPECTED_ARGS=2-$REVERT_FROM_BLEEDING_EDGE | 
| +  if [ ${#@} -lt $MIN_EXPECTED_ARGS ] ; then | 
| if [ -z "$EXTRA_PATCH" ] ; then | 
| die "Either a patch file or revision numbers must be specified" | 
| fi | 
| @@ -113,9 +118,13 @@ if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| fi | 
| fi | 
| echo ">>> Step $CURRENT_STEP: Preparation" | 
| -  MERGE_TO_BRANCH=$1 | 
| -  [[ -n "$MERGE_TO_BRANCH" ]] || die "Please specify a branch to merge to" | 
| -  shift | 
| +  if [ $REVERT_FROM_BLEEDING_EDGE==1 ] ; then | 
| +    MERGE_TO_BRANCH="bleeding_edge" | 
| +  else | 
| +    MERGE_TO_BRANCH=$1 | 
| +    [[ -n "$MERGE_TO_BRANCH" ]] || die "Please specify a branch to merge to" | 
| +    shift | 
| +  fi | 
| persist "MERGE_TO_BRANCH" | 
| common_prepare | 
| fi | 
| @@ -144,7 +153,11 @@ revisions associated with the patches." | 
| done | 
| if [ -n "$REVISION_LIST" ] ; then | 
| if [ -n "$REVERSE_PATCH" ] ; then | 
| -      NEW_COMMIT_MSG="Rollback of$REVISION_LIST in $MERGE_TO_BRANCH branch." | 
| +      if [ $REVERT_FROM_BLEEDING_EDGE -eq 0 ] ; then | 
| +        NEW_COMMIT_MSG="Rollback of$REVISION_LIST in $MERGE_TO_BRANCH branch." | 
| +      else | 
| +        NEW_COMMIT_MSG="Revert$REVISION_LIST." | 
| +      fi | 
| else | 
| NEW_COMMIT_MSG="Merged$REVISION_LIST into $MERGE_TO_BRANCH branch." | 
| fi; | 
| @@ -189,14 +202,14 @@ if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| fi | 
|  | 
| let CURRENT_STEP+=1 | 
| -if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| +if [ $START_STEP -le $CURRENT_STEP ] && [ $REVERT_FROM_BLEEDING_EDGE -eq 0 ] ; then | 
| echo ">>> Step $CURRENT_STEP: Prepare $VERSION_FILE." | 
| # These version numbers are used again for creating the tag | 
| read_and_persist_version | 
| fi | 
|  | 
| let CURRENT_STEP+=1 | 
| -if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| +if [ $START_STEP -le $CURRENT_STEP ] && [ $REVERT_FROM_BLEEDING_EDGE -eq 0 ] ; then | 
| echo ">>> Step $CURRENT_STEP: Increment version number." | 
| restore_if_unset "PATCH" | 
| NEWPATCH=$(($PATCH + 1)) | 
| @@ -234,7 +247,7 @@ if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| fi | 
|  | 
| let CURRENT_STEP+=1 | 
| -if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| +if [ $START_STEP -le $CURRENT_STEP ] && [ $REVERT_FROM_BLEEDING_EDGE -eq 0 ] ; then | 
| echo ">>> Step $CURRENT_STEP: Determine svn commit revision" | 
| restore_if_unset "NEW_COMMIT_MSG" | 
| restore_if_unset "MERGE_TO_BRANCH" | 
| @@ -248,7 +261,7 @@ if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| fi | 
|  | 
| let CURRENT_STEP+=1 | 
| -if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| +if [ $START_STEP -le $CURRENT_STEP ] && [ $REVERT_FROM_BLEEDING_EDGE -eq 0 ] ; then | 
| echo ">>> Step $CURRENT_STEP: Create the tag." | 
| restore_if_unset "SVN_REVISION" | 
| restore_version_if_unset "NEW" | 
| @@ -273,9 +286,11 @@ if [ $START_STEP -le $CURRENT_STEP ] ; then | 
| restore_if_unset "REVISION_LIST" | 
| restore_version_if_unset "NEW" | 
| common_cleanup | 
| -  echo "*** SUMMARY ***" | 
| -  echo "version: $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" | 
| -  echo "branch: $TO_URL" | 
| -  echo "svn revision: $SVN_REVISION" | 
| -  [[ -n "$REVISION_LIST" ]] && echo "patches:$REVISION_LIST" | 
| +  if [ $REVERT_FROM_BLEEDING_EDGE==0 ] ; then | 
| +    echo "*** SUMMARY ***" | 
| +    echo "version: $NEWMAJOR.$NEWMINOR.$NEWBUILD.$NEWPATCH" | 
| +    echo "branch: $TO_URL" | 
| +    echo "svn revision: $SVN_REVISION" | 
| +    [[ -n "$REVISION_LIST" ]] && echo "patches:$REVISION_LIST" | 
| +  fi | 
| fi | 
|  |