From: Mkrtchyan, Tigran Date: Wed, 05 Jun 2019 21:09:56 GMT Subject: Re: [PATCH v3] tag: add tag.gpgSign config option to force all tags be GPG-signed Message-ID: <2146612842.10496277.1559768996738.JavaMail.zimbra@desy.de> In-Reply-To: ----- Original Message ----- > From: "Junio C Hamano" > To: "Tigran Mkrtchyan" > Cc: "git" , "Jonathan Nieder" , "Johannes Schindelin" > > Sent: Wednesday, June 5, 2019 10:57:34 PM > Subject: Re: [PATCH v3] tag: add tag.gpgSign config option to force all tags be GPG-signed > Junio C Hamano writes: > >> "Mkrtchyan, Tigran" writes: >> >>>> But more importantly, I think we should justify why this "not >>>> allowed" makes sense as the design of the feature. A plausible >>>> alternative design would simply follow the "last one wins" paradigm, >>>> ... >>> This is matter of convention. >> >> Oh, if you put it that way, it is quite clear that we should redo >> this part, as the rest of Git command line processing all pretty >> much follow "last one wins". I was mostly curious if there was any >> strong reason why this combination has to be different. > > One reason why "last one wins" aka "you have a chance to correct > yourself" is so useful is because people can then use alias to > define leading options, e.g. with > > [alias] myfoo = foo --option1 --option2 --option3 > > a user can say "git myfoo" to save typing, but in a rare occasion > where only options 2 and 3 (but not option 1) are desired, can use > "git myfoo --no-option1" to countermand it. > > Unfortunately, I do not think we can use the same technique for > options that is given to the "git" potty, e.g. with > > [alias] paged-status = --paginate status > > you can say "git paged-status" to have your "git status" output sent > to the pager, but you cannot say "git paged-status --no-pager" to > defeat that leading option. We may want to find a way to correct > it, but it is rather low on the priority scale ;-) Makes sense. Thanks for that use case, which I actually use myself :). BTW, `--no-sign` currently doesn't affects `-u ` in any order: ``` if (keyid) { opt.sign = 1; set_signing_key(keyid); } ``` IOW, `-u ` is another way to enable signing, what is, actually, consistent with man page: ``` -u , --local-user= Make a GPG-signed tag, using the given key. ``` I will leave it as-is, I will just describe that tag.gpgSign options doesn't affect '-u' behavior. Tigran.