]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
special case ozlabs.org as well
[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 "$origwd"
49                                 continue
50                         }
51                 else
52                         wget -N -nv --no-cache "$url/series" || {
53                                 echo "Wget of $name series file failed" 1>&2
54                                 cd "$origwd"
55                                 continue
56                         }
57                 fi
58                 find * -type f | grep -v '^series$' | sort >.series.old
59                 do_echo=echo
60                 grep -q NEXT_PATCHES series &&
61                         do_echo=:
62                 while read line; do
63                         case "$line" in
64                         *NEXT_PATCHES_START*)   do_echo=echo ;;
65                         *NEXT_PATCHES_END*)     do_echo=: ;;
66                         ''|\#*)                 : ;;
67                         *)                      $do_echo $line ;;
68                         esac
69                 done <series | sort >.series.next
70                 if $use_rsync; then
71                         rsync -avz --files-from .series.next "$rurl" . || {
72                                 echo "rsync of series '$name' failed" 1>&2
73                                 cd ..
74                                 rm -rf "$name"
75                                 git checkout "$name"
76                                 break
77                         }
78                 else
79                         wget -N -nv --no-cache -B "$url" -i .series.next || {
80                                 echo "Wget of series '$name' failed" 1>&2
81                                 cd ..
82                                 rm -rf "$name"
83                                 git checkout "$name"
84                                 break
85                         }
86                 fi
87                 comm -23 .series.old .series.next | xargs -r rm -f
88                 rm -f .series.old .series.next
89                 cd "$origwd"
90         fi
91 done <../real_control
92
93 cd ../quilt
94 git add .
95 git commit -v -a
96
97 exit 0