#!/bin/sh set -ef export GIT_OPTIONAL_LOCKS=0 w=$(git rev-parse --path-format=absolute --show-toplevel) ; : "${w:?}" ; cd "$w" dst='debian/patches/tmp-zen' src='../linux-extras' branches='bbr3 fixes zen-sauce' if [ -d "${dst}" ] ; then rm -rf "${dst}" ; fi mkdir -p "${dst}" kver= if [ -n "$1" ] ; then kver="$1" else kver=$(dpkg-parsechangelog --show-field=Version | sed -E 's/^[0-9]+://;s/-[^-]*$//' | cut -d. -f1-2) fi from="upstream/linux-${kver}.y" t=$(mktemp -d) ; : "${t:?}" cp -ar "${src}" "$t/" cd "$t/${src##*/}" git config advice.skippedCherryPicks false for b in ${branches} ; do ref="zen/${kver}/$b" r="tmp-rebase-$b" git switch --detach "${ref}" git switch -C "$r" rm -rf "$w/${dst}/$b" ; mkdir -p "$w/${dst}/$b" if git rebase "${from}" ; then git format-patch -N --subject-prefix='' --output-directory "$w/${dst}/$b" "${from}..$r" else echo >&2 git rebase --abort touch "$w/${dst}/$b/0000-rebase-failed" base=$(git merge-base "${from}" "${ref}") git format-patch -N --subject-prefix='' --output-directory "$w/${dst}/$b" "${base}..${ref}" fi git switch -q --detach "${ref}" git branch -D "$r" echo >&2 done cd "$w" ; rm -rf "$t" echo >&2 echo 'output:' >&2 echo >&2 find "${dst}/" -type f -name '*.patch' | sed -E 's#^debian/patches/##' | sort -V