]> git.ozlabs.org Git - next-scripts/blobdiff - do_merge
typo
[next-scripts] / do_merge
index 1ede56cfbd3f08875daf833a3bbd388774c2672a..f018bd137a9001f0454d2c47c0b92ceec924c53b 100755 (executable)
--- a/do_merge
+++ b/do_merge
@@ -1,11 +1,57 @@
 #!/bin/bash
 
-while read name url ref; do
-       [[ -z "$ref" ]] && ref="master"
-       echo $name $ref
-       git merge -n $name/$ref
-       [[ -f .git/MERGE_HEAD ]] && {
-               echo $name $ref >>Next/conflicts
-               git reset --hard
+LOG_FILE="../merge.log"
+build_host="sprygo"
+build_dir="/scratch/sfr/next"
+build_cmd="bin/build_next"
+
+no_build=false
+[ "$1" = "-n" ] && {
+       shift
+       no_build=true
+}
+[ -n "$1" ] && build_host="$1"
+
+cp /dev/null $LOG_FILE
+
+log()
+{
+       echo "$@" | tee -a $LOG_FILE
+}
+
+execute()
+{
+       log "$" $@
+       $@ 2>&1 | tee -a $LOG_FILE
+       return ${PIPESTATUS[0]}
+}
+
+execute git checkout master
+execute git reset --hard stable
+
+heads=$(grep -v '^#' ../real_control | awk -F '        ' '$2=="quilt" { printf("quilt/%s ", $3); } $2=="git" { printf("%s/%s ", $3, $5); }')
+
+for h in $heads; do
+       log Merging $h
+       old_head=$(git rev-parse HEAD)
+       execute git merge $h || {
+               echo Merge failed 1>&2
+               bash -i || exit
+               log '$' git commit -v -a
+               git commit -v -a
+               execute git diff -M --stat --summary 'HEAD^..'
+       }
+       new_head=$(git rev-parse HEAD)
+       [ "$old_head" = "$new_head" ] && continue
+       $no_build && continue
+       rsync -avH --exclude .git --delete . "$build_host":"$build_dir"/. || {
+               echo Rsync failed 1>&2
+               bash -i || exit
        }
-done <Next/control 2>&1 | tee Next/merge.log
+       ssh "$build_host" "$build_cmd" || {
+               echo Build failed 1>&2
+               bash -i || exit
+       }
+done
+
+exit 0