#!/bin/bash . "$(dirname $0)/common.sh" "" origwd=$(pwd) get_field() { grep -v '^#' $CTRL_FILE | awk -F '\t' '$3 == "'$1'" { print $'$2'; }' } trees="$@" [ "$trees" ] || trees=$(grep -v '^#' $CTRL_FILE | 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 || { echo "Cannot chdir to ../mmotm" 1>&2 continue } rsync -avHP --exclude .git --exclude broken-out.tar.gz --delete ozlabs.org:~akpm/public_html/mmotm/. . # we only use the fist lines of {origin,linux-next}.patch [ -f broken-out/origin.patch ] && sed -i 1q broken-out/origin.patch [ -f broken-out/linux-next.patch ] && sed -i 1q broken-out/linux-next.patch git add -A . [ "$(git status --porcelain)" ] && git commit -m "$(head -n 1 .DATE)" cd "$origwd" continue fi if [ "$type" = "quilt" ]; then url=$(get_field "$name" 4) url=${url%/} # strip trailing / if necessary 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 } 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 if grep -q NEXT_PATCHES series; then sed -n '/NEXT_PATCHES_START/,/NEXT_PATCHES_END/p' series else 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" git checkout "$name" cd "$origwd" continue } } comm -23 .series.old .series.next | xargs -r rm -f rm -f .series.old .series.next cd "$origwd" fi done cd ../quilt git add -A . git commit -v -a -m "$(date '+%F-%H:%M')" -e exit 0