----- Original Message ----- > From: "Junio C Hamano" <gitster@xxxxxxxxx> > To: "Tigran Mkrtchyan" <tigran.mkrtchyan@xxxxxxx> > Cc: "git" <git@xxxxxxxxxxxxxxx>, "Jonathan Nieder" <jrnieder@xxxxxxxxx>, "Johannes Schindelin" > <Johannes.Schindelin@xxxxxx> > 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 <gitster@xxxxxxxxx> writes: > >> "Mkrtchyan, Tigran" <tigran.mkrtchyan@xxxxxxx> 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 <key>` in any order: ``` if (keyid) { opt.sign = 1; set_signing_key(keyid); } ``` IOW, `-u <key>` is another way to enable signing, what is, actually, consistent with man page: ``` -u <keyid>, --local-user=<keyid> 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.