]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
cleanup a bit better from quilt fetch failures
[next-scripts] / fetch_trees
1 #!/bin/bash
2
3 IFS='   '
4
5 origwd=$(pwd)
6
7 while read email type name url ref; do
8         [[ "$email" =~ '^#.*$' ]] && {
9                 echo $name: skipped
10                 continue
11         }
12         echo $name: $type
13         if [ "$type" = "git" ]; then
14                 git fetch "$name"
15                 continue
16         fi
17         if [ "$type" = "quilt" ]; then
18                 case "$url" in
19                 http://kernel.org/*|http://www.kernel.org/*)
20                         use_rsync=true
21                         rurl=$(echo "$url" | sed -r 's,^http://(www\.)?kernel\.org,master.kernel.org:,')
22                         ;;
23                 http://ozlabs.org/~*)
24                         use_rsync=true
25                         rurl=$(echo "$url" | sed -r 's,^http://ozlabs\.org/([^/]*),ozlabs.org:\1/public_html,')
26                         ;;
27                 *)
28                         use_rsync=false
29                         ;;
30                 esac
31                 cd ../quilt || {
32                         echo "Cannot chdir to ../quilt" 1>&2
33                         continue
34                 }
35                 [ -d "$name" ] || mkdir "$name" || {
36                         echo "Cannot create quilt directory for $name" 1>&2
37                         cd "$origwd"
38                         continue
39                 }
40                 cd "$name" || {
41                         echo "Cannot chdir to quilt directory for $name" 1>&2
42                         cd "$origwd"
43                         continue
44                 }
45                 if $use_rsync; then
46                         rsync -avz "$rurl/series" series || {
47                                 echo "rsync of $name series file failed" 1>&2
48                                 cd ..
49                                 rm -rf "$name"
50                                 git checkout "$name"
51                                 cd "$origwd"
52                                 continue
53                         }
54                 else
55                         wget -N -nv --no-cache "$url/series" || {
56                                 echo "Wget of $name series file failed" 1>&2
57                                 cd ..
58                                 rm -rf "$name"
59                                 git checkout "$name"
60                                 cd "$origwd"
61                                 continue
62                         }
63                 fi
64                 find * -type f | grep -v '^series$' | sort >.series.old
65                 do_echo=echo
66                 grep -q NEXT_PATCHES series &&
67                         do_echo=:
68                 while read line; do
69                         case "$line" in
70                         *NEXT_PATCHES_START*)   do_echo=echo ;;
71                         *NEXT_PATCHES_END*)     do_echo=: ;;
72                         ''|\#*)                 : ;;
73                         *)                      $do_echo $line ;;
74                         esac
75                 done <series | sort >.series.next
76                 if $use_rsync; then
77                         rsync -avz --files-from .series.next "$rurl" . || {
78                                 echo "rsync of series '$name' failed" 1>&2
79                                 cd ..
80                                 rm -rf "$name"
81                                 git checkout "$name"
82                                 cd "$origwd"
83                                 continue
84                         }
85                 else
86                         wget -N -nv --no-cache -B "$url" -i .series.next || {
87                                 echo "Wget of series '$name' failed" 1>&2
88                                 cd ..
89                                 rm -rf "$name"
90                                 git checkout "$name"
91                                 cd "$origwd"
92                                 continue
93                         }
94                 fi
95                 comm -23 .series.old .series.next | xargs -r rm -f
96                 rm -f .series.old .series.next
97                 cd "$origwd"
98         fi
99 done <../real_control
100
101 cd ../quilt
102 git add .
103 git commit -v -a -m "$(date '+%F-%H:%M')" -e
104
105 exit 0