summaryrefslogtreecommitdiff
path: root/scripts/update-patches-git
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2021-11-02 03:15:41 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2021-11-04 02:09:55 +0100
commit20c8ea7097cea73196ca97cb7c939c43b43b047b (patch)
tree48485e3bb8da6fd2e415503f01744724e25e08e3 /scripts/update-patches-git
parente56d72d71632eddf2f005debf56073349c011daf (diff)
scripts: Review patch_git.sh and update-patches-git
Fix git-backed package patching and patch updating scripts: * patch_git.sh was entirely broken (since forever?!) due to a missing 'cd' call * update-patches-git formatted the marker commit as patch instead of ignoring it The major improvement of this review is the elimination of the mandatory final marker commit. Putting it before the series being applied works well and allows to add a patch to the series without demanding a git-rebase call to get the marker back on top. While being at it: * Call 'git am --abort' only if there was a git repo already * Call git-commit and git-format-patch with extra options to avoid side-effects from a user's .gitconfig * Explicitly specify output format in git-log to avoid surprises, also split output properly with 'read' * Eliminate fake_hdr variable Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'scripts/update-patches-git')
-rw-r--r--scripts/update-patches-git27
1 files changed, 9 insertions, 18 deletions
diff --git a/scripts/update-patches-git b/scripts/update-patches-git
index 8337fa847..6f0bbfedb 100644
--- a/scripts/update-patches-git
+++ b/scripts/update-patches-git
@@ -3,29 +3,20 @@
# Update patches using git-format-patch from a source tree prepared by
# patch_git.sh.
#
-# (c) 2016 Phil Sutter <phil@nwl.cc>
+# (c) 2021 Phil Sutter <phil@nwl.cc>
wrkdist=$1
wd=$(pwd)
cd "$wrkdist"
-top=""
-top_series=""
-git log --grep="^OpenADK patch marker:" --oneline | while read hash subject; do
- [ -n "$top" ] || {
- top=$hash
- top_series="${subject#OpenADK patch marker: }"
- continue
- }
- bottom=$hash
- bottom_series="${subject#OpenADK patch marker: }"
-
- patchdir=$(<.git/patch_tmp/${top_series}/__patchdir__)
+top="HEAD"
+git log --grep='^OpenADK patch marker:' --format='%H %s'$logopt | \
+ while read hash o p m series; do
+ patchdir=$(<.git/patch_tmp/${series}/__patchdir__)
while read patchfile; do
rm ${patchdir}/$patchfile
- done < .git/patch_tmp/${top_series}/__patchfiles__
- git format-patch -N -o "$patchdir" ${bottom}..${top}
-
- top=$bottom
- top_series=$bottom_series
+ done < .git/patch_tmp/${series}/__patchfiles__
+ git format-patch --no-numbered --no-signoff --no-cover-letter \
+ --no-signature -o "$patchdir" ${hash}..${top}
+ top=${hash}^
done