#!/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
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"
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