Home | History | Annotate | Download | only in release
      1 #!/bin/sh
      2 #===-- merge.sh - Test the LLVM release candidates -------------------------===#
      3 #
      4 #                     The LLVM Compiler Infrastructure
      5 #
      6 # This file is distributed under the University of Illinois Open Source
      7 # License.
      8 #
      9 #===------------------------------------------------------------------------===#
     10 #
     11 # Merge a revision into a project.
     12 #
     13 #===------------------------------------------------------------------------===#
     14 
     15 set -e
     16 
     17 rev=""
     18 proj=""
     19 revert="no"
     20 
     21 function usage() {
     22     echo "usage: `basename $0` [OPTIONS]"
     23     echo "  -proj PROJECT  The project to merge the result into"
     24     echo "  -rev NUM       The revision to merge into the project"
     25     echo "  -revert        Revert rather than merge the commit"
     26 }
     27 
     28 while [ $# -gt 0 ]; do
     29     case $1 in
     30         -rev | --rev | -r )
     31             shift
     32             rev=$1
     33             ;;
     34         -proj | --proj | -project | --project | -p )
     35             shift
     36             proj=$1
     37             ;;
     38         -h | -help | --help )
     39             usage
     40             ;;
     41         -revert | --revert )
     42             revert="yes"
     43             ;;
     44         * )
     45             echo "unknown option: $1"
     46             echo ""
     47             usage
     48             exit 1
     49             ;;
     50     esac
     51     shift
     52 done
     53 
     54 if [ "x$rev" = "x" -o "x$proj" = "x" ]; then
     55     echo "error: need to specify project and revision"
     56     echo
     57     usage
     58     exit 1
     59 fi
     60 
     61 if ! svn ls http://llvm.org/svn/llvm-project/$proj/trunk > /dev/null 2>&1 ; then
     62     echo "error: invalid project: $proj"
     63     exit 1
     64 fi
     65 
     66 tempfile=`mktemp /tmp/merge.XXXXXX` || exit 1
     67 
     68 if [ $revert = "yes" ]; then
     69     echo "Reverting r$rev:" > $tempfile
     70 else
     71     echo "Merging r$rev:" > $tempfile
     72 fi
     73 svn log -c $rev http://llvm.org/svn/llvm-project/$proj/trunk >> $tempfile 2>&1
     74 
     75 cd $proj.src
     76 echo "# Updating tree"
     77 svn up
     78 
     79 if [ $revert = "yes" ]; then
     80     echo "# Reverting r$rev in $proj locally"
     81     svn merge -c -$rev . || exit 1
     82 else
     83     echo "# Merging r$rev into $proj locally"
     84     svn merge -c $rev https://llvm.org/svn/llvm-project/$proj/trunk . || exit 1
     85 fi
     86 
     87 echo
     88 echo "# To commit, run the following in $proj.src/:"
     89 echo svn commit -F $tempfile
     90 
     91 exit 0
     92