Blob Blame History Raw
#!/bin/sh -e

if [ $# -lt 1 ]; then
    echo "What?"
    exit 1
fi

repo="https://svn.apache.org/repos/asf/httpd/httpd/trunk"
#repo="https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x"
ver=2.4.51
prefix="httpd-${ver}"
suffix="${SUFFIX:-r$1${2:++}}"
fn="${prefix}-${suffix}.patch"
vcurl="http://svn.apache.org/viewvc?view=revision&revision="

if test -f ${fn}; then
    mv -v -f ${fn} ${fn}\~
    echo "# $0 $*" > ${fn}
    sed '1{/#.*pullrev/d;};/^--- /,$d' < ${fn}\~ >> ${fn}
else
    echo "# $0 $*" > ${fn}
fi

new=0
for r in $*; do
   case $r in
        http*) url=$r ;;
        *) url=${vcurl}${r} ;;
   esac
   if ! grep -q "^${url}" ${fn}; then
       echo "${url}"
       new=1
   fi
done >> ${fn}

[ $new -eq 0 ] || echo >> ${fn}

prev=/dev/null
for r in $*; do
    echo "+ fetching ${r}"
    this=`mktemp /tmp/pullrevXXXXXX`
    case $r in
        http*) curl -s "$r" | filterdiff --strip=3 ;;
        *) svn diff -c ${r} ${repo}  ;;
    esac | filterdiff --remove-timestamps --clean \
                      -x 'CHANGES' -x '*/next-number' -x 'STATUS' -x '*.xml' \
                      --addprefix="${prefix}/" > ${this}
    next=`mktemp /tmp/pullrevXXXXXX`
    if ! combinediff -w ${prev} ${this} > ${next}; then
        echo "Failed combining previous ${prev} with ${this}";
        exit 1
    fi
    rm -f "${this}"
    [ "${prev}" = "/dev/null" ] || rm -f "${prev}"
    prev=${next}
done

cat ${prev} >> ${fn}

vi "${fn}"
echo "+ git add ${fn}" 
git add "${fn}"
echo "+ spec template:"
echo "PatchN: ${fn}"
echo "%patchN -p1 -b .${suffix}"