#!/bin/bash origwd=$(pwd) get_field() { grep -v '^#' ../real_control | awk -F ' ' '$3 == "'$1'" { print $'$2'; }' } trees=$(grep -v '^#' ../real_control | awk -F ' ' '{ 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" = "quilt" ]; then url=$(get_field "$name" 4) 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 cd ../quilt || { echo "Cannot chdir to ../quilt" 1>&2 continue } [ -d "$name" ] || mkdir "$name" || { echo "Cannot create quilt directory for $name" 1>&2 cd "$origwd" continue } cd "$name" || { echo "Cannot chdir to quilt directory for $name" 1>&2 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 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.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 } else wget -N -nv --no-cache -B "$url" -i .series.next || { echo "Wget of series '$name' failed" 1>&2 cd .. rm -rf "$name" git checkout "$name" cd "$origwd" continue } fi comm -23 .series.old .series.next | xargs -r rm -f rm -f .series.old .series.next cd "$origwd" fi done cd ../quilt git add . git commit -v -a -m "$(date '+%F-%H:%M')" -e exit 0