Add remote merge script.
[bertos.git] / bertos / remote_merge
1 #!/bin/bash
2 #set -x
3
4 if [ $# -lt 2 ] ; then
5         printf "\nMerge remote url commits into local BeRTOS svn repository.\n"
6         printf "Usage: $0 <REMOTE_URL> <REMOTE_START_REV> [<REMOTE_END_REV>]\n"
7         printf "If remote end revision is not supplied HEAD will be used.\n"
8 fi
9
10
11 MERGE_URL="$1"
12 START_REV="$2"
13 if [ z"$3" = z ] ; then
14         END_REV=HEAD
15 else
16         END_REV="$3"
17 fi
18
19 #Get list of revisions to merge.
20 REV_LIST=`svn log $MERGE_URL -r$START_REV:$END_REV --quiet 2>&1| perl -ne 'if(m/^r([0-9]+)/) {print $1, "\n";}'`
21
22 printf "Merged from external project:\n" > header
23 for rev in $REV_LIST
24 do
25         #Get commit log message only
26         #svn pg --revprop -r$rev svn:log $MERGE_URL > tmp_msg
27         
28         #Get revision commit log with date and author
29         svn log -r$rev $MERGE_URL > tmp_msg
30         #Replace leading and trailing banners "---------------------..."
31         sed -i 's/^-\+/\*\*\*\*\*\*\*\*\*\*/' tmp_msg
32         #Indent all message
33         sed -i 's/\(^.*\)/\t\1/' tmp_msg
34         cat header tmp_msg > commit_msg
35         #Try to merge ...
36         svn merge $MERGE_URL -c$rev || exit 1
37         #and commit!
38         svn ci -Fcommit_msg
39 done
40 rm -rf header tmp_msg commit_msg