blob: 01d807920e4bcae08a7c815e18d6053853ceee77 [file] [log] [blame]
Bill Wendling90f98e72011-10-16 01:54:03 +00001#!/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
15set -e
16
17rev=""
18proj=""
Hans Wennborg9da51802015-08-04 00:47:58 +000019revert="no"
Bill Wendling90f98e72011-10-16 01:54:03 +000020
Dimitry Andric96ace112016-01-13 19:48:50 +000021usage() {
Bill Wendling90f98e72011-10-16 01:54:03 +000022 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"
Hans Wennborg9da51802015-08-04 00:47:58 +000025 echo " -revert Revert rather than merge the commit"
Bill Wendling90f98e72011-10-16 01:54:03 +000026}
27
28while [ $# -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 ;;
Joerg Sonnenbergered582072016-05-29 22:09:54 +000038 --srcdir | -srcdir | -s)
39 shift
40 srcdir=$1
41 ;;
Bill Wendling90f98e72011-10-16 01:54:03 +000042 -h | -help | --help )
43 usage
44 ;;
Hans Wennborg9da51802015-08-04 00:47:58 +000045 -revert | --revert )
46 revert="yes"
47 ;;
Bill Wendling90f98e72011-10-16 01:54:03 +000048 * )
49 echo "unknown option: $1"
50 echo ""
51 usage
52 exit 1
53 ;;
54 esac
55 shift
56done
57
Joerg Sonnenbergered582072016-05-29 22:09:54 +000058if [ -z "$srcdir" ]; then
59 srcdir="$proj.src"
60fi
61
Bill Wendling90f98e72011-10-16 01:54:03 +000062if [ "x$rev" = "x" -o "x$proj" = "x" ]; then
63 echo "error: need to specify project and revision"
64 echo
65 usage
66 exit 1
67fi
68
69if ! svn ls http://llvm.org/svn/llvm-project/$proj/trunk > /dev/null 2>&1 ; then
70 echo "error: invalid project: $proj"
71 exit 1
72fi
73
74tempfile=`mktemp /tmp/merge.XXXXXX` || exit 1
75
Hans Wennborg9da51802015-08-04 00:47:58 +000076if [ $revert = "yes" ]; then
77 echo "Reverting r$rev:" > $tempfile
78else
79 echo "Merging r$rev:" > $tempfile
80fi
Bill Wendling90f98e72011-10-16 01:54:03 +000081svn log -c $rev http://llvm.org/svn/llvm-project/$proj/trunk >> $tempfile 2>&1
82
Joerg Sonnenbergered582072016-05-29 22:09:54 +000083cd "$srcdir"
Bill Wendlingef22c602011-10-16 20:59:25 +000084echo "# Updating tree"
85svn up
Hans Wennborg9da51802015-08-04 00:47:58 +000086
87if [ $revert = "yes" ]; then
88 echo "# Reverting r$rev in $proj locally"
89 svn merge -c -$rev . || exit 1
90else
91 echo "# Merging r$rev into $proj locally"
92 svn merge -c $rev https://llvm.org/svn/llvm-project/$proj/trunk . || exit 1
93fi
Hans Wennborg427e1212015-01-13 00:07:31 +000094
95echo
Hans Wennborg9da51802015-08-04 00:47:58 +000096echo "# To commit, run the following in $proj.src/:"
Hans Wennborg427e1212015-01-13 00:07:31 +000097echo svn commit -F $tempfile
98
Bill Wendling90f98e72011-10-16 01:54:03 +000099exit 0