]> git.ozlabs.org Git - next-scripts/blobdiff - fetch_trees
merge_akpm: rationalise a bit
[next-scripts] / fetch_trees
index c5bdf73178d76d57b0b8436910e6e8a30b141fea..d2f476ae88c48a5f194c8fd86e62f96b5e296bc6 100755 (executable)
@@ -1,33 +1,40 @@
 #!/bin/bash
 
-IFS='  '
-
 origwd=$(pwd)
 
-while read email type name url ref; do
-       [[ "$email" =~ '^#.*$' ]] && {
-               echo $name: skipped
-               continue
-       }
+get_field()
+{
+       grep -v '^#' ../real_control |
+               awk -F '\t' '$3 == "'$1'" { print $'$2'; }'
+}
+
+trees="$@"
+[ "$trees" ] ||
+       trees=$(grep -v '^#' ../real_control | awk -F '\t' '{ print $3 }')
+
+for name in $trees; do
+       type=$(get_field "$name" 2)
+
        echo $name: $type
        if [ "$type" = "git" ]; then
                git fetch "$name"
                continue
        fi
+
+       if [ "$type" = "mmotm" ]; then
+               cd ../../mmotm/text || {
+                       echo "Cannot chdir to ../../mmotm/text" 1>&2
+                       continue
+               }
+               rsync -avHP --exclude .git --exclude broken-out.tar.gz --delete ozlabs.org:~akpm/public_html/mmotm/. .
+               cd "$origwd"
+               continue
+       fi
+
        if [ "$type" = "quilt" ]; then
-               case "$url" in
-               http://kernel.org/*|http://www.kernel.org/*)
-                       use_rsync=true
-                       rurl=$(echo "$url" | sed -r 's,^http://(www\.)?kernel\.org,master.kernel.org:,')
-                       ;;
-               http://ozlabs.org/~*)
-                       use_rsync=true
-                       rurl=$(echo "$url" | sed -r 's,^http://ozlabs\.org/([^/]*),ozlabs.org:\1/public_html,')
-                       ;;
-               *)
-                       use_rsync=false
-                       ;;
-               esac
+               url=$(get_field "$name" 4)
+               url=${url%/}    # strip trailing / if necessary
+
                cd ../quilt || {
                        echo "Cannot chdir to ../quilt" 1>&2
                        continue
@@ -42,48 +49,25 @@ while read email type name url ref; do
                        cd "$origwd"
                        continue
                }
-               if $use_rsync; then
-                       rsync -avz "$rurl/series" series || {
-                               echo "rsync of $name series file failed" 1>&2
-                               cd ..
-                               rm -rf "$name"
-                               git checkout "$name"
-                               cd "$origwd"
-                               continue
-                       }
-               else
-                       wget -N -nv --no-cache "$url/series" || {
-                               echo "Wget of $name series file failed" 1>&2
-                               cd ..
-                               rm -rf "$name"
-                               git checkout "$name"
-                               cd "$origwd"
-                               continue
-                       }
-               fi
+               wget -N -nv --no-cache "$url/series" || {
+                       echo "Wget of $name series file failed" 1>&2
+                       cd ..
+                       rm -rf "$name"
+                       git checkout "$name"
+                       cd "$origwd"
+                       continue
+               }
                find * -type f | grep -v '^series$' | sort >.series.old
-               do_echo=echo
-               grep -q NEXT_PATCHES series &&
-                       do_echo=:
-               while read line; do
-                       case "$line" in
-                       *NEXT_PATCHES_START*)   do_echo=echo ;;
-                       *NEXT_PATCHES_END*)     do_echo=: ;;
-                       ''|\#*)                 : ;;
-                       *)                      $do_echo $line ;;
-                       esac
-               done <series | sort >.series.next
-               if $use_rsync; then
-                       rsync -avz --files-from .series.next "$rurl" . || {
-                               echo "rsync of series '$name' failed" 1>&2
-                               cd ..
-                               rm -rf "$name"
-                               git checkout "$name"
-                               cd "$origwd"
-                               continue
-                       }
+               if grep -q NEXT_PATCHES series; then
+                       sed -n '/NEXT_PATCHES_START/,/NEXT_PATCHES_END/p' series
                else
-                       wget -N -nv --no-cache -B "$url" -i .series.next || {
+                       cat series
+               fi |
+                       sed -e 's/[ \t]*#.*$//' -e '/^[ \t]*$/d' |
+                       sort >.series.next
+               [ -s .series.next ] && {
+                       sed "s|^|$url/|" .series.next |
+                                       wget -N -nv --no-cache -i - || {
                                echo "Wget of series '$name' failed" 1>&2
                                cd ..
                                rm -rf "$name"
@@ -91,15 +75,15 @@ while read email type name url ref; do
                                cd "$origwd"
                                continue
                        }
-               fi
+               }
                comm -23 .series.old .series.next | xargs -r rm -f
                rm -f .series.old .series.next
                cd "$origwd"
        fi
-done <../real_control
+done
 
 cd ../quilt
-git add .
+git add -A .
 git commit -v -a -m "$(date '+%F-%H:%M')" -e
 
 exit 0