llvm-6502/utils/release/merge.sh
Hans Wennborg 7472c76052 Release merge script: don't actually commit the merge
Instead, just present the command for committing it. This way,
the user can test the merge locally, resolve conflicts, etc.
before committing, which seems much safer to me.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225737 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-13 00:07:31 +00:00

77 lines
1.7 KiB
Bash
Executable File

#!/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=""
function 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"
}
while [ $# -gt 0 ]; do
case $1 in
-rev | --rev | -r )
shift
rev=$1
;;
-proj | --proj | -project | --project | -p )
shift
proj=$1
;;
-h | -help | --help )
usage
;;
* )
echo "unknown option: $1"
echo ""
usage
exit 1
;;
esac
shift
done
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
echo "Merging r$rev:" > $tempfile
svn log -c $rev http://llvm.org/svn/llvm-project/$proj/trunk >> $tempfile 2>&1
cd $proj.src
echo "# Updating tree"
svn up
echo "# Merging r$rev into $proj locally"
svn merge -c $rev https://llvm.org/svn/llvm-project/$proj/trunk . || exit 1
echo
echo "# To commit the merge, run the following in $proj.src/:"
echo svn commit -F $tempfile
exit 0