fi
)
-fetch_quilt()
-(
- url=$(get_field "$1" 4)
- url=${url%/} # strip trailing / if necessary
-
- if ! cd ../quilt; then
- printf 'Cannot chdir to ../quilt\n' 1>&2
- return
- fi
- if ! [ -d "$1" ] && ! mkdir "$1"; then
- printf 'Cannot create quilt directory for %s\n' "$1" 1>&2
- return
- fi
- if ! cd "$1"; then
- printf 'Cannot chdir to quilt directory for %s\n' "$1" 1>&2
- return
- fi
- if ! wget -N -nv --no-cache --no-xattr "$url/series"; then
- printf 'Wget of %s series file failed\n' "$1" 1>&2
- cd ..
- rm -rf "$1"
- git checkout "$1"
- return
- fi
- find . -type f | sed 's,^./,,;/^series$/d' | 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
- if [ -s .series.next ]; then
- if ! wget -N -nv --no-cache --no-xattr -B "$url/" -i .series.next; then
- printf 'Wget of series %s failed\n' "$1" 1>&2
- cd ..
- rm -rf "$1"
- git checkout "$1"
- return
- fi
- fi
- comm -23 .series.old .series.next | xargs -r rm -f
- rm -f .series.old .series.next
-)
-
trees="$*"
if ! [ "$trees" ]; then
trees=$(awk -F '\t' '/^[^#]/ && $2 != "branch" { print $3 }' "$CTRL_FILE")
fi
done
-if ! cd ../quilt; then
- printf 'hmmm, what happened to the quilt directory?\n' 1>&2
- exit 1
-fi
-git add -A .
-if [ "$(git status --porcelain)" ]; then
- git commit -v -a -m "$(date '+%F-%H:%M')" -e
-fi
-
exit 0
+++ /dev/null
-#!/bin/bash
-
-. "$(dirname $0)/common.sh"
-
-log_file=../quilt-import.log
-#cp /dev/null $log_file
-
-log()
-{
- echo "$@" | tee -a $log_file
-}
-
-execute()
-{
- log "$" $@
- "$@" 2>&1 | tee -a $log_file
- [ ${PIPESTATUS[0]} -eq 0 ] || $SHELL -i || exit 1
-}
-
-cpwd=$(pwd)
-
-quilters=$(awk -F '\t' '/^[^#]/ && $2=="quilt" { print $3; }' "$CTRL_FILE")
-
-for name in $quilters; do
-
- sfile="../quilt/$name/series"
- base=$(sed -n 's/^#[ \t]*NEXT[-_]BASE[ \t]*\([^ \t]*\)[ \t]*$/\1/p' "$sfile")
- if [ -n "$base" ]; then
- nbase=$(awk -F '\t' '/^[^#]/ && $3=="'"$base"'" { printf("%s/%s", "'"$base"'", $5); }' "$CTRL_FILE")
- [ -n "$nbase" ] && base="$nbase"
- else
- base=$(sed -n 's/^#[ \t]*BASE[ \t]*\(.*\)[ \t]*$/\1/p' "$sfile")
- [ -n "$base" ] || {
- # for stgit
- base=$(sed '1{s/^#.*GIT commit \(.*\)$/\1/;q}' "$sfile")
- [ -n "$base" ] ||
- base="origin/master"
- }
- fi
- rbase="$base"
- case "$base" in
- *-git[0-9]*) rbase=$("$bin_dir/get_gitid" "${base}")
- ;;
- commit*) rbase=${base##commit*[[:space:]]}
- ;;
- [0-9]*.*) rbase="v$base"
- ;;
- esac
- log "Importing $name based on $base"
- rbase_sha1=$(git rev-parse --verify "$rbase^{commit}") || {
- log "Unknown BASE"
- continue
- }
-
- # don't bother importing things that haven't changed
- mb=$(git merge-base "$rbase_sha1" "$name/master")
- change_size=$(cd ../quilt;git diff last_merge.. -- "$name/" | wc -c)
- [ "$mb" = "$rbase_sha1" ] && [ $change_size -eq 0 ] && {
- log "Unchanged quilt series $name"
- continue
- }
-
- sed_exp='s/[ \t]*#.*$//;/^[ \t]*$/!p'
- grep -q NEXT_PATCHES "$sfile" &&
- sed_exp='/NEXT_PATCHES_START/,/NEXT_PATCHES_END/{'"$sed_exp"';}'
- patches=$(sed -n "$sed_exp" "$sfile")
-
- git show-ref --quiet --verify "refs/heads/$name/master" ||
- execute git branch "$name/master" "$rbase_sha1"
-
- [ -n "$patches" ] || {
- log " quilt series is empty"
- execute git branch -f "$name/master" "$rbase_sha1"
- continue
- }
-
- [ -d "../quilt-tmp" ] ||
- execute git clone -s -l -n -q . ../quilt-tmp
-
- log '$' cd ../quilt-tmp
- cd ../quilt-tmp
- execute git reset --hard "$rbase_sha1"
-
- for f in $patches; do
- old_head=$(git rev-parse --verify HEAD)
- execute git am -s --patch-format=mbox "../quilt/$name/$f"
- new_head=$(git rev-parse --verify HEAD)
- [ "$new_head" = "$old_head" ] && {
- echo "Tree unchanged, please check ..."
- bash -i || exit
- }
- done
-
- log '$' cd $cpwd
- cd $cpwd
-
- execute git fetch -f ../quilt-tmp master:"$name/master"
-done
-
-[ -d "../quilt-tmp" ] &&
- rm -rf ../quilt-tmp
-
-( cd ../quilt; git branch -f last_merge HEAD )
-
-exit 0