git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Theodore Tso <tytso@mit.edu>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Johannes Sixt <j.sixt@viscovery.net>,
	Boaz Harrosh <bharrosh@panasas.com>,
	Junio C Hamano <gitster@pobox.com>,
	Steven Walter <stevenrwalter@gmail.com>,
	git@vger.kernel.org, jeske@google.com
Subject: Re: [PATCH] cmd_reset: don't trash uncommitted changes unless told to
Date: Wed, 25 Jun 2008 09:51:00 -0400	[thread overview]
Message-ID: <20080625135100.GF20361@mit.edu> (raw)
In-Reply-To: <alpine.DEB.1.00.0806251334060.9925@racer>

On Wed, Jun 25, 2008 at 01:38:30PM +0100, Johannes Schindelin wrote:
> > $ git config alias.switch checkout
> > $ git switch topic
> > 
> > Hm? Notice that the command even reports back:
> > 
> > Switched to branch "topic"
> > ^^^^^^^^
> 
> Nice.  And now my friend says "why does this braindamaged Git not have 
> that command by _default_?  Hmm?  It is _just as braindamaged_ as CVS!"

I agree that "git switch" would be a great alias to have for "git
checkout".  It is much more intuitive; traditionally, the issue has
always been that it's not so intuitive for existing git users, who
have gotten used to the existing quirks, and it people won't want to
break things for the existing users.  (There are analogues to this is
the English language --- why is it that "though", "through", "plough",
"cough", "hough", or "tough" don't rhyme[1]?)

[1]  http://www.mipmip.org/tidbits/pronunciation.shtml

> And I would not have anything reasonable for my defense.

Neither does the English language; but just try changing it!
"Historical reasons" is for better or for worse a very strong
argument.

> Because Git _should_ have an intuitive command to switch branches by 
> default.  "git checkout" just does not fly, especially given that it can 
> be used to revert single files (which "git revert" should know how to, but 
> does not, see 
> http://mid.gmane.org/7vlk8wshii.fsf@gitster.siamese.dyndns.org).

I used to argue for this, but gave up, because no one seemed to agree
with me.  So now I just have the following in
/home/tytso/bin/git-revert-file and I am very happy:

#!/bin/sh
#
prefix=$(git rev-parse --show-prefix)

for i in $*
do
        git show HEAD:$prefix$i > $i
done

It makes "git revert-file <file1> <file2> <file3>" do the right thing.
Yeah, it doesn't do enough error checking, and it doesn't handle
filenames with spaces, and there are probably other corner cases it
doesn't get right, but it's been enough to keep me happy.  :-)

If someone wants to take the above and turn it into git-rename.sh and
try to submit it to the git tree --- they are welcome to do it.  Or
heck, if Junio is willing to commit that it that with the appropriate
cleanups it would be accepted, I'd be willing to do the work.  I just
got tired of arguing that the concept of "git revert-file" was in fact
useful, and so its existence could be justified, which IIRC was
disputed the last time we went around this topic.  I know I wanted it,
though, so I implemented it for myself.

> I _do_ see a cause of confusion here, _even_ if I know Git pretty well.

As do I....  I think the expert git users have just leared how to work
around it, either by learning the non-linearities in the UI, or by our
own private hacks or aliases.

						- Ted

  reply	other threads:[~2008-06-25 13:52 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <jeske@willow=01l5V7waFEDjChmh>
     [not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V>
2008-06-24  1:47   ` why is git destructive by default? (i suggest it not be!) David Jeske
2008-06-24 17:11     ` Boaz Harrosh
2008-06-24 17:19       ` Boaz Harrosh
2008-06-24 19:08         ` Jakub Narebski
     [not found]           ` <willow-jeske-01l5PFjPFEDjCfzf-01l5zrLdFEDjCV3U>
2008-06-24 20:04             ` David Jeske
2008-06-24 20:04             ` David Jeske
2008-06-24 21:42               ` Brandon Casey
     [not found]                 ` <willow-jeske-01l5PFjPFEDjCfzf-01l63P33FEDjCVQ0>
2008-06-24 22:13                   ` David Jeske
2008-06-24 22:13                   ` David Jeske
2008-06-24 22:54                 ` Theodore Tso
2008-06-24 23:07                   ` Junio C Hamano
2008-06-25  2:26                     ` Theodore Tso
2008-06-25  8:58                       ` Jakub Narebski
2008-06-25  9:14                         ` Junio C Hamano
2008-06-26 15:13                       ` Brandon Casey
2008-06-24 22:21               ` Steven Walter
2008-06-24 22:21                 ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Steven Walter
2008-06-24 22:31                   ` Junio C Hamano
2008-06-25  9:12                     ` Boaz Harrosh
2008-06-25  9:23                       ` Junio C Hamano
2008-06-25  9:59                         ` Boaz Harrosh
2008-06-25 10:16                       ` Johannes Schindelin
2008-06-25 10:24                         ` Matthias Kestenholz
2008-06-25 10:46                           ` Anton Gladkov
2008-06-25 12:33                             ` Johannes Schindelin
2008-06-25 14:49                             ` [PATCH] cmd_reset: don't trash uncommitted changes unless toldto Craig L. Ching
2008-06-25 15:18                               ` Anton Gladkov
2008-06-25 10:41                         ` [PATCH] cmd_reset: don't trash uncommitted changes unless told to Johannes Sixt
2008-06-25 12:38                           ` Johannes Schindelin
2008-06-25 13:51                             ` Theodore Tso [this message]
2008-06-25 17:22                               ` Junio C Hamano
2008-06-25 19:50                                 ` Theodore Tso
2008-06-25 20:04                                   ` Avery Pennarun
2008-06-25 20:11                                     ` Junio C Hamano
2008-06-25 20:22                                       ` Avery Pennarun
2008-06-25 20:48                                         ` Junio C Hamano
2008-06-25 20:58                                           ` Avery Pennarun
2008-06-25 21:24                                             ` Re* " Junio C Hamano
2008-06-25 21:34                                               ` Junio C Hamano
2008-06-26  1:26                                               ` Junio C Hamano
2008-06-25 20:37                                       ` Steven Walter
2008-06-25 20:38                                     ` Theodore Tso
2008-06-25 20:50                                       ` Junio C Hamano
2008-06-25 21:05                                         ` Theodore Tso
2008-06-25 21:35                                           ` Junio C Hamano
2008-06-26  5:16                                             ` Junio C Hamano
     [not found]                                             ` <20080627193325.6117@nanako3.lavabit.com>
2008-06-27 22:11                                               ` Junio C Hamano
2008-06-28  0:06                                                 ` しらいしななこ
2008-06-28 22:32                                                   ` しらいしななこ
2008-06-29  8:56                                                     ` Junio C Hamano
2008-06-25 22:44                                       ` Petr Baudis
2008-06-26  1:59                                         ` Johannes Schindelin
2008-06-25 20:09                                   ` Junio C Hamano
2008-06-26 11:55                                 ` Björn Steinbrink
2008-06-26 12:07                                   ` Johannes Schindelin
2008-06-26 12:35                                     ` Björn Steinbrink
2008-06-26 15:55                                     ` Avery Pennarun
2008-06-26 17:49                                       ` Johannes Schindelin
2008-06-26 12:01                               ` Matthieu Moy
2008-06-26 12:09                                 ` Johannes Schindelin
2008-06-26 12:23                                   ` David Kastrup
2008-06-25 13:19                       ` Ian Hilt
2008-06-26  5:31                       ` Andreas Ericsson
2008-06-26 16:15                         ` Jon Loeliger
2008-06-25  5:29                   ` Johannes Gilger
2008-06-25  8:57           ` why is git destructive by default? (i suggest it not be!) Boaz Harrosh
2008-06-24 18:18       ` Brandon Casey
2008-06-24  1:47   ` David Jeske
     [not found] ` <willow-jeske-01l5PFjPFEDjCfzf-01l5V7wbFEDjCX7V@videotron.ca>
     [not found]   ` <willow-jeske-01l5cKsCFEDjC=91MX@videotron.ca>
2008-06-24  2:17     ` Nicolas Pitre
     [not found]       ` <willow-jeske-01l5PFjPFEDjCfzf-01l5ciVtFEDjCaD9>
2008-06-24  3:18         ` David Jeske
2008-06-24  8:14           ` Lea Wiemann
2008-06-24  3:18         ` David Jeske
     [not found]       ` <willow-jeske-01l5PFjPFEDjCfzf-01l5ciVtFEDjCaD9@videotron.ca>
     [not found]         ` <willow-jeske-01l5e9cgFEDjCh3F@videotron.ca>
2008-06-24  4:03           ` Nicolas Pitre
     [not found]             ` <willow-jeske-01l5PFjPFEDjCfzf-01l5fAcTFEDjCWA4>
2008-06-24  4:40               ` David Jeske
2008-06-24  5:24                 ` Jan Krüger
2008-06-24  4:40               ` David Jeske
     [not found]             ` <1978205964779154253@unknownmsgid>
2008-06-24  5:20               ` Avery Pennarun
     [not found]                 ` <willow-jeske-01l5PFjPFEDjCfzf-01l5gtQ7FEDjCWCC>
2008-06-24  6:35                   ` David Jeske
2008-06-24  7:24                     ` Jeff King
     [not found]                       ` <willow-jeske-01l5PFjPFEDjCfzf-01l5jmMuFEDjChvB>
2008-06-24  7:31                         ` David Jeske
2008-06-24  8:16                           ` Jeff King
     [not found]                             ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kv6TFEDjCj8S>
2008-06-24  8:30                               ` David Jeske
2008-06-24  8:30                               ` David Jeske
2008-06-24  9:39                                 ` Jakub Narebski
     [not found]                             ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kv6TFEDjCj8S@brm-avmta-1.central.sun.com>
     [not found]                               ` <willow-jeske-01l5lTEoFEDjCVta@brm-avmta-1.central.sun.com>
2008-06-24 10:01                                 ` Fedor Sergeev
2008-06-24 10:24                                   ` David Jeske
2008-06-24 13:13                                     ` Theodore Tso
2008-06-24  7:31                         ` David Jeske
2008-06-24  6:35                   ` David Jeske
2008-06-24  7:54                 ` Jakub Narebski
     [not found]                   ` <willow-jeske-01l5PFjPFEDjCfzf-01l5kQf4FEDjCXUa>
2008-06-24  8:08                     ` David Jeske
2008-06-24 11:22                       ` Jakub Narebski
     [not found]                         ` <willow-jeske-01l5PFjPFEDjCfzf-01l5p7eVFEDjCZRD>
2008-06-24 11:29                           ` David Jeske
2008-06-24 12:21                             ` Jakub Narebski
2008-06-24 11:29                           ` David Jeske
2008-06-24 12:19                             ` Rogan Dawes
2008-06-24 12:35                               ` Johannes Gilger
2008-06-24 12:46                                 ` Rogan Dawes
2008-06-24 12:13                         ` Jakub Narebski
2008-06-24  8:08                     ` David Jeske

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=20080625135100.GF20361@mit.edu \
    --to=tytso@mit.edu \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=bharrosh@panasas.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j.sixt@viscovery.net \
    --cc=jeske@google.com \
    --cc=stevenrwalter@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).