From: Jakub Narebski <jnareb@gmail.com>
To: Scott Chacon <schacon@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Felipe Contreras <felipe.contreras@gmail.com>,
Theodore Tso <tytso@mit.edu>, Elijah Newren <newren@gmail.com>,
git list <git@vger.kernel.org>
Subject: Re: EasyGit Integration
Date: Wed, 10 Jun 2009 17:15:53 -0700 (PDT) [thread overview]
Message-ID: <m38wjz4odq.fsf@localhost.localdomain> (raw)
In-Reply-To: <d411cc4a0906101657v601aba20q5708e114fc7d4bca@mail.gmail.com>
Scott Chacon <schacon@gmail.com> writes:
> On Wed, Jun 10, 2009 at 4:04 PM, Linus
> Torvalds<torvalds@linux-foundation.org> wrote:
> >
> > IOW, both would be "if you give it a commit, it acts at a commit level",
> > and "if you give it pathnames, it acts on a pathname level".
> >
> > That is totally obvious, and not in the least confusing. They are two
> > different things, but at the same time, there is no question about which
> > is which.
> >
> >> In my mind these are 2 completely different commands.
> >
> > They are two different things, but they both make sense within the
> > _context_.
> >
> > Only earthworms and FOX news have no concept of "in context". So it does
> > make sense to say "git checkout filename" (and expect it to check out that
> > _filename_ - surprise surprise), and also say "git checkout branch" (and
> > expect it to check out that branch - again, big surprise).
>
> The problem here is that you're using 'check out' in your descriptions
> of the expectations to mean two different things. One means 'switch
> branches' and the other means 'extract content'.
In both cases it means getting something out of repository (checking
out) and into working area.
> If you provide both
> a branch and a filename, what happens? It still means 'extract
> content'.
If there is a filename, then it is checking out a file or files.
If there is no filename, then it is checking out a commit.
Checking out commit means switching branch if it is branch name,
detaching HEAD if it is not branch name.
When you are checking out a file or set of files, you cannot change
branch; commit is state of a whole project, not of individual files.
> Not everyone assumes that 'checkout' can or should mean
> both of these things depending on context. I mean honestly, the
> 'context' of 'git checkout branch' and 'git checkout branch file'
> doesn't really look that much different, but the command completely
> switches semantics from 'switch active branch' to 'extract content'.
Note that "git checkout <commit-ish>" was first (well, it was only
"git checkout <branch>" then.
> It's not that the command assumes some subtle defaults depending on
> what arguments you give it - it's that it completely changes the
> nature of what it does depending on the arguments. It only makes
> sense to us because we specifically learned that it did this, not
> because it makes sense intuitively. Hell, _neither_ of these meanings
> are what SVN-inbound users are used to, which they map to 'extract
> content _from a remote server_'.
So perhaps _understanding_ those commands require understanding git
model. I don't see how this is a bad thing. You would have to learn
it anyway... ;-)
[...]
> I understand that clarity and ease of use is not really of primary
> importance to this project. However, is it not slightly ironic that
> the Git project is so obsessed with squeezing 5% or 10% of raw speed
> out of each command, yet feels that the onus should be on each user to
> study for hours to memorize a bunch of arbitrary idiosyncrasies of the
> tool? Can we not obsess a little about flattening the learning curve
> 10% as well (possibly at the slight expense of command normalization
> or verb bloat)?
The problem is bakcward compatibility and the fact that git was not as
much as designed, as it has grown. Which is very good solution for
getting good feature set, but not so much for an UI...
--
Jakub Narebski
Poland
ShadeHawk on #git
next prev parent reply other threads:[~2009-06-11 0:16 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-09 18:59 EasyGit Integration Scott Chacon
2009-06-09 19:43 ` Nicolas Pitre
2009-06-09 19:52 ` Avery Pennarun
2009-06-09 20:37 ` Björn Steinbrink
2009-06-09 20:42 ` Avery Pennarun
2009-06-10 12:13 ` Björn Steinbrink
2009-06-09 20:49 ` Elijah Newren
2009-06-10 1:09 ` Miles Bader
2009-06-09 20:12 ` Björn Steinbrink
2009-06-09 20:40 ` Elijah Newren
2009-06-09 21:18 ` Björn Steinbrink
2009-06-09 21:27 ` Björn Steinbrink
2009-06-09 21:36 ` Junio C Hamano
2009-06-09 21:48 ` Elijah Newren
2009-06-09 22:00 ` Elijah Newren
2009-06-10 12:52 ` Matthieu Moy
2009-06-09 22:14 ` Linus Torvalds
2009-06-09 22:30 ` Elijah Newren
2009-06-09 22:40 ` Linus Torvalds
2009-06-10 0:40 ` Mark Lodato
2009-06-10 3:11 ` Miles Bader
2009-06-10 3:32 ` Theodore Tso
2009-06-10 4:03 ` Linus Torvalds
2009-06-10 22:31 ` Felipe Contreras
2009-06-10 23:04 ` Linus Torvalds
2009-06-10 23:57 ` Scott Chacon
2009-06-11 0:15 ` Jakub Narebski [this message]
2009-06-11 0:30 ` Felipe Contreras
2009-06-11 0:42 ` Jakub Narebski
2009-06-12 20:57 ` Felipe Contreras
2009-06-12 21:21 ` Jakub Narebski
2009-06-12 21:48 ` Felipe Contreras
2009-06-12 22:05 ` Jakub Narebski
2009-06-12 22:30 ` Felipe Contreras
2009-06-13 1:24 ` Björn Steinbrink
2009-06-11 0:18 ` Felipe Contreras
2009-06-10 4:20 ` Elijah Newren
2009-06-10 14:40 ` Matthieu Moy
2009-06-10 1:25 ` Sam Vilain
2009-06-10 1:59 ` Linus Torvalds
2009-06-10 2:18 ` Junio C Hamano
2009-06-10 2:52 ` Sam Vilain
2009-06-10 6:43 ` Jakub Narebski
2009-06-10 3:27 ` Nicolas Pitre
2009-06-10 20:47 ` Junio C Hamano
2009-06-10 22:28 ` Elijah Newren
2009-06-10 16:48 ` Scott Chacon
2009-06-10 22:15 ` Felipe Contreras
2009-06-10 22:04 ` Felipe Contreras
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=m38wjz4odq.fsf@localhost.localdomain \
--to=jnareb@gmail.com \
--cc=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=newren@gmail.com \
--cc=schacon@gmail.com \
--cc=torvalds@linux-foundation.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).