From: Linus Torvalds <torvalds@osdl.org>
To: Carl Worth <cworth@cworth.org>
Cc: git@vger.kernel.org
Subject: Re: Two crazy proposals for changing git's diff commands
Date: Wed, 8 Feb 2006 17:05:14 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0602081643570.2458@g5.osdl.org> (raw)
In-Reply-To: <87slqtcr2f.wl%cworth@cworth.org>
On Wed, 8 Feb 2006, Carl Worth wrote:
>
> I would be using this before every "got commit" to get a preview, and
> it seems like a painfully long name for such a common operation. Even
> its shortcut form:
>
> git diff --cached HEAD
>
> is among the longest of the "git diff" shortcuts.
[ snip snip ]
Yeah, I agree. The "git diff" semantics are incomplete, and the choices
may not be (aka "almost certainly aren't") the best. The recent "git show"
actually came from a very common use (well, for me, at least) for
"git-diff-tree" that the "git diff" command simply didn't support.
I don't think it's really worth changing the low-level command naming:
nopefully few enough people use them that it doesn't matter, but that's
also what scripts out there are likely to have, so the pain factor when
something breaks is high enough.
But making "git diff" itself more often "Do The Right Thing(tm)" would
probably be a good idea.
In particular, I think the real culprit is the plain "git diff" with no
arguments at all. Right now it ends up showing just a piece of the
picture, and the piece it shows is incomplete enough to be irritating.
So I would prefer a slightly different fix from yours: instead of changing
the core commands (which hopefully people mainly use in scripts where
stability is more important than "intuitive and easy defaults"), how about
_just_ changing the meaning of "git diff"?
Right now a plain "git diff" only shows the differences in the current
tree against the index. I think that was just the wrong choice. I think
almost everybody would actually prefer the default to be to show the
difference against HEAD.
The largest reason for why "git diff" defaults to diffing against the
index (and not head) is _literally_ that it's faster. Yes, I'm ashamed,
but "git diff HEAD" takes 0.35 seconds for me, and "git diff" takes 0.07
seconds, and largely based entirely on that (and not "what would users
want"), I made the bad choice to default to git-diff-files for the "no
arguments" case.
I hang my head in shame. I just like the _instantness_ of "nothing
changed". That's a bad reason for choice of interfaces, though.
One option is to realize that "git status" is actually a much better thing
to use (because it shows _both_ the "HEAD to index" _and_ "index to
current tree" format).
Teaching "git status" to take a "-p" flag (for "patch" - or -v for
"verbose") might actually be a good thing. Then, instead of "git diff",
you'd use "git status -p" and it would show you what the differences are
in the index, and what they are in the tree, so you'd _really_ know what
"git commit" in all its glory would do.
Linus
next prev parent reply other threads:[~2006-02-09 1:05 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-09 0:29 Two crazy proposals for changing git's diff commands Carl Worth
2006-02-09 1:05 ` Linus Torvalds [this message]
2006-02-09 1:21 ` Linus Torvalds
2006-02-09 23:07 ` Carl Worth
2006-02-09 23:40 ` Junio C Hamano
2006-02-09 1:35 ` Junio C Hamano
2006-02-09 1:21 ` Junio C Hamano
2006-02-09 1:30 ` Linus Torvalds
2006-02-09 1:37 ` Junio C Hamano
2006-02-10 9:05 ` Junio C Hamano
2006-02-10 20:32 ` Comments on "status -v" (was: Two crazy proposals for changing git's diff commands) Carl Worth
2006-02-10 21:09 ` Comments on "status -v" Junio C Hamano
2006-02-10 21:35 ` Linus Torvalds
2006-02-10 22:12 ` Junio C Hamano
2006-02-10 22:51 ` Petr Baudis
2006-02-10 23:26 ` Junio C Hamano
2006-02-09 23:44 ` Two crazy proposals for changing git's diff commands Carl Worth
2006-02-10 0:13 ` Junio C Hamano
2006-02-10 1:24 ` Carl Worth
2006-02-10 2:24 ` Junio C Hamano
2006-02-10 3:18 ` Carl Worth
2006-02-10 17:06 ` Mark Wooding
2006-02-13 9:23 ` Catalin Marinas
2006-02-13 22:00 ` Prune-safe StGIT (was Re: Two crazy proposals for changing git's diff commands) Catalin Marinas
2006-02-10 19:36 ` Two crazy proposals for changing git's diff commands Kent Engstrom
2006-02-11 19:25 ` Junio C Hamano
2006-02-12 12:00 ` [PATCH] Add howto about separating topics kent
2006-02-12 3:15 ` Two crazy proposals for changing git's diff commands J. Bruce Fields
2006-02-12 3:48 ` Junio C Hamano
2006-02-09 16:44 ` Tim Larson
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=Pine.LNX.4.64.0602081643570.2458@g5.osdl.org \
--to=torvalds@osdl.org \
--cc=cworth@cworth.org \
--cc=git@vger.kernel.org \
/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).