#!/bin/bash
-LOG_FILE="../merge.log"
-SHA1_FILE="../SHA1s"
-build_host="ka2"
-build_dir="/scratch/sfr/next"
-build_cmd="bin/build_next"
-[ "$NEXT_BUILD_HOST" ] && build_host="$NEXT_BUILD_HOST"
-[ "$NEXT_BUILD_DIR" ] && build_dir="$NEXT_BUILD_DIR"
-
today="$(date '+%Y%m%d')"
no_build=false
shift
no_build=true
}
-[ -n "$1" ] && {
- build_host="$1"
- shift
-}
-[ -n "$1" ] && {
- build_dir="$1"
- shift
-}
-export NEXT_BUILD_HOST="$build_host"
-export NEXT_BUILD_DIR="$build_dir"
+. "$(dirname $0)/common.sh"
log()
{
git branch -f akpm/base HEAD
+old_head=$(git rev-parse HEAD)
hlog=$(git log -1 --oneline akpm-current/current) 2>/dev/null
log Merging akpm-current/current "($hlog)"
-execute git merge akpm-current/current || {
+execute git merge --no-ff akpm-current/current || {
echo Merge failed 1>&2
echo $h >>../merge.debug
git diff >>../merge.debug 2>&1
+ um_files=$(git diff 2>&1 | sed -n 's/^\* Unmerged path //p')
+ [ "$um_files" ] && [ -f "../merge-files/akpm-current" ] && {
+ rm_files=$(grep -F "$um_files" "../merge-files/akpm-current")
+ [ "$rm_files" ] &&
+ "$bin_dir/do_rm" $rm_files
+ }
git diff 2>&1 | egrep -q '<<<<<|^\*' && {
bash -i || exit
}
}
printf "%s\t%s\n" akpm-current $(git show-ref --hash akpm-current/current) >> $SHA1_FILE
+[ -f "../merge-fixes/akpm-current" ] && {
+ for p in $(cat "../merge-fixes/akpm-current"); do
+ $(dirname $0)/merge_fix -n "$p" || {
+ bash -i || exit
+ }
+ done
+}
+
+new_head=$(git rev-parse HEAD)
+
+$no_build ||
+ [ "$old_head" = "$new_head" ] ||
+ [ "$(git diff ${old_head}.. | wc -c)" -eq 0 ] || {
+
+ git push -f "${build_host}${build_host:+:}${build_dir}" master:refs/heads/next || {
+ echo git push failed 1>&2
+ bash -i || exit
+ }
+ "$bin_dir/do_build" || {
+ echo Build failed 1>&2
+ bash -i || exit
+ }
+}
+
execute git clone -s -l -n -q . ../rebase-tmp || {
echo Clone failed 1>&2
bash -i || exit
bash -i || exit
}
echo "fix up?"
+notify-send "Waiting for akpm fix up"
bash -i
log '$' cd $cpwd
cd $cpwd
git branch -f akpm/master-base HEAD
+old_head=$(git rev-parse HEAD)
log Merging akpm/master '('$(git log -1 --oneline akpm/master)')'
execute git merge --no-ff akpm/master || {
echo Merge failed 1>&2
}
done
}
-[ -x "../pre-build/akpm" ] && {
- "../pre-build/akpm" || bash -i || exit
-}
-$no_build && exit 0
+new_head=$(git rev-parse HEAD)
-git push -f "$build_host":"$build_dir" master:refs/heads/next || {
- echo git push failed 1>&2
- bash -i || exit
-}
-ssh "$build_host" "$build_cmd" || {
- echo Build failed 1>&2
- bash -i || exit
+$no_build ||
+ [ "$old_head" = "$new_head" ] ||
+ [ "$(git diff ${old_head}.. | wc -c)" -eq 0 ] || {
+
+ git push -f "${build_host}${build_host:+:}${build_dir}" master:refs/heads/next || {
+ echo git push failed 1>&2
+ bash -i || exit
+ }
+ "$bin_dir/do_build" || {
+ echo Build failed 1>&2
+ bash -i || exit
+ }
}
exit 0