61 lines
1.3 KiB
Bash
Executable File
61 lines
1.3 KiB
Bash
Executable File
#!/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='zen-sauce fixes'
|
|
|
|
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
|