3 bin_dir="$(dirname $0)"
5 LOG_FILE="../merge.log"
8 build_dir="/scratch/sfr/next"
9 [ "$NEXT_BUILD_HOST" ] && build_host="$NEXT_BUILD_HOST"
10 [ "$NEXT_BUILD_DIR" ] && build_dir="$NEXT_BUILD_DIR"
21 rev=$(git show next-${ver}:Next/SHA1s | sed -n "s/^$tree\t\t*//p")
23 echo "No such tree/date" 1>&2
36 export NEXT_BUILD_HOST="$build_host"
37 export NEXT_BUILD_DIR="$build_dir"
41 echo "$@" | tee -a $LOG_FILE
47 $@ 2>&1 | tee -a $LOG_FILE
48 return ${PIPESTATUS[0]}
51 bad_rev=$(git rev-parse --verify 'HEAD^2')
53 line="$(tail -n 1 $SHA1_FILE)"
55 [ $(echo "$tree" | wc -c) -le 8 ] && tab="\t\t"
56 expected=$(printf "%s$tab%s" $tree $bad_rev)
57 [ "$line" = "$expected" ] || {
58 echo "bad last line in $SHA1_FILE" 1>&2
62 GIT_EDITOR=: execute git reset --hard 'HEAD^' || {
63 echo "git reset failed" 1>&2
67 log Merging "$ver version of $tree"
68 execute git merge -m "$ver/$tree" "$rev" || {
69 echo Merge failed 1>&2
70 echo "$ver version of $tree" >>../merge.debug
71 git diff >>../merge.debug 2>&1
72 git diff 2>&1 | egrep -q '<<<<<|^\*' && {
75 GIT_EDITOR=: execute git commit -v -a
76 execute git diff -M --stat --summary 'HEAD^..'
78 [ -f "../merge-fixes/$tree" ] && {
79 for p in $(cat "../merge-fixes/$tree"); do
80 $(dirname $0)/merge_fix -n "$p" || {
86 d=$(date --date "5 hours ago" '+%Y%m%d')
88 sed -i '$d' $SHA1_FILE
89 printf "%s$tab%s\n" $tree $rev >>$SHA1_FILE
93 git push -f "$build_host":"$build_dir" master:refs/heads/next || {
94 echo git push failed 1>&2
98 "$bin_dir/do_build" || {
99 echo Build failed 1>&2