From: Linus Torvalds <torvalds@osdl.org>
To: Junio C Hamano <junkio@cox.net>
Cc: Nicolas Pitre <nico@cam.org>, Carl Worth <cworth@cworth.org>,
Theodore Tso <tytso@mit.edu>, Andreas Ericsson <ae@op5.se>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
git@vger.kernel.org
Subject: Re: [PATCH 0/2] Making "git commit" to mean "git commit -a".
Date: Thu, 30 Nov 2006 15:40:58 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0611301520370.3513@woody.osdl.org> (raw)
In-Reply-To: <7vlklsfsgz.fsf@assigned-by-dhcp.cox.net>
On Thu, 30 Nov 2006, Junio C Hamano wrote:
>
> I sense that you are inviting me to argue for reverting the
> other "git commit" braindead which is spelled "--only" (and
> worse yet, it is the default). I am very tempted.
I actually really like the current defaults for "git commit".
And I say that despite the fact that the defaults are _different_ from the
original ones.
I like the fact that when you do "git commit filename", it really will
commit _only_ that file, not the other files you added. It's logical.
So you can do
echo a > file-a
echo b > file-b
git add file-a file-b
git commit file-a
and it will only commit one of them. Now, admittedly, the status message
that you get is slightly misleading (it says that "file-b" is untracked,
which is not strictly true or at least somewhat confusing - it's untracked
only within the context of that one commit), but this is all logically
consistent.
And it's wonderful for noticing "Oh, sh*t, I forgot to commit that
previous change, let's commit that other file first!". You can do things
like this _despite_ the fact that you've added other files to the list of
files to be committed.
The current semantics for "git commit" are really powerful, and really
flexible. Yes, there are different "cases", but they all have their place:
- "git commit" on its own:
This is for things where you prepared things earlier: notably a merge,
for example. But it might be the "--amend" case too, where you simply
don't want to change any of the working tree, just the commit message.
The fact that it has a nice fallback for the "nothing to commit" case
which basically just prints out the same thing as "git status" is just
gravy.
- "git commit explicit/file anotherfile"
This is great (and I use it) exactly for when you have random other
additions in your tree that are brewing, and you just want to commit a
particular fix that takes precedence. You may be in the middle of
something else, but you found a critical bug that needs to be fixed,
and while you _could_ do it on another branch, it's just a lot more
convenient to specify exactly what you want to commit.
- "git commit -a"
Sure, this is the common case, but just how painful is it to type those
extra few characters? And not defaulting to this is just sensible,
considering that "-a" really is not _that_ special, and the above two
cases simply aren't that unusual either. And it's just good to make
people have to _think_ about the fact that it commits everything that
have dirty.
At least for me, it turns out that the only mode I _never_ use personally
is the "git commit -i" thing, which was actually the original behaviour,
and which you'd think that I would encourage for that reason. But no. Of
all the modes of "git commit", that's the one I think is the least
important, and least interesting.
Of course, during a merge, you do need "-i" if you list files, but I think
"-a" subsumes almost all cases (you _can_ use "-i file-list" or totally
manually decide to have some extra edits you did that you don't want to
commit together with the merge, but that's such a special case that I
doubt anybody does it, so I don't think it's a big deal).
Anyway, we have "-i", and we don't force anybody to use it, so the fact
that it's a bit odd and not that useful doesn't really matter. It
certainly "fits" in the git commit family as another case, it's just not
one of the important cases.
next prev parent reply other threads:[~2006-11-30 23:41 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-27 21:31 [PATCH/RFC] "init-db" can really be just "init" Nicolas Pitre
2006-11-27 22:05 ` Junio C Hamano
2006-11-27 22:40 ` Hyphens and hiding core commands (was: "init-db" can really be just "init") Carl Worth
2006-11-27 23:59 ` Hyphens and hiding core commands Junio C Hamano
2006-11-28 0:23 ` Carl Worth
2006-11-28 0:42 ` Junio C Hamano
2006-11-28 1:35 ` Carl Worth
2006-11-28 2:18 ` Junio C Hamano
2006-11-28 5:40 ` Theodore Tso
2006-11-28 9:15 ` Junio C Hamano
2006-11-29 7:14 ` Michael S. Tsirkin
2006-11-28 6:59 ` [PATCH 0/2] Making "git commit" to mean "git commit -a" Junio C Hamano
2006-11-28 10:26 ` Andy Whitcroft
2006-11-28 13:00 ` Josef Weidendorfer
2006-11-28 13:23 ` Jakub Narebski
2006-11-28 18:18 ` Carl Worth
2006-11-29 3:06 ` Junio C Hamano
2006-11-29 4:33 ` Nicolas Pitre
2006-11-29 7:44 ` Junio C Hamano
2006-11-29 18:08 ` Nicolas Pitre
2006-11-29 18:18 ` Jakub Narebski
2006-11-29 19:12 ` Steven Grimm
2006-11-29 19:30 ` Jakub Narebski
2006-11-29 18:53 ` Junio C Hamano
2006-11-29 19:09 ` Steven Grimm
2006-11-29 20:01 ` Johannes Schindelin
2006-11-29 20:39 ` Junio C Hamano
2006-11-29 21:50 ` xdl_merge(), was " Johannes Schindelin
2006-11-30 5:24 ` Seth Falcon
2006-11-29 23:37 ` Carl Worth
2006-11-29 23:53 ` Johannes Schindelin
2006-11-30 1:03 ` Junio C Hamano
2006-11-30 1:22 ` Junio C Hamano
2006-11-30 1:58 ` Steven Grimm
2006-11-30 2:04 ` Sam Vilain
2006-11-30 2:12 ` Junio C Hamano
2006-11-30 2:11 ` Johannes Schindelin
2006-11-30 3:10 ` Linus Torvalds
2006-11-30 10:27 ` Johannes Schindelin
2006-11-30 11:09 ` Andreas Ericsson
2006-11-30 15:58 ` Linus Torvalds
2006-11-30 16:40 ` Theodore Tso
2006-11-30 17:13 ` Linus Torvalds
2006-11-30 17:37 ` Nicolas Pitre
2006-11-30 18:38 ` Carl Worth
2006-11-30 18:47 ` Jakub Narebski
2006-11-30 19:04 ` Carl Worth
2006-12-01 8:44 ` Andreas Ericsson
2006-12-01 9:31 ` Han-Wen Nienhuys
2006-11-30 18:51 ` Carl Worth
2006-11-30 19:55 ` Linus Torvalds
2006-11-30 20:47 ` Nicolas Pitre
2006-11-30 21:03 ` Linus Torvalds
2006-11-30 21:16 ` Jakub Narebski
2006-11-30 21:37 ` Carl Worth
2006-11-30 21:41 ` Michael K. Edwards
2006-11-30 21:50 ` Carl Worth
2006-11-30 21:58 ` Jakub Narebski
2006-11-30 22:26 ` Johannes Schindelin
2006-11-30 22:07 ` Josef Weidendorfer
2006-11-30 22:25 ` Johannes Schindelin
2006-11-30 22:37 ` Nicolas Pitre
2006-11-30 22:31 ` Nicolas Pitre
2006-11-30 22:47 ` Junio C Hamano
2006-12-01 8:34 ` Andy Parkins
2006-12-01 23:33 ` Alan Chandler
2006-11-30 21:19 ` Junio C Hamano
2006-11-30 22:21 ` Nicolas Pitre
2006-11-30 23:02 ` Junio C Hamano
2006-11-30 23:40 ` Linus Torvalds [this message]
2006-12-01 0:13 ` Carl Worth
2006-12-01 0:21 ` Linus Torvalds
2006-12-01 1:10 ` Carl Worth
2006-12-01 1:32 ` Linus Torvalds
2006-12-01 2:08 ` Carl Worth
2006-12-01 2:44 ` Linus Torvalds
2006-12-01 3:40 ` Carl Worth
2006-12-01 3:52 ` Michael K. Edwards
2006-12-01 0:24 ` Junio C Hamano
[not found] ` <Pine.LNX.4. 64.0611301520370.3513@woody.osdl.org>
2006-12-01 0:06 ` Jakub Narebski
2006-12-01 1:20 ` Nicolas Pitre
2006-12-01 8:59 ` Andreas Ericsson
2006-12-01 23:36 ` Alan Chandler
[not found] ` <7vac28h898.fsf@assigned-by-dhcp.cox.net>
2006-11-30 22:46 ` Nicolas Pitre
2006-11-30 22:55 ` Johannes Schindelin
2006-11-30 21:33 ` Robert Shearman
2006-11-30 21:41 ` Jakub Narebski
2006-12-01 18:27 ` Shawn Pearce
2006-12-02 7:48 ` Marco Costalba
2006-11-30 18:09 ` Carl Worth
2006-11-30 18:33 ` Linus Torvalds
2006-11-30 0:52 ` Daniel Barkalow
2006-11-30 12:23 ` Salikh Zakirov
2006-11-30 13:16 ` Jakub Narebski
2006-11-30 15:15 ` Seth Falcon
2006-11-30 15:50 ` Nguyen Thai Ngoc Duy
2006-11-30 16:03 ` Seth Falcon
2006-11-30 16:05 ` Jakub Narebski
2006-11-30 17:13 ` Andy Whitcroft
2006-11-28 7:00 ` [PATCH 1/2] git-commit: prepare to make '-a' behaviour the default Junio C Hamano
2006-11-28 7:00 ` [PATCH 2/2] git-commit: make '-a' " Junio C Hamano
2006-11-28 9:09 ` Jakub Narebski
2006-11-27 23:36 ` [PATCH/RFC] "init-db" can really be just "init" Johannes Schindelin
2006-11-28 10:45 ` Han-Wen Nienhuys
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.0611301520370.3513@woody.osdl.org \
--to=torvalds@osdl.org \
--cc=Johannes.Schindelin@gmx.de \
--cc=ae@op5.se \
--cc=cworth@cworth.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=nico@cam.org \
--cc=tytso@mit.edu \
/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).