]> git.ozlabs.org Git - next-scripts/blob - merge_old_version
merge_old_version: do not use the refs/next... refs
[next-scripts] / merge_old_version
1 #!/bin/bash
2
3 LOG_FILE="../merge.log"
4 build_host="ka2"
5 build_dir="/scratch/sfr/next"
6 build_cmd="bin/build_next"
7
8 no_build=false
9 [ "$1" = "-n" ] && {
10         shift
11         no_build=true
12 }
13
14 tree=$1
15 ver=$2
16
17 rev=$(git show next-${ver}:Next/SHA1s | sed -n "s/^$tree\t*//p")
18 [ "$rev" ] || {
19         echo "No such tree/date" 1>&2
20         exit 1
21 }
22
23 [ -n "$3" ] && {
24         build_host="$3"
25         shift
26 }
27 [ -n "$3" ] && {
28         build_dir="$3"
29         shift
30 }
31
32 log()
33 {
34         echo "$@" | tee -a $LOG_FILE
35 }
36
37 execute()
38 {
39         log "$" $@
40         $@ 2>&1 | tee -a $LOG_FILE
41         return ${PIPESTATUS[0]}
42 }
43
44 bad_rev=$(git rev-parse --verify 'HEAD^2')
45 GIT_EDITOR=: execute git reset --hard 'HEAD^' || {
46         echo "git reset failed" 1>&2
47         bash -i || exit
48 }
49
50 log Merging "$ver version of $tree"
51 execute git merge -m "$ver/$tree" "$rev" || {
52         echo Merge failed 1>&2
53         echo "$ver version of $tree" >>../merge.debug
54         git diff >>../merge.debug 2>&1
55         git diff 2>&1 | egrep -q '<<<<<|^\*' && {
56                 bash -i || exit
57         }
58         GIT_EDITOR=: execute git commit -v -a
59         execute git diff -M --stat --summary 'HEAD^..'
60 }
61 [ -f "../merge-fixes/$tree" ] && {
62         for p in $(cat "../merge-fixes/$tree"); do
63                 $(dirname $0)/merge_fix -n "$p" || {
64                         bash -i || exit
65                 }
66         done
67 }
68
69 d=$(date --date "5 hours ago" '+%Y%m%d')
70 git update-ref "refs/next/$d/broken/$tree" "$bad_rev"
71 git update-ref "refs/next/$d/$tree" "$rev"
72
73 $no_build && exit 0
74
75 git push -f "$build_host":"$build_dir" master:refs/heads/next || {
76         echo git push failed 1>&2
77         bash -i || exit
78 }
79
80 echo "Building using $build_cmd on $build_host"
81 ssh "$build_host" "$build_cmd" || {
82         echo Build failed 1>&2
83         bash -i || exit
84 }
85
86 exit 0