On Wed, 15 Nov 2006, Linus Torvalds wrote:
On Wed, 15 Nov 2006, Nicolas Pitre wrote:
quoted
I think "fetch" is sane. Its only problem is a missing symetrical
counterpart verb, like "get" and "put".
If you're a dog owner, the obvious counterpart for "fetch" is "throw" ;)
Yeah. You could always throw a branch to your dog.
Or maybe we should introduce the concept of "bones" to GIT in place of
branches? ;-)
I think "get" and "put" would be bad, just because of confusion with
"sccs get" (ie it has that "get this file" connotations).
Has SCCS really had a similar level of influence than BK or CVS in that
matter?
Maybe "fetch" and "push" aren't totally diametrically opposite, but
really, I don't think they are that hard to understand either. We do have
the BK legacy of "pull" implying a merge, and that's fairly fundamental.
It's also true that in a lot of usage schenarios, what people actually
_use_ is "pull" and "push", and no, they aren't mirror images (since push
will _not_ do the merge), but at the same time, from a _usage_ standpoint
they really _are_ each others opposites.
The problem is the "usage standpoint" distinction that has to be made.
Exactly because in GIT it is a bit distorted from what most people
expect from other standpoints.
You "pull" to get other peoples data into your branch (and once you've
internalized local branches and the merge thing, you know what this
means), and you "push" to push your changes out. It really _is_ the usage
schenario, and using "opposite" words really _does_ make sense.
But that's exactly why newbies have problems. Instead of simply
understanding the bare operation (fetch data in a branch _then_ merge
it) they sort of need to abstract the concept of branch away because a
"pull" does it all automagically. Which is fine as long as you're
willing to ignore branch concepts altogether. But once branches are
back in the picture for more involved operations then the "pull" word
simply feels odd. Even more so with the local merge syntax.
When I say to someone "just merge branch weezee with your current
branch" the most intuitive command would be:
git merge weezee
But because "pull" mixes two concepts together this makes the thing more
esoteric. Unless, of course, you get used to the mental model you
outlined above, but IMHO simply needing a mental model to explain the
tool is a sign that something is mapped wrong.