19 ver=$(git tag -l next-\* | sort | tail -n 1)
22 . "$(dirname $0)/common.sh"
26 echo "$@" | tee -a $LOG_FILE
32 $@ 2>&1 | tee -a $LOG_FILE
33 return ${PIPESTATUS[0]}
36 line="$(tail -n 1 $SHA1_FILE)"
38 # strip everything after the first tab character
41 [ "$tree" = "$stree" ] || {
42 echo "That is not the last tree merged ($tree v $stree)" 1>&2
49 rev=$(git show ${ver}:Next/SHA1s | sed -n "s/^$tree\t\t*//p")
51 echo "No previous tree/date ($tree/$ver)" 1>&2
55 bad_rev=$(git rev-parse --verify 'HEAD^2')
58 [ $(echo "$tree" | wc -c) -le 8 ] && tab="\t\t"
60 # strip evrything up to the last tab character
62 [ "$bad_rev" = "$srev" ] || {
63 echo "bad last line in $SHA1_FILE" 1>&2
67 GIT_EDITOR=: execute git reset --hard 'HEAD^' || {
68 echo "git reset failed" 1>&2
72 log Merging "$ver version of $tree"
73 execute git merge -m "$ver/$tree" "$rev" || {
74 echo Merge failed 1>&2
75 echo "$ver version of $tree" >>../merge.debug
76 git diff >>../merge.debug 2>&1
77 git diff 2>&1 | egrep -q '<<<<<|^\*' && {
80 GIT_EDITOR=: execute git commit -v -a
81 execute git diff -M --stat --summary 'HEAD^..'
83 [ -f "../merge-fixes/$tree" ] && {
84 for p in $(cat "../merge-fixes/$tree"); do
85 $(dirname $0)/merge_fix -n "$p" || {
91 d=$(date --date "5 hours ago" '+%Y%m%d')
93 sed -i '$d' $SHA1_FILE
94 printf "%s$tab%s\n" $tree $rev >>$SHA1_FILE
98 git push -f "${build_host}${build_host:+:}${build_dir}" master:refs/heads/next || {
99 echo git push failed 1>&2
103 "$bin_dir/do_build" "$tree" || {
104 echo Build failed 1>&2