| #!/bin/sh | |
| #===-- merge.sh - Test the LLVM release candidates -------------------------===# | |
| # | |
| # The LLVM Compiler Infrastructure | |
| # | |
| # This file is distributed under the University of Illinois Open Source | |
| # License. | |
| # | |
| #===------------------------------------------------------------------------===# | |
| # | |
| # Merge a revision into a project. | |
| # | |
| #===------------------------------------------------------------------------===# | |
| set -e | |
| rev="" | |
| proj="" | |
| revert="no" | |
| srcdir="" | |
| usage() { | |
| echo "usage: `basename $0` [OPTIONS]" | |
| echo " -proj PROJECT The project to merge the result into" | |
| echo " -rev NUM The revision to merge into the project" | |
| echo " -revert Revert rather than merge the commit" | |
| echo " -srcdir The root of the project checkout" | |
| } | |
| while [ $# -gt 0 ]; do | |
| case $1 in | |
| -rev | --rev | -r ) | |
| shift | |
| rev=$1 | |
| ;; | |
| -proj | --proj | -project | --project | -p ) | |
| shift | |
| proj=$1 | |
| ;; | |
| --srcdir | -srcdir | -s) | |
| shift | |
| srcdir=$1 | |
| ;; | |
| -h | -help | --help ) | |
| usage | |
| ;; | |
| -revert | --revert ) | |
| revert="yes" | |
| ;; | |
| * ) | |
| echo "unknown option: $1" | |
| echo "" | |
| usage | |
| exit 1 | |
| ;; | |
| esac | |
| shift | |
| done | |
| if [ -z "$srcdir" ]; then | |
| srcdir="$proj.src" | |
| fi | |
| if [ "x$rev" = "x" -o "x$proj" = "x" ]; then | |
| echo "error: need to specify project and revision" | |
| echo | |
| usage | |
| exit 1 | |
| fi | |
| if ! svn ls http://llvm.org/svn/llvm-project/$proj/trunk > /dev/null 2>&1 ; then | |
| echo "error: invalid project: $proj" | |
| exit 1 | |
| fi | |
| tempfile=`mktemp /tmp/merge.XXXXXX` || exit 1 | |
| if [ $revert = "yes" ]; then | |
| echo "Reverting r$rev:" > $tempfile | |
| else | |
| echo "Merging r$rev:" > $tempfile | |
| fi | |
| svn log -c $rev http://llvm.org/svn/llvm-project/$proj/trunk >> $tempfile 2>&1 | |
| cd "$srcdir" | |
| echo "# Updating tree" | |
| svn up | |
| if [ $revert = "yes" ]; then | |
| echo "# Reverting r$rev in $proj locally" | |
| svn merge -c -$rev . || exit 1 | |
| else | |
| echo "# Merging r$rev into $proj locally" | |
| svn merge -c $rev https://llvm.org/svn/llvm-project/$proj/trunk . || exit 1 | |
| fi | |
| echo | |
| echo "# To commit, run the following in $srcdir/:" | |
| echo svn commit -F $tempfile | |
| exit 0 |