]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
various updates
[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
25                 case "$url" in
26 #               http://kernel.org/*|http://www.kernel.org/*)
27 #                       use_rsync=true
28 #                       rurl=$(echo "$url" | sed -r 's,^http://(www\.)?kernel\.org,master.kernel.org:,')
29 #                       ;;
30                 http://ozlabs.org/~*)
31                         use_rsync=true
32                         rurl=$(echo "$url" | sed -r 's,^http://ozlabs\.org/([^/]*),ozlabs.org:\1/public_html,')
33                         ;;
34                 *)
35                         use_rsync=false
36                         ;;
37                 esac
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                 if $use_rsync; then
53                         rsync -avz "$rurl/series" series || {
54                                 echo "rsync of $name series file failed" 1>&2
55                                 cd ..
56                                 rm -rf "$name"
57                                 git checkout "$name"
58                                 cd "$origwd"
59                                 continue
60                         }
61                 else
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                 fi
71                 find * -type f | grep -v '^series$' | sort >.series.old
72                 do_echo=echo
73                 grep -q NEXT_PATCHES series &&
74                         do_echo=:
75                 while read line; do
76                         case "$line" in
77                         *NEXT_PATCHES_START*)   do_echo=echo ;;
78                         *NEXT_PATCHES_END*)     do_echo=: ;;
79                         ''|\#*)                 : ;;
80                         *)                      $do_echo $line ;;
81                         esac
82                 done <series |
83                         sed -e 's/[     ]*#.*$//' -e '/^[       ]*$/d' |
84                         sort >.series.next
85                 if $use_rsync; then
86                         rsync -avz --files-from .series.next "$rurl" . || {
87                                 echo "rsync of series '$name' failed" 1>&2
88                                 cd ..
89                                 rm -rf "$name"
90                                 git checkout "$name"
91                                 cd "$origwd"
92                                 continue
93                         }
94                 else
95                         wget -N -nv --no-cache -B "$url" -i .series.next || {
96                                 echo "Wget of series '$name' failed" 1>&2
97                                 cd ..
98                                 rm -rf "$name"
99                                 git checkout "$name"
100                                 cd "$origwd"
101                                 continue
102                         }
103                 fi
104                 comm -23 .series.old .series.next | xargs -r rm -f
105                 rm -f .series.old .series.next
106                 cd "$origwd"
107         fi
108 done
109
110 cd ../quilt
111 git add .
112 git commit -v -a -m "$(date '+%F-%H:%M')" -e
113
114 exit 0