1f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#!/bin/sh
2f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#===-- merge.sh - Test the LLVM release candidates -------------------------===#
3f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#
4f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#                     The LLVM Compiler Infrastructure
5f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#
6f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling# This file is distributed under the University of Illinois Open Source
7f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling# License.
8f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#
9f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#===------------------------------------------------------------------------===#
10f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#
11f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling# Merge a revision into a project.
12f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#
13f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling#===------------------------------------------------------------------------===#
14f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
15f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingset -e
16f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
17f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingrev=""
18f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingproj=""
19f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
20f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingfunction usage() {
21f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo "usage: `basename $0` [OPTIONS]"
22f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo "  -proj PROJECT  The project to merge the result into"
23f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo "  -rev NUM       The revision to merge into the project"
24f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling}
25f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
26f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingwhile [ $# -gt 0 ]; do
27f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    case $1 in
28f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling        -rev | --rev | -r )
29f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            shift
30f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            rev=$1
31f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            ;;
32f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling        -proj | --proj | -project | --project | -p )
33f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            shift
34f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            proj=$1
35f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            ;;
36f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling        -h | -help | --help )
37f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            usage
38f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            ;;
39f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling        * )
40f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            echo "unknown option: $1"
41f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            echo ""
42f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            usage
43f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            exit 1
44f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling            ;;
45f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    esac
46f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    shift
47f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingdone
48f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
49f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingif [ "x$rev" = "x" -o "x$proj" = "x" ]; then
50f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo "error: need to specify project and revision"
51f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo
52f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    usage
53f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    exit 1
54f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingfi
55f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
56f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingif ! svn ls http://llvm.org/svn/llvm-project/$proj/trunk > /dev/null 2>&1 ; then
57f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    echo "error: invalid project: $proj"
58f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling    exit 1
59f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingfi
60f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
61f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingtempfile=`mktemp /tmp/merge.XXXXXX` || exit 1
62f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
63f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingecho "Merging r$rev:" > $tempfile
64f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingsvn log -c $rev http://llvm.org/svn/llvm-project/$proj/trunk >> $tempfile 2>&1
65f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendling
66f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingcd $proj.src
67eeb58a7e6be5de3f792fc074b5efeb926d0d3e15Bill Wendlingecho "# Updating tree"
68eeb58a7e6be5de3f792fc074b5efeb926d0d3e15Bill Wendlingsvn up
69f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingecho "# Merging r$rev into $proj"
70f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingsvn merge -c $rev https://llvm.org/svn/llvm-project/$proj/trunk . || exit 1
71f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingecho "# Committing changes"
72f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingsvn commit -F $tempfile || exit 1
73f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingrm -f $tempfile
74f4a4e3ae740979ea7877f55e34cdb5abac9cbe33Bill Wendlingexit 0
75