#!/bin/bash log() { echo "$@" | tee -a ../akpm-import.log } execute() { log "$" $@ "$@" 2>&1 | tee -a ../akpm-import.log [ ${PIPESTATUS[0]} -eq 0 ] || sh -i || { [ -f "$sfile.orig" ] && mv -f "$sfile.orig" "$sfile" exit 1 } } name="akpm" mmotm="../../mmotm/text" sfile="$mmotm/series" cpwd=$(pwd) base=$(sed -n '1s/^GIT *\([^ ]*\).*$/\1/p' "$mmotm/broken-out/origin.patch") nbase=$(sed -n '1s/^GIT *\([^ ]*\).*$/\1/p' "$mmotm/broken-out/linux-next.patch") log "Importing $name based on $base/$nbase" git rev-parse --verify "$base" >/dev/null || { log "Unknown origin BASE" exit 1 } git rev-parse --verify "$nbase" >/dev/null || { log "Unknown linux-next BASE" exit 1 } mv -f "$sfile" "$sfile.orig" do_echo=echo grep -q NEXT_PATCHES "$sfile.orig" && do_echo=: while read line; do case $line in *NEXT_PATCHES_START*) do_echo=echo ;; *NEXT_PATCHES_END*) do_echo=: ;; esac $do_echo $line done <"$sfile.orig" | sed -e 's/[ ]*#.*$//' -e '/^[ ]*$/d' >"$sfile" git show-ref --quiet --verify "refs/heads/quilt/$name" || execute git branch "quilt/$name" "$base" [ -s "$sfile" ] || { log " quilt series is empty" mv -f "$sfile.orig" "$sfile" execute git update-ref "refs/heads/quilt/$name" "$nbase" exit 0 } [ -d "../quilt-tmp" ] || execute git clone -s -l -n -q . ../quilt-tmp log '$' cd ../quilt-tmp cd ../quilt-tmp execute git reset --hard "$base" GIT_EDITOR=: execute git merge "$nbase" || bash -i || exit 1 git branch base for f in $(cat "$mmotm/series"); do [ "$f" = "origin.patch" ] && continue [ "$f" = "linux-next.patch" ] && continue execute git am "$mmotm/broken-out/$f" || bash -i || break done log '$' cd $cpwd cd $cpwd execute git fetch -f ../quilt-tmp master:"quilt/$name" execute git fetch -f ../quilt-tmp base:"quilt/${name}-base" mv -f "$sfile.orig" "$sfile" [ -d "../quilt-tmp" ] && rm -rf ../quilt-tmp exit 0