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