From: Junio C Hamano <gitster@pobox.com>
To: "Wesley J. Landaker" <wjl@icecavern.net>
Cc: "Thomas Rast" <trast@student.ethz.ch>,
git@vger.kernel.org, "Björn Steinbrink" <B.Steinbrink@gmx.de>
Subject: Re: [RFC] pull/fetch rename
Date: Tue, 20 Oct 2009 14:46:30 -0700 [thread overview]
Message-ID: <7vpr8hlow9.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <200910201359.30880.wjl@icecavern.net> (Wesley J. Landaker's message of "Tue\, 20 Oct 2009 13\:59\:30 -0600")
"Wesley J. Landaker" <wjl@icecavern.net> writes:
> On Tuesday 20 October 2009 11:47:45 Thomas Rast wrote:
>> Especially on IRC, we see many people who are some combination of
>> misunderstanding, misusing or overusing git-pull. I figure this is
>> the result of several factors, notably
>>
>> a) pull/push are not symmetric,
>>
>> b) guides/tutorials recommend pull for situations where they
>> shouldn't,
>>
>> c) people blindly fire commands at git.
>
> This may be minor, but also:
>
> d) in mercurial, pull/push are symmetric, but fetch means pull+merge
>
>> As you probably guessed by now, here is an idea for a very aggressive
>> transition plan to address (a) in four phases:
>
> I would love to see this change, not because I get confused about pull/fetch
> (it honestly only took a few days to get used to), but because having
> push/pull be symmetric just is so much more conceptually pure / easier
> explain to co-workers / separation between orthogonal operations /
> satisfying to my inner perfectionist / etc.
Is making "pull" a symmetric opposite of "push" the ultimate goal?
Or is making (or rather "keeping") "pull" useful more important?
It is not even an attitude that values philosophy over utility.
Fundamentally, pull and push cannot be symmetric because nobody is sitting
in front of the repository you are pushing into (that is what a "push" is;
you push from outside the repository---otherwise you would be "pull"ing
from inside it in the other direction), but you know you are sitting in
the repository, ready to resolve potential conflicts, when you say "pull".
Your elaborate scheme to make "pull" into "fetch" and to force everybody
to set a configuration variable to make it "pull" again sounds like a
mindless mental masturbation to me. People who leave "pull.merge = no"
will always have to say "pull --merge" or "pull --rebase", so you cannot
even argue you are not forcing but giving them a choice.
And you are doing this for what gain? The only thing I can think of is
"People who deliberately set 'pull.merge = yes' can no longer blame us for
pull not being the opposite of push." I do not consider it as a gain.
I do not buy "People who set 'pull.merge = yes' now understand why pull
touches their work tree, because they did it themselves" either. People
blindly copy other people's configuration from random web pages without
understanding. Besides, the next thing they will ask is "Why is there
pull.merge but no push.merge? Wasn't push an opposite of pull?" and you
are back to square one.
I would be much more sympathetic if the suggested approach were to make
"push" more symmetric to "pull", or at least attempt to allow it to be, by
giving it an option to update the associated work tree when it can [*1*].
But I do not know what to say when people say "push cannot update the work
tree, so let's make pull not to update the work tree by default---it will
make it much less useful so we will fix that regression with yet another
configuration option". It's not even funny.
[Footnote]
*1* Obviously you cannot do this most of the time _if_ the work tree has
an interactive user sitting in front of it, but in a repository that never
allows a non-ff push, with a work tree that is never updated except by
such a push, can reasonably be maintained to give an illusion of push
being an opposite of pull by fast forwarding the work tree when the push
updates HEAD.
next prev parent reply other threads:[~2009-10-20 21:46 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-20 17:47 [RFC] pull/fetch rename Thomas Rast
2009-10-20 19:59 ` Wesley J. Landaker
2009-10-20 21:46 ` Junio C Hamano [this message]
2009-10-20 22:53 ` Thomas Rast
2009-10-20 23:11 ` Junio C Hamano
2009-10-21 2:01 ` Wesley J. Landaker
2009-10-20 23:16 ` Junio C Hamano
2009-10-20 21:42 ` Nanako Shiraishi
2009-10-20 22:41 ` Thomas Rast
2009-10-20 23:56 ` Daniel Barkalow
2009-10-21 3:06 ` Björn Steinbrink
2009-10-21 4:22 ` Daniel Barkalow
2009-10-21 11:57 ` Björn Steinbrink
2009-10-21 17:12 ` Daniel Barkalow
2009-10-21 6:22 ` Junio C Hamano
2009-10-21 17:19 ` Clemens Buchacher
2009-10-21 17:21 ` [PATCH] modernize fetch/merge/pull examples Clemens Buchacher
2009-10-21 21:38 ` Junio C Hamano
2009-10-21 21:41 ` [RFC/PATCH] git-merge: forbid fast-forward and up-to-date when --no-commit is given Junio C Hamano
2009-10-22 10:21 ` Nanako Shiraishi
2009-10-22 22:26 ` Junio C Hamano
2009-10-21 21:46 ` [PATCH] git-merge: imply --no-ff " Junio C Hamano
2009-10-22 6:35 ` Clemens Buchacher
2009-10-22 8:51 ` [PATCH] modernize fetch/merge/pull examples Thomas Rast
2009-10-22 9:48 ` [RFC] pull/fetch rename Thomas Rast
2009-10-21 6:30 ` Mike Hommey
2009-10-21 6:33 ` Junio C Hamano
2009-10-21 7:06 ` Mike Hommey
2009-10-21 7:22 ` Junio C Hamano
2009-10-21 7:45 ` Jeff King
2009-10-21 7:47 ` Jeff King
2009-10-24 6:30 ` Junio C Hamano
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=7vpr8hlow9.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=B.Steinbrink@gmx.de \
--cc=git@vger.kernel.org \
--cc=trast@student.ethz.ch \
--cc=wjl@icecavern.net \
/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).