#!/bin/bash . "$(dirname $0)/common.sh" "" get_field() { grep -v '^#' $CTRL_FILE | awk -F '\t' '$3 == "'$1'" { print $'$2'; }' } fetch_git() { git fetch "$1" } fetch_mmotm() { ( cd ../mmotm && { echo "Cannot chdir to ../mmotm" 1>&2 return } rsync -az --partial --exclude .git\* --exclude broken-out.tar.gz --delete ozlabs.org::akpm/mmotm/. . || { git reset --hard echo "Fetcing mmotm failed" 1>&2 return } git add -A . [ "$(git status --porcelain)" ] && git commit -m "$(head -n 1 .DATE)" ) } fetch_quilt() { ( url=$(get_field "$1" 4) url=${url%/} # strip trailing / if necessary cd ../quilt || { echo "Cannot chdir to ../quilt" 1>&2 return } [ -d "$1" ] || mkdir "$1" || { echo "Cannot create quilt directory for $1" 1>&2 return } cd "$1" || { echo "Cannot chdir to quilt directory for $1" 1>&2 return } wget -N -nv --no-cache "$url/series" || { echo "Wget of $1 series file failed" 1>&2 cd .. rm -rf "$1" git checkout "$1" return } 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 ] && { wget -N -nv --no-cache -B "$url/" -i .series.next || { echo "Wget of series '$1' failed" 1>&2 cd .. rm -rf "$1" git checkout "$1" return } } comm -23 .series.old .series.next | xargs -r rm -f rm -f .series.old .series.next ) } 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 [ $(type -t "fetch_$type") = "function" ] && fetch_$type "$name" done cd ../quilt git add -A . [ "$(git status --porcelain)" ] && git commit -v -a -m "$(date '+%F-%H:%M')" -e exit 0