X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=fetch_trees;h=87e1b6cca2ab0af600b4f83b07af0f4dece748a8;hb=11359274e4acd3d7c37a0397e7e538ce79b07767;hp=b3db1a34b2737922dbcb551d20ea650d20df7fdd;hpb=543f60ec729701d7db73ce2d4ebd7b6f68722182;p=next-scripts diff --git a/fetch_trees b/fetch_trees index b3db1a3..87e1b6c 100755 --- a/fetch_trees +++ b/fetch_trees @@ -2,62 +2,74 @@ . "$(dirname $0)/common.sh" "" -origwd=$(pwd) +[ "$1" = "-n" ] && { + shift + last=$(tail -n1 $SHA1_FILE | cut -f1 -d$'\t') + start_from=$(awk -F '\t' '/^[^#]/ && $3 == "'$last'" { do getline; while (/^#/ || $2 == "branch"); print $3; exit 0; }' $CTRL_FILE) +} + +[ "$1" = "-s" ] && { + shift + start_from="$1" + [ -z "$start_from" ] && { + echo "-s requires a start tree" 1>&2 + exit 1 + } + shift +} get_field() { - grep -v '^#' $CTRL_FILE | - awk -F '\t' '$3 == "'$1'" { print $'$2'; }' + awk -F '\t' '/^[^#]/ && $3 == "'$1'" { print $'$2'; }' $CTRL_FILE } -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 +fetch_git() +{ + git fetch "$1" +} - if [ "$type" = "mmotm" ]; then - cd ../../mmotm/text || { - echo "Cannot chdir to ../../mmotm/text" 1>&2 - continue +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 } - rsync -avHP --exclude .git --exclude broken-out.tar.gz --delete ozlabs.org:~akpm/public_html/mmotm/. . - cd "$origwd" - continue - fi + git add -A . + [ "$(git status --porcelain)" ] && + git commit -m "$(head -n 1 .DATE)" + ) +} - if [ "$type" = "quilt" ]; then - url=$(get_field "$name" 4) +fetch_quilt() +{ + ( + url=$(get_field "$1" 4) url=${url%/} # strip trailing / if necessary cd ../quilt || { echo "Cannot chdir to ../quilt" 1>&2 - continue + return } - [ -d "$name" ] || mkdir "$name" || { - echo "Cannot create quilt directory for $name" 1>&2 - cd "$origwd" - continue + [ -d "$1" ] || mkdir "$1" || { + echo "Cannot create quilt directory for $1" 1>&2 + return } - cd "$name" || { - echo "Cannot chdir to quilt directory for $name" 1>&2 - cd "$origwd" - continue + cd "$1" || { + echo "Cannot chdir to quilt directory for $1" 1>&2 + return } wget -N -nv --no-cache "$url/series" || { - echo "Wget of $name series file failed" 1>&2 + echo "Wget of $1 series file failed" 1>&2 cd .. - rm -rf "$name" - git checkout "$name" - cd "$origwd" - continue + rm -rf "$1" + git checkout "$1" + return } find * -type f | grep -v '^series$' | sort >.series.old if grep -q NEXT_PATCHES series; then @@ -68,24 +80,43 @@ for name in $trees; do 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 + wget -N -nv --no-cache -B "$url/" -i .series.next || { + echo "Wget of series '$1' failed" 1>&2 cd .. - rm -rf "$name" - git checkout "$name" - cd "$origwd" - continue + rm -rf "$1" + git checkout "$1" + return } } comm -23 .series.old .series.next | xargs -r rm -f rm -f .series.old .series.next - cd "$origwd" - fi + setfattr -x user.xdg.origin.url * >/dev/null 2>&1 + ) +} + +trees="$@" +[ "$trees" ] || + trees=$(awk -F '\t' '/^[^#]/ && $2 != "branch" { print $3 }' $CTRL_FILE) + +for name in $trees; do + [ -n "$start_from" ] && { + if [ "$name" = "$start_from" ]; then + start_from="" + else + continue + fi + } + + type=$(get_field "$name" 2) + + echo $name: $type + [ $(type -t "fetch_$type") = "function" ] && + fetch_$type "$name" done cd ../quilt git add -A . -git commit -v -a -m "$(date '+%F-%H:%M')" -e +[ "$(git status --porcelain)" ] && + git commit -v -a -m "$(date '+%F-%H:%M')" -e exit 0