]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
fetch_trees: make fetching Andrew's tree quieter
[next-scripts] / fetch_trees
1 #!/bin/bash
2
3 . "$(dirname $0)/common.sh" ""
4
5 origwd=$(pwd)
6
7 get_field()
8 {
9         grep -v '^#' $CTRL_FILE |
10                 awk -F '\t' '$3 == "'$1'" { print $'$2'; }'
11 }
12
13 trees="$@"
14 [ "$trees" ] ||
15         trees=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '{ print $3 }')
16
17 for name in $trees; do
18         type=$(get_field "$name" 2)
19
20         echo $name: $type
21         if [ "$type" = "git" ]; then
22                 git fetch "$name"
23                 continue
24         fi
25
26         if [ "$type" = "mmotm" ]; then
27                 cd ../mmotm || {
28                         echo "Cannot chdir to ../mmotm" 1>&2
29                         continue
30                 }
31                 rsync -az --partial --exclude .git\* --exclude broken-out.tar.gz --delete ozlabs.org::akpm/mmotm/. . || {
32                         git reset --hard
33                         echo "Fetcing Andrew's tree failed" 1>&2
34                         cd "$origwd"
35                         continue
36                 }
37                 git add -A .
38                 [ "$(git status --porcelain)" ] &&
39                         git commit -m "$(head -n 1 .DATE)"
40                 cd "$origwd"
41                 continue
42         fi
43
44         if [ "$type" = "quilt" ]; then
45                 url=$(get_field "$name" 4)
46                 url=${url%/}    # strip trailing / if necessary
47
48                 cd ../quilt || {
49                         echo "Cannot chdir to ../quilt" 1>&2
50                         continue
51                 }
52                 [ -d "$name" ] || mkdir "$name" || {
53                         echo "Cannot create quilt directory for $name" 1>&2
54                         cd "$origwd"
55                         continue
56                 }
57                 cd "$name" || {
58                         echo "Cannot chdir to quilt directory for $name" 1>&2
59                         cd "$origwd"
60                         continue
61                 }
62                 wget -N -nv --no-cache "$url/series" || {
63                         echo "Wget of $name series file failed" 1>&2
64                         cd ..
65                         rm -rf "$name"
66                         git checkout "$name"
67                         cd "$origwd"
68                         continue
69                 }
70                 find * -type f | grep -v '^series$' | sort >.series.old
71                 if grep -q NEXT_PATCHES series; then
72                         sed -n '/NEXT_PATCHES_START/,/NEXT_PATCHES_END/p' series
73                 else
74                         cat series
75                 fi |
76                         sed -e 's/[ \t]*#.*$//' -e '/^[ \t]*$/d' |
77                         sort >.series.next
78                 [ -s .series.next ] && {
79                         sed "s|^|$url/|" .series.next |
80                                         wget -N -nv --no-cache -i - || {
81                                 echo "Wget of series '$name' failed" 1>&2
82                                 cd ..
83                                 rm -rf "$name"
84                                 git checkout "$name"
85                                 cd "$origwd"
86                                 continue
87                         }
88                 }
89                 comm -23 .series.old .series.next | xargs -r rm -f
90                 rm -f .series.old .series.next
91                 cd "$origwd"
92         fi
93 done
94
95 cd ../quilt
96 git add -A .
97 git commit -v -a -m "$(date '+%F-%H:%M')" -e
98
99 exit 0