On Mon, Nov 11, 2019 at 12:31:29PM +0100, Roland Hieber wrote:
> The brhaviour 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 <[email protected]>
> ---
>  scripts/git-ptx-patches | 31 +++++++++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/git-ptx-patches b/scripts/git-ptx-patches
> index 721aa78ba31c..63a1b3921646 100755
> --- a/scripts/git-ptx-patches
> +++ b/scripts/git-ptx-patches
> @@ -1,5 +1,32 @@
>  #!/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.
> +# Maybe we need to save name and e-mail from the user config…
> +# Note from git-commit-tree(1): if set in the user's environment, 
> GIT_AUTHOR_*
> +# and GIT_COMMITTER_* still take precedence over the user.* config variables.
> +PRISTINE_GIT_AUTHOR=$(git config --get user.name)
> +PRISTINE_GIT_EMAIL=$(git config --get user.email)
> +PRISTINE_GIT_PARAMS=()
> +if [ -n "${PRISTINE_GIT_AUTHOR}" ]; then
> +     PRISTINE_GIT_PARAMS+=( -c user.name="${PRISTINE_GIT_AUTHOR}" )
> +fi
> +if [ -n "${PRISTINE_GIT_EMAIL}" ]; then
> +     PRISTINE_GIT_PARAMS+=( -c user.email="${PRISTINE_GIT_EMAIL}" )
> +fi

I don't think we need to save user / email here.
git is only used for create patches, not create new commits.

Michael

> +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 "${PRISTINE_GIT_PARAMS[@]}" "$@"
> +}
> +GIT="pristine_git"
> +
>  PTX_PATCHES_HEADER="# generated by git-ptx-patches"
>  
>  function _md5sum() {
> @@ -116,7 +143,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 +156,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.rc1
> 
> 
> _______________________________________________
> ptxdist mailing list
> [email protected]

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
ptxdist mailing list
[email protected]

Reply via email to