From: Roland Hieber <rhi@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH] git-ptx-patches: call git in a pristine environment
Date: Sun, 17 Nov 2019 22:57:27 +0100 [thread overview]
Message-ID: <20191117215727.eftlh7gdrkwvn6ad@pengutronix.de> (raw)
In-Reply-To: <20191117103106.di4oa2ziuckeicqe@pengutronix.de>
On Sun, Nov 17, 2019 at 11:31:06AM +0100, Michael Olbrich wrote:
> 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
s/brhaviour/behaviour ...
> > 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 <rhi@pengutronix.de>
> > ---
> > 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.
The author name and email go into the patch as well, and those settings
also influence the Signed-off-by tags, if used. I bet there is at least
one user that have configured a different user name or email in their
~/.gitconfig. We should follow the principle of least surprise here and
do the same as git does.
- Roland
>
> 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
> > ptxdist@pengutronix.de
>
> --
> 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 |
>
--
Roland Hieber, Pengutronix e.K. | r.hieber@pengutronix.de |
Steuerwalder Str. 21 | https://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2019-11-17 21:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-11 11:31 Roland Hieber
2019-11-17 10:31 ` Michael Olbrich
2019-11-17 21:57 ` Roland Hieber [this message]
2019-11-18 7:18 ` Alexander Dahl
2019-11-18 9:13 ` Michael Olbrich
2019-11-18 9:21 ` [ptxdist] [PATCH v2] " Roland Hieber
2019-11-18 9:32 ` [ptxdist] [PATCH v3] " Roland Hieber
2019-11-18 13:39 ` Jon Ringle
2019-11-27 9:41 ` Roland Hieber
2019-12-05 10:15 ` Roland Hieber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191117215727.eftlh7gdrkwvn6ad@pengutronix.de \
--to=rhi@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox