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