{"thread":{"id":"41295","subject":"[PATCH] completion: verify-tag is not plumbing","startedAt":"2016-01-31T12:44:18Z","lastAt":"2016-02-01T18:51:51Z","messageCount":4,"participants":["John Keeping","SZEDER Gábor","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"277117","messageId":"60839686604d60632e1c80ef4fdd51eacb6b9290.1454244258.git.john@keeping.me.uk","threadId":"41295","inReplyTo":null,"subject":"[PATCH] completion: verify-tag is not plumbing","fromName":"John Keeping","fromEmail":"john@keeping.me.uk","sentAt":"2016-01-31T12:44:18Z","receivedAt":"2016-01-31T12:44:18Z","isPatch":true,"sender":{"key":"john@keeping.me.uk","avatar":"https://avatars.githubusercontent.com/u/1702081?v=4"},"body":"According to command-list.txt, verify-tag is an ancillary interrogator,\nwhich means that it should be completed by \"git verify-<TAB>\" in the\nsame way as verify-commit.\n\nRemove it from the list of plumbing commands so that it is treated as\nporcelain and completed.\n\nSigned-off-by: John Keeping <john@keeping.me.uk>\n---\n contrib/completion/git-completion.bash | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash\nindex 51f5223..250788a 100644\n--- a/contrib/completion/git-completion.bash\n+++ b/contrib/completion/git-completion.bash\n@@ -728,7 +728,6 @@ __git_list_porcelain_commands ()\n \t\twrite-tree)       : plumbing;;\n \t\tvar)              : infrequent;;\n \t\tverify-pack)      : infrequent;;\n-\t\tverify-tag)       : plumbing;;\n \t\t*) echo $i;;\n \t\tesac\n \tdone\n-- \n2.7.0\n"},{"id":"277118","messageId":"20160131143759.Horde.Ylcq6ydVoLduXCzBPzVjZMh@webmail.informatik.kit.edu","threadId":"41295","inReplyTo":"60839686604d60632e1c80ef4fdd51eacb6b9290.1454244258.git.john@keeping.me.uk","subject":"Re: [PATCH] completion: verify-tag is not plumbing","fromName":"SZEDER Gábor","fromEmail":"szeder@ira.uka.de","sentAt":"2016-01-31T13:37:59Z","receivedAt":"2016-01-31T13:37:59Z","isPatch":true,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"\nQuoting John Keeping <john@keeping.me.uk>:\n\n> According to command-list.txt, verify-tag is an ancillary interrogator,\n> which means that it should be completed by \"git verify-<TAB>\" in the\n> same way as verify-commit.\n>\n> Remove it from the list of plumbing commands so that it is treated as\n> porcelain and completed.\n\nI'm not sure.  There are commands among the ancillary interrogators  \nthat are basically porcelains (e.g. blame), while some are more like  \nplumbing (e.g. rerere, rev-parse).  In general the completion script  \nsupports the former but not the latter commands.\n\nNow, the real porcelain-ish way to verify a tag is via 'git tag  \n-v|--verify', and according to a925c6f165a3 (bash: Classify more  \ncommends out of completion., 2007-02-04), the commit removing  \nverify-tag from the completed commands, verify-tag was kept around for  \nbackwards compatibility reasons.  OTOH verify-commit was introduced in  \nd07b00b7f31d (verify-commit: scriptable commit signature verification,  \n2014-06-23), and as the subject line states it was intended more as a  \nplumbing command.\n\nSo I think we should keep excluding verify-tag from the list of  \nporcelain commands in the completion script, and it was an oversight  \nnot to exclude verify-commit as well when it was introduced.\n\n\nGábor\n\n> Signed-off-by: John Keeping <john@keeping.me.uk>\n> ---\n>  contrib/completion/git-completion.bash | 1 -\n>  1 file changed, 1 deletion(-)\n>\n> diff --git a/contrib/completion/git-completion.bash  \n> b/contrib/completion/git-completion.bash\n> index 51f5223..250788a 100644\n> --- a/contrib/completion/git-completion.bash\n> +++ b/contrib/completion/git-completion.bash\n> @@ -728,7 +728,6 @@ __git_list_porcelain_commands ()\n>  \t\twrite-tree)       : plumbing;;\n>  \t\tvar)              : infrequent;;\n>  \t\tverify-pack)      : infrequent;;\n> -\t\tverify-tag)       : plumbing;;\n>  \t\t*) echo $i;;\n>  \t\tesac\n>  \tdone\n> -- \n> 2.7.0\n"},{"id":"277165","messageId":"20160201104411.GD29880@serenity.lan","threadId":"41295","inReplyTo":"20160131143759.Horde.Ylcq6ydVoLduXCzBPzVjZMh@webmail.informatik.kit.edu","subject":"Re: [PATCH] completion: verify-tag is not plumbing","fromName":"John Keeping","fromEmail":"john@keeping.me.uk","sentAt":"2016-02-01T10:44:11Z","receivedAt":"2016-02-01T10:44:11Z","isPatch":true,"sender":{"key":"john@keeping.me.uk","avatar":"https://avatars.githubusercontent.com/u/1702081?v=4"},"body":"On Sun, Jan 31, 2016 at 02:37:59PM +0100, SZEDER Gábor wrote:\n> \n> Quoting John Keeping <john@keeping.me.uk>:\n> \n> > According to command-list.txt, verify-tag is an ancillary interrogator,\n> > which means that it should be completed by \"git verify-<TAB>\" in the\n> > same way as verify-commit.\n> >\n> > Remove it from the list of plumbing commands so that it is treated as\n> > porcelain and completed.\n> \n> I'm not sure.  There are commands among the ancillary interrogators\n> that are basically porcelains (e.g. blame), while some are more like\n> plumbing (e.g. rerere, rev-parse).  In general the completion script\n> supports the former but not the latter commands.\n> \n> Now, the real porcelain-ish way to verify a tag is via 'git tag\n> -v|--verify', and according to a925c6f165a3 (bash: Classify more\n> commends out of completion., 2007-02-04), the commit removing\n> verify-tag from the completed commands, verify-tag was kept around for\n> backwards compatibility reasons.  OTOH verify-commit was introduced in\n> d07b00b7f31d (verify-commit: scriptable commit signature verification,\n> 2014-06-23), and as the subject line states it was intended more as a\n> plumbing command.\n> \n> So I think we should keep excluding verify-tag from the list of\n> porcelain commands in the completion script, and it was an oversight\n> not to exclude verify-commit as well when it was introduced.\n\nI can accept that argument about verify-commit and verify-tag, but\nlisting verify-tag as plumbing is incorrect according to\ncommand-list.txt (and thus git(1)).  If we're going to classify\ncommands, shouldn't we be consistent in how we do so?\n\n> > Signed-off-by: John Keeping <john@keeping.me.uk>\n> > ---\n> >  contrib/completion/git-completion.bash | 1 -\n> >  1 file changed, 1 deletion(-)\n> >\n> > diff --git a/contrib/completion/git-completion.bash\n> > b/contrib/completion/git-completion.bash\n> > index 51f5223..250788a 100644\n> > --- a/contrib/completion/git-completion.bash\n> > +++ b/contrib/completion/git-completion.bash\n> > @@ -728,7 +728,6 @@ __git_list_porcelain_commands ()\n> >  \t\twrite-tree)       : plumbing;;\n> >  \t\tvar)              : infrequent;;\n> >  \t\tverify-pack)      : infrequent;;\n> > -\t\tverify-tag)       : plumbing;;\n> >  \t\t*) echo $i;;\n> >  \t\tesac\n> >  \tdone\n> > --\n> > 2.7.0\n"},{"id":"277177","messageId":"xmqq8u34w9fc.fsf@gitster.mtv.corp.google.com","threadId":"41295","inReplyTo":"20160201104411.GD29880@serenity.lan","subject":"Re: [PATCH] completion: verify-tag is not plumbing","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-02-01T18:51:51Z","receivedAt":"2016-02-01T18:51:51Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"John Keeping <john@keeping.me.uk> writes:\n\n> I can accept that argument about verify-commit and verify-tag, but\n> listing verify-tag as plumbing is incorrect according to\n> command-list.txt (and thus git(1)).  If we're going to classify\n> commands, shouldn't we be consistent in how we do so?\n\nThese are not meant to be \"classifications\", but \"justifications\".\nWhen somebody asks \"why isn't this command tab-completed?\", you can\nfind the explanation e.g. \"because it is rarely used\".\n\nA command being 'plumbing' does not have to make it automatically\nineligible from getting tab-completed.  For some small tasks,\nrunning a plumbing command may be the easiest way to achieve them in\nthe interactive session, and it helps to have tab-completion for\nsuch a plumbing command (e.g. \"git apply\" is completed, IIRC).\n\nAlso often the line between plumbing and Porcelain is somewhat\nblurry.  I'd consider ancillaryX categories in command-list.txt a\ncop-out myself.\n\nIn this particular case, saying \"better use 'tag --verify'\" there\ninstead of \"plumbing\" may be more helpful for those who are reading\nthis script.\n\n>> > Signed-off-by: John Keeping <john@keeping.me.uk>\n>> > ---\n>> >  contrib/completion/git-completion.bash | 1 -\n>> >  1 file changed, 1 deletion(-)\n>> >\n>> > diff --git a/contrib/completion/git-completion.bash\n>> > b/contrib/completion/git-completion.bash\n>> > index 51f5223..250788a 100644\n>> > --- a/contrib/completion/git-completion.bash\n>> > +++ b/contrib/completion/git-completion.bash\n>> > @@ -728,7 +728,6 @@ __git_list_porcelain_commands ()\n>> >  \t\twrite-tree)       : plumbing;;\n>> >  \t\tvar)              : infrequent;;\n>> >  \t\tverify-pack)      : infrequent;;\n>> > -\t\tverify-tag)       : plumbing;;\n>> >  \t\t*) echo $i;;\n>> >  \t\tesac\n>> >  \tdone\n>> > --\n>> > 2.7.0\n"}]}