]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
Use rsync for quilt trees on kernel.org
[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                 *)
24                         use_rsync=false
25                         ;;
26                 esac
27                 cd ../quilt || {
28                         echo "Cannot chdir to ../quilt" 1>&2
29                         continue
30                 }
31                 [ -d "$name" ] || mkdir "$name" || {
32                         echo "Cannot create quilt directory for $name" 1>&2
33                         cd "$origwd"
34                         continue
35                 }
36                 cd "$name" || {
37                         echo "Cannot chdir to quilt directory for $name" 1>&2
38                         cd "$origwd"
39                         continue
40                 }
41                 if $use_rsync; then
42                         rsync -avz "$rurl/series" series || {
43                                 echo "rsync of $name series file failed" 1>&2
44                                 cd "$origwd"
45                                 continue
46                         }
47                 else
48                         wget -N -nv --no-cache "$url/series" || {
49                                 echo "Wget of $name series file failed" 1>&2
50                                 cd "$origwd"
51                                 continue
52                         }
53                 fi
54                 find * -type f | grep -v '^series$' | sort >.series.old
55                 do_echo=echo
56                 grep -q NEXT_PATCHES series &&
57                         do_echo=:
58                 while read line; do
59                         case "$line" in
60                         *NEXT_PATCHES_START*)   do_echo=echo ;;
61                         *NEXT_PATCHES_END*)     do_echo=: ;;
62                         ''|\#*)                 : ;;
63                         *)                      $do_echo $line ;;
64                         esac
65                 done <series | sort >.series.next
66                 if $use_rsync; then
67                         rsync -avz --files-from .series.next "$rurl" . || {
68                                 echo "rsync of series '$name' failed" 1>&2
69                                 cd ..
70                                 rm -rf "$name"
71                                 git checkout "$name"
72                                 break
73                         }
74                 else
75                         wget -N -nv --no-cache -B "$url" -i .series.next || {
76                                 echo "Wget of series '$name' failed" 1>&2
77                                 cd ..
78                                 rm -rf "$name"
79                                 git checkout "$name"
80                                 break
81                         }
82                 fi
83                 comm -23 .series.old .series.next | xargs -r rm -f
84                 rm -f .series.old .series.next
85                 cd "$origwd"
86         fi
87 done <../real_control
88
89 cd ../quilt
90 git add .
91 git commit -v -a
92
93 exit 0