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