Re: [RFC/PATCH] tag: make list exclude !<pattern>
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Feb 13, 2012, 05:29 UTC
- Message-ID
- <4F389FB1.2070706@alum.mit.edu>
- In-Reply-To
- <7vlio9n5ym.fsf@alter.siamese.dyndns.org>
On 02/11/2012 09:13 AM, Junio C Hamano wrote:
Show 26 quoted lines
> Michael Haggerty <mhagger@alum.mit.edu> writes: > >> The proposal, amended to use "^" instead of "!", is that >> >> git for-each-ref A B ^C >> >> should mean "the reference names A and B but not C". Therefore, the command >> >> git rev-list $(git for-each-ref A B ^C) >> >> , which consistency suggests should do the same thing as the first >> command,... > > That is an utter rubbish that does not even deserve a response. > > Your argument is like saying > > git for-each-ref A > > and > > git for-each-ref $(git rev-parse A) > > should somehow magically produce the same (or related) result. The > for-each-ref command operates on refname patterns, while rev-list and > rev-parse takes object names.
Of *course* they operate on different namespaces. But part of the way that revisions are selected using rev-list is by *selecting or excluding refnames* from which it should crawl. How long do you think it will be before somebody asks for rev-list to be able to crawl from a set of branches *except for those that match some pattern*? (Hint: I more or less asked for this feature in the "rubbish" email that you quoted.) At that point we will have to say one of the following:
"Your suggestion is utter rubbish; just type 'git rev-list $(git for-each-ref A B ^C)'."
This is an acceptable (though somewhat verbose) answer for the Unix command line; for msgit users it is useless, and it probably cannot be used in non-command-line scenarios like the gitk "edit view" dialog.
"Sure, but we have to invent yet another syntax because the one used by for-each-ref conflicts with the existing syntax of rev-list." This would be the standard git project practice of letting the UI accrete into an ever more incomprehensible mess.
That is why I suggest that we choose a new syntax *now* for for-each-ref (and "branch --list", "tag --list", etc) so that the same syntax can be used later in rev-list, rev-parse, etc.
Michael
-- Michael Haggerty mhagger@alum.mit.edu http://softwareswirl.blogspot.com/