]> git.ozlabs.org Git - next-scripts/blob - merge_old_version
make some stuff common
[next-scripts] / merge_old_version
1 #!/bin/bash
2
3 no_build=false
4 [ "$1" = "-n" ] && {
5         shift
6         no_build=true
7 }
8
9 tree=$1
10 shift
11 ver=$1
12 shift
13
14 rev=$(git show next-${ver}:Next/SHA1s | sed -n "s/^$tree\t\t*//p")
15 [ "$rev" ] || {
16         echo "No such tree/date" 1>&2
17         exit 1
18 }
19
20 . "$(dirname $0)/common.sh"
21
22 log()
23 {
24         echo "$@" | tee -a $LOG_FILE
25 }
26
27 execute()
28 {
29         log "$" $@
30         $@ 2>&1 | tee -a $LOG_FILE
31         return ${PIPESTATUS[0]}
32 }
33
34 bad_rev=$(git rev-parse --verify 'HEAD^2')
35
36 line="$(tail -n 1 $SHA1_FILE)"
37 tab="\t"
38 [ $(echo "$tree" | wc -c) -le 8 ] && tab="\t\t"
39 expected=$(printf "%s$tab%s" $tree $bad_rev)
40 [ "$line" = "$expected" ] || {
41         echo "bad last line in $SHA1_FILE" 1>&2
42         exit 1
43 }
44
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
71 sed -i '$d' $SHA1_FILE
72 printf "%s$tab%s\n" $tree $rev >>$SHA1_FILE
73
74 $no_build && exit 0
75
76 git push -f "$build_host":"$build_dir" master:refs/heads/next || {
77         echo git push failed 1>&2
78         bash -i || exit
79 }
80
81 "$bin_dir/do_build" || {
82         echo Build failed 1>&2
83         bash -i || exit
84 }
85
86 exit 0