The behaviour of git-format-patch can be customized through user-defined
variables from the environment or from the user's .gitconfig, like
custom regexes for function context in diff hunk headers, or different
cleanup options. These things can lead to fuzz in generated patches
which cannot easily be reproduced by different users when re-exporting
existing patch stacks.

Create a wrapper to call git in a pristine environment in order to
minimize any differences between user environments, and use it to format
the patch stack.

Signed-off-by: Roland Hieber <r...@pengutronix.de>

---
v3:
 - fix typo in the log message

v2:
 - saving author and email is not necessary for format-patch
---
 scripts/git-ptx-patches | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/scripts/git-ptx-patches b/scripts/git-ptx-patches
index 721aa78ba31c..fe680273085b 100755
--- a/scripts/git-ptx-patches
+++ b/scripts/git-ptx-patches
@@ -1,5 +1,20 @@
 #!/bin/bash
 
+# Create a pristine environment to minimize unnecessary fuzz when different
+# users use git-ptx-patches on the same patch stack. That is, don't load any
+# config files, and pin down environment variables which could influence git's
+# behaviour or patch output.
+pristine_git() {
+       # Notes from the git(1) manpage:
+       # - GIT_DIFF_OPTS takes takes precedence over -U command line parameter
+       HOME=/nonexistent \
+       XDG_CONFIG_HOME=/nonexistent \
+       GIT_CONFIG_NOSYSTEM=true \
+       GIT_DIFF_OPTS="-u3" \
+       git "$@"
+}
+GIT="pristine_git"
+
 PTX_PATCHES_HEADER="# generated by git-ptx-patches"
 
 function _md5sum() {
@@ -116,7 +131,7 @@ case "$remove_old" in
 esac
 
 # git-format-patch --no-signature is supported since git 1.7.2
-if git format-patch -h 2>&1 | grep -q signature; then
+if ${GIT} format-patch -h 2>&1 | grep -q signature; then
        GIT_EXTRA_ARGS="--no-signature"
 fi
 
@@ -129,7 +144,7 @@ fi
 GIT_EXTRA_ARGS="$GIT_EXTRA_ARGS --summary --stat=80"
 
 cat .ptxdist/series.0 > .ptxdist/series
-git format-patch -N $GIT_EXTRA_ARGS ${tagopt} -o .ptxdist/patches/ ${range} | 
sed -e 's,^.ptxdist/patches/,,' > .ptxdist/series.auto
+${GIT} format-patch -N $GIT_EXTRA_ARGS ${tagopt} -o .ptxdist/patches/ ${range} 
| sed -e 's,^.ptxdist/patches/,,' > .ptxdist/series.auto
 cat .ptxdist/series.auto >> .ptxdist/series
 cat .ptxdist/series.1 >> .ptxdist/series
 cat .ptxdist/series | _md5sum >> .ptxdist/series
-- 
2.24.0


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

Reply via email to