git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 1/7] gpg-interface: add new config to select how to sign a commit

From
Henning Schild <henning.schild@siemens.com>
Date
Jul 17, 2018, 12:50 UTC
Message-ID
<20180717145009.6cf163f3@md1pvb1c.ad001.siemens.net>
In-Reply-To
<xmqqh8kzszth.fsf@gitster-ct.c.googlers.com>

Am Mon, 16 Jul 2018 13:14:34 -0700 schrieb Junio C Hamano <gitster@pobox.com>:

Show 67 quoted lines
> Henning Schild <henning.schild@siemens.com> writes:
> 
> > Add "gpg.format" where the user can specify which type of signature
> > to use for commits. At the moment only "openpgp" is supported and
> > the value is not even used. This commit prepares for a new types of
> > signatures.
> >
> > Signed-off-by: Henning Schild <henning.schild@siemens.com>
> > ---
> >  Documentation/config.txt | 4 ++++
> >  gpg-interface.c          | 7 +++++++
> >  2 files changed, 11 insertions(+)
> >
> > diff --git a/Documentation/config.txt b/Documentation/config.txt
> > index 1cc18a828..ac373e3f4 100644
> > --- a/Documentation/config.txt
> > +++ b/Documentation/config.txt
> > @@ -1828,6 +1828,10 @@ gpg.program::
> >  	signed, and the program is expected to send the result to
> > its standard output.
> >  
> > +gpg.format::
> > +	Specifies which key format to use when signing with
> > `--gpg-sign`.
> > +	Default is "openpgp", that is also the only supported
> > value. +
> >  gui.commitMsgWidth::
> >  	Defines how wide the commit message window is in the
> >  	linkgit:git-gui[1]. "75" is the default.
> > diff --git a/gpg-interface.c b/gpg-interface.c
> > index 09ddfbc26..960c40086 100644
> > --- a/gpg-interface.c
> > +++ b/gpg-interface.c
> > @@ -7,6 +7,7 @@
> >  #include "tempfile.h"
> >  
> >  static char *configured_signing_key;
> > +static const char *gpg_format = "openpgp";
> >  static const char *gpg_program = "gpg";
> >  
> >  #define PGP_SIGNATURE "-----BEGIN PGP SIGNATURE-----"
> > @@ -138,6 +139,12 @@ int git_gpg_config(const char *var, const char
> > *value, void *cb) return 0;
> >  	}
> >  
> > +	if (!strcmp(var, "gpg.format")) {
> > +		if (value && strcasecmp(value, "openpgp"))
> > +			return error("malformed value for %s: %s",
> > var, value);
> > +		return git_config_string(&gpg_format, var,
> > value);  
> 
> I may be mistaken (sorry, I read so many topics X-<) but I think the
> consensus was to accept only "openpgp" so that we can ensure that
> 
> 	[gpg "openpgp"] program = foo
> 
> etc. can be parsed more naturally without having to manually special
> case the subsection name to be case insensitive.  In other words,
> strcasecmp() should just be strcmp().  Otherwise, people would get a
> wrong expectation that
> 
> 	[gpg] format = OpenPGP
> 	[gpg "openpgp"] program = foo
> 
> should refer to the same and single OpenPGP, but that would violate
> the usual configuration syntax rules.

Ok, also having read the other mails i think we are still at gpg.format and gpg.<format>.program, so i switched the two patches from strcasecmp back to strcmp.

Show 13 quoted lines
> The structure of checking the error looks quite suboptimal even when
> we initially support the single "openpgp" at this step.  I would
> have expected you to be writing the above like so:
> 
> 	if (!value)
> 		return config_error_nonbool(var);
> 	if (strcmp(value, "openpgp"))
> 		return error("unsupported value for %s: %s", var,
> value); return git_config_string(...);
> 
> That would make it more clear that the variable is "nonbool", which
> does not change across additional support for new formats in later
> steps.

Right, at one point (not mailed) i had that but expected it would not pass the review, since git_config_string contains that check as well. Changed.

Henning
 
Show 5 quoted lines
> > +	}
> > +
> >  	if (!strcmp(var, "gpg.program")) {
> >  		if (!value)
> >  			return config_error_nonbool(var);  
Previous: Jeff KingNext: brian m. carlson
Message 7 of 19 in “X509 (gpgsm) commit signing support”
  1. 0/7 X509 (gpgsm) commit signing supportHenning Schild, Jul 13, 2018
  2. 2/7 t/t7510: check the validation of the new config gpg.formatHenning Schild, Jul 13, 2018
  3. Junio C HamanoJul 16, 2018
  4. 1/7 gpg-interface: add new config to select how to sign a commitHenning Schild, Jul 13, 2018
  5. Junio C HamanoJul 16, 2018
  6. Jeff KingJul 16, 2018
  7. Henning SchildJul 17, 2018
  8. brian m. carlsonJul 17, 2018
  9. Jeff KingJul 17, 2018
  10. 4/7 gpg-interface: do not hardcode the key string len anymoreHenning Schild, Jul 13, 2018
  11. Junio C HamanoJul 16, 2018
  12. 3/7 gpg-interface: introduce an abstraction for multiple gpg formatsHenning Schild, Jul 13, 2018
  13. Junio C HamanoJul 16, 2018
  14. Henning SchildJul 17, 2018
  15. 5/7 gpg-interface: introduce new config to select per gpg format programHenning Schild, Jul 13, 2018
  16. Junio C HamanoJul 16, 2018
  17. Henning SchildJul 17, 2018
  18. 6/7 gpg-interface: introduce new signature format "x509" using gpgsmHenning Schild, Jul 13, 2018
  19. 7/7 gpg-interface t: extend the existing GPG tests with GPGSMHenning Schild, Jul 13, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.