#!/bin/bash
-LOG_FILE="../merge.log"
-build_host="ka2"
-build_dir="/scratch/sfr/next"
-build_cmd="bin/build_next"
-
today="$(date '+%Y%m%d')"
no_build=false
-[ "$NEXT_BUILD_HOST" ] && build_host="$NEXT_BUILD_HOST"
-[ "$NEXT_BUILD_DIR" ] && build_host="$NEXT_BUILD_DIR"
[ "$1" = "-n" ] && {
shift
no_build=true
}
-[ -n "$1" ] && {
- build_host="$1"
- shift
-}
-[ -n "$1" ] && {
- build_dir="$1"
- shift
-}
+
+. "$(dirname $0)/common.sh"
log()
{
cpwd=../next
-git update-ref "refs/next/$today/akpm-current" akpm/current
git branch -f akpm-current/current akpm/current
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
+
+ check_unmerged_files akpm-current
+
git diff 2>&1 | egrep -q '<<<<<|^\*' && {
bash -i || exit
}
GIT_EDITOR=: execute git commit -v -a
execute git diff -M --stat --summary 'HEAD^..'
}
+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" akpm-current || {
+ 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
}
echo "fix up?"
+linux-next-notify "Waiting for akpm fix up"
bash -i
log '$' cd $cpwd
cd $cpwd
}
execute rm -rf ../rebase-tmp
-git update-ref "refs/next/$today/akpm" akpm/master
-
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
bash -i || exit
}
+printf "%s\t\t%s\n" akpm $(git show-ref --hash akpm/master) >> $SHA1_FILE
[ -f "../merge-fixes/akpm" ] && {
for p in $(cat "../merge-fixes/akpm"); do
}
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" akpm || {
+ echo Build failed 1>&2
+ bash -i || exit
+ }
}
exit 0