]> git.ozlabs.org Git - next-scripts/blob - update_trees
do nothing for empty series
[next-scripts] / update_trees
1 #!/bin/bash
2
3 set -o pipefail
4
5 cp /dev/null ../quilt-import.log
6
7 log()
8 {
9         echo "$@" | tee -a ../quilt-import.log
10 }
11
12 execute()
13 {
14         log "$" $@
15         "$@" 2>&1 | tee -a ../quilt-import.log
16 }
17
18 quilters=$(grep -v '^#' ../real_control | awk -F '      ' '$2=="quilt" { print $3; }')
19
20 for name in $quilters; do
21         sfile="../quilt/$name/series"
22         base=$(sed -n 's/^[#    ]*NEXT_BASE[    ]*\(.*\)[       ]*$/\1/p' "$sfile")
23         if [ -n "$base" ]; then
24                 base=$(grep -v '^#' ../real_control | awk -F '  ' '$3=="'"$base"'" { if ($2=="quilt") printf("quilt/%s", "'"$base"'"); else printf("%s/%s", "'"$base"'", $5); }')
25         else
26                 base=$(sed -n 's/^[#    ]*BASE[         ]*\(.*\)[       ]*$/\1/p' "$sfile")
27         fi
28         rbase="$base"
29         case "$base" in
30         *-git[0-9]*)    rbase=$(wget -q -O - "http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-${base}.id")
31                         ;;
32         commit*)        rbase=$(expr "$base" : "commit[         ]*\(.*\)")
33                         ;;
34         [0-9]*.*)       rbase="v$base"
35                         ;;
36         esac
37         log "Importing $name based on $base"
38         git rev-list -n 1 "$rbase" -- >/dev/null 2>&1 || {
39                 log "Unknown BASE"
40                 continue
41         }
42         grep -q NEXT_PATCHES "$sfile" && {
43                 mv -f "$sfile" "$sfile.orig"
44                 do_echo=:
45                 while read line; do
46                         case $line in
47                         *NEXT_PATCHES_START*)   do_echo=echo
48                                                 ;;
49                         *NEXT_PATCHES_END*)     do_echo=:
50                                                 ;;
51                         esac
52                         $do_echo $line
53                 done <"$sfile.orig" >"$sfile"
54         }
55
56         mv -f "$sfile" "$sfile.tmp"
57         sed -e '/^[     ]*$/d' -e '^[   ]*#/d' <"$sfile.tmp" >"$sfile"
58         rm -f "$sfile.tmp"
59         [ -s "$sfile" ] || {
60                 log "   quilt series is empty"
61                 [ -f "$sfile.orig" ] &&
62                         mv -f "$sfile.orig" "$sfile"
63                 continue
64         }
65
66         execute git branch -D "quilt/$name"
67         execute git checkout -b "quilt/$name" "$rbase" || sh -i || {
68                 [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
69                 exit 1
70         }
71         author=$(grep -v '^#' ../real_control | awk -F '        ' '$3=="'"$name"'" { printf("%s", $1); }' | sed 's/,.*$//')
72         execute git quiltimport --author "$author" --patches "../quilt/$name" || sh -i || {
73                 [ -f "$sfile.orig" ] && mv -f $sfile.orig $sfile
74                 exit 1
75         }
76
77         [ -f "$sfile.orig" ] &&
78                 mv -f $sfile.orig $sfile
79 done
80
81 git checkout master
82
83 exit 0