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