From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Michael Haggerty <mhagger@alum.mit.edu>,
Scott Chacon <schacon@gmail.com>,
Jakub Narebski <jnareb@gmail.com>, Michael Nahas <mike@nahas.com>,
git@vger.kernel.org
Subject: Re: Command-line interface thoughts
Date: Thu, 9 Jun 2011 16:04:03 -0400 [thread overview]
Message-ID: <20110609200403.GA3955@sigill.intra.peff.net> (raw)
In-Reply-To: <7v8vtayhnm.fsf@alter.siamese.dyndns.org>
On Thu, Jun 09, 2011 at 11:38:21AM -0700, Junio C Hamano wrote:
> I think this mega-thread served its purpose. It started to explore "will
> it make it easier to understand and explain if we use these tokens to name
> trees that do not exist in reality?" which is a worthy thing to do. The
> conclusion appears to be "well we do not even know what exactly these
> tokens mean in certain situations." but at least people tried, and along
> the way a few new people seem to have become more aware of the index, so
> overall we didn't lose that much.
I think there are actually two questions here:
1. Will it be easier for people to understand "git diff" if we use
tokens to describe non-treeish sources and destinations?
2. Are there better tokens to use to break down parts of the index?
I don't have a big problem with (1). Allowing things like:
git diff INDEX WTREE
allows one to explain what is going on with the diff syntax in a very
clear and verbose manner. I wouldn't want to type that every day, but
that's OK; "git diff" will always mean the same thing as it always has,
but can now be explained to people who have trouble seeing it in terms
of "git diff INDEX WTREE".
There's still a bit of magic in that INDEX is _not_ a tree, but I think
that's a good thing. When there are no merge conflicts, it will behave
identically to the proposed NEXT tree. And when there are conflicts, it
will show you something even more useful.
It does have the potential to confuse in that "INDEX" is not actually a
tree, and so we can't expect to use it as a tree-ish everywhere. So now
diff feels a little inconsistent with other parts of git. One idea,
which I think is probably too crazy, would be to let INDEX be used as a
tree-ish everywhere, but only if all entries are at stage 0. Otherwise,
it will die with an error. That would make it more or less a more
verbose version of ":" (e.g., I can do "git show :Makefile", but it will
die with an error if Makefile exists only at higher stages).
I'm less sure about these new tokens, for a few reasons:
1. You get less useful answers in some situations by treating each
stage as a separate tree (e.g., lack of combined diff). So why
would I want to use them?
2. Their answers are different than what diffing against the INDEX
could give. So in theory they could be more useful in different
situations than a diff against the index. But I haven't seen a good
example of what such a situation would be.
3. They're supposed to introduce consistency in explaining diff
behavior. But we're not going to change what "git diff" does to not
use the whole index. So "git diff" isn't actually expressible using
these tokens.
4. They're supposed to be simpler to understand than index stages. But
are they? The latest definitions seem to be:
OURS is a tree of each path in the index, either from stage 2 if
it exists, or from NEXT otherwise.
NEXT is a tree of each path in the index, either from stage 0 if
it exists, or from HEAD otherwise.
But that doesn't seem any simpler to me than just saying "the index
has numbered stages, and they correspond to resolved, base, ours,
and theirs".
I agree that ":2:Makefile" is not exactly an intuitive way to ask for
"ours". Didn't we have a patch at one point a year or two ago to allow
using names instead of numbered stages? If we allowed "INDEX" as a
verbose noise-word in front of ":", then you could say:
git show INDEX:OURS:Makefile
which is identical to what I wrote above, but is perhaps easier to
explain.
-Peff
next prev parent reply other threads:[~2011-06-09 20:04 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BANLkTikTWx7A64vN+hVZgL7cuiZ16Eobgg@mail.gmail.com>
2011-06-04 16:17 ` Command-line interface thoughts Michael Nahas
2011-06-04 21:49 ` Jakub Narebski
2011-06-05 1:00 ` Michael Nahas
2011-06-05 11:10 ` Jakub Narebski
2011-06-05 18:39 ` Scott Chacon
2011-06-05 23:37 ` Jakub Narebski
2011-06-06 6:16 ` Junio C Hamano
2011-06-06 7:34 ` Michael J Gruber
2011-06-06 11:45 ` Michael Nahas
2011-06-06 12:19 ` Jakub Narebski
2011-06-06 13:20 ` Michael J Gruber
2011-06-08 13:10 ` Jakub Narebski
2011-06-06 16:23 ` Junio C Hamano
2011-06-06 16:40 ` Drew Northup
2011-06-06 14:00 ` Junio C Hamano
2011-06-06 14:16 ` Michael J Gruber
2011-06-06 16:14 ` Junio C Hamano
2011-06-06 17:42 ` Scott Chacon
2011-06-06 19:01 ` Junio C Hamano
[not found] ` <BANLkTi=yytzDrJLvVn_ZhJOiQs-rqvKi1w@mail.gmail.com>
2011-06-07 2:31 ` Michael Nahas
2011-06-07 4:03 ` Junio C Hamano
2011-06-07 11:04 ` Michael Nahas
2011-06-07 6:11 ` Michael J Gruber
2011-06-07 11:45 ` Jonathan Nieder
2011-06-07 19:00 ` Holger Hellmuth
2011-06-07 19:11 ` Jonathan Nieder
2011-06-07 20:33 ` Jakub Narebski
2011-06-08 13:04 ` Holger Hellmuth
2011-06-08 18:56 ` Jakub Narebski
2011-06-09 11:55 ` Holger Hellmuth
2011-06-10 16:44 ` Jakub Narebski
2011-06-10 18:07 ` Holger Hellmuth
2011-06-10 18:35 ` Jakub Narebski
2011-06-10 22:45 ` Holger Hellmuth
2011-06-13 3:43 ` git diff --added (Re: Command-line interface thoughts) Jonathan Nieder
2011-06-13 4:11 ` Miles Bader
2011-06-13 4:46 ` Miles Bader
2011-06-13 8:06 ` Jonathan Nieder
2011-06-13 12:55 ` Junio C Hamano
2011-06-13 12:28 ` Junio C Hamano
2011-06-13 19:47 ` Holger Hellmuth
2011-06-13 20:31 ` Michael Nahas
2011-06-13 10:15 ` Command-line interface thoughts Jakub Narebski
2011-06-13 22:33 ` Holger Hellmuth
2011-06-14 4:21 ` Michael Haggerty
2011-06-14 7:51 ` Jakub Narebski
2011-06-07 19:34 ` René Scharfe
2011-06-07 19:38 ` Jakub Narebski
2011-06-08 11:12 ` Command-line interface thoughts (ad-hominem attacks) Jakub Narebski
2011-06-08 11:39 ` Michael Nahas
2011-06-08 12:42 ` Jakub Narebski
2011-06-08 14:15 ` Michael Nahas
2011-06-08 15:05 ` Jeff King
2011-06-08 18:57 ` Michael Nahas
2011-06-09 0:43 ` Jeff King
2011-06-09 1:56 ` Michael Nahas
2011-06-10 15:29 ` Jakub Narebski
2011-06-09 9:48 ` Command-line interface thoughts Jakub Narebski
2011-06-09 11:44 ` Michael Nahas
2011-06-09 12:45 ` Jakub Narebski
2011-06-09 13:06 ` Jakub Narebski
2011-06-09 9:06 ` Michael Haggerty
2011-06-09 10:02 ` Andreas Ericsson
2011-06-09 13:30 ` Thomas Rast
2011-06-09 16:18 ` Jeff King
2011-06-09 17:15 ` Jay Soffian
2011-06-09 17:20 ` Jeff King
2011-06-09 17:36 ` Junio C Hamano
2011-06-09 18:20 ` Jay Soffian
2011-06-09 19:40 ` Junio C Hamano
2011-06-09 18:03 ` Michael Haggerty
2011-06-09 18:38 ` Junio C Hamano
2011-06-09 19:17 ` Michael Haggerty
2011-06-09 20:04 ` Jeff King [this message]
2011-06-09 21:37 ` Michael Haggerty
2011-06-09 22:04 ` Jakub Narebski
2011-06-09 23:02 ` Michael Haggerty
2011-06-10 10:19 ` Jakub Narebski
2011-06-10 11:06 ` Michael Nahas
2011-06-10 12:20 ` Jakub Narebski
2011-06-09 22:21 ` Jeff King
2011-06-09 22:27 ` Michael Nahas
2011-06-09 22:38 ` Jeff King
2011-06-09 22:55 ` Jakub Narebski
2011-06-10 0:00 ` Michael Nahas
2011-06-10 0:08 ` Jeff King
2011-06-10 21:48 ` Junio C Hamano
2011-06-10 22:08 ` Junio C Hamano
2011-06-10 23:05 ` Jakub Narebski
2011-06-12 6:06 ` Michael Haggerty
2011-06-12 21:12 ` Junio C Hamano
2011-06-12 13:30 ` Michael Nahas
2011-06-12 21:29 ` Junio C Hamano
2011-06-13 2:14 ` Michael Nahas
2011-06-13 18:50 ` Jeff King
2011-06-09 19:41 ` Jeff King
2011-06-05 21:22 ` Paul Ebermann
2011-06-05 21:34 ` Paul Ebermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110609200403.GA3955@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
--cc=mhagger@alum.mit.edu \
--cc=mike@nahas.com \
--cc=schacon@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).