All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Branchaud <marcnarc@xiplink.com>
To: Junio C Hamano <gitster@pobox.com>,
	Marat Radchenko <marat@slonopotamus.org>
Cc: git@vger.kernel.org
Subject: Pull is Evil (was: Re: A failing attempt to use Git in a centralized environment)
Date: Wed, 30 Apr 2014 10:21:30 -0400	[thread overview]
Message-ID: <536106EA.5090204@xiplink.com> (raw)
In-Reply-To: <xmqqoazlqot4.fsf@gitster.dls.corp.google.com>

On 14-04-28 02:41 PM, Junio C Hamano wrote:
> Marat Radchenko <marat@slonopotamus.org> writes:
> 
>> Problem #1: TortoiseGit GUI windows for common tasks have a heck
>> lots of controls that a common Git user will never need.
> 
> Do people around TortoiseGit lurk on this list?  Otherwise this may
> not be something we can help you with here.
> 
>> Problem #2 occured the first day we started using Git on real
>> project. It is explained in detail in older post to Git ML [3]. I
>> call it "swapped/reverse merge problem".
>>
>> In short:
>> 1. Hack, hack, hack
>> 2. Commit
>> 3. Push, woops, reject (non-ff)
>> 4. Pull
>> 5. Push
>>
>> The root of evil is step #4 that creates a merge commit with
>> "swapped" parents.
> 
> Yes, this is a real issue, and I do not mind seeing a patch to
> improve the situation (there may be different approaches, and one
> random approach somebody takes may not necessarily be a good way to
> improve the situation though).
> 
>  - Perhaps by allowing an option to tell the "pull" at the fourth
>    step to record swapped parents in the merge?
> 
>  - Perhaps in step #3, stop suggesting to "pull first" and instead
>    tell them to "fetch upstream, rebase your work on it and then
>    push"?

This approach would be my preference.

But I'm definitely biased because I think pull is pretty much broken:

* New users are encouraged to use pull, but all too often the default
fetch-then-merge behaviour doesn't match their expectations and they end up
starting threads like this one on the mailing list.

* If we change pull's default behaviour, we'll just be shifting the
mismatched expectations onto the other half of the new users who would be
happy with fetch-then-merge.

* I'm not sure why new users are taught to use pull.  I suspect it's because
it tries to hide the idea of local-vs-remote branches, and people writing git
tutorials don't want to overwhelm new users with what seems to be an internal
detail.  But these notions are really fundamental to using git effectively,
and I think pull does everyone a disservice by trying to gloss them over.

Anyway, rather than ranting on I'll just suggest that there's not enough
commonality between the ways people use git to make it worthwhile trying to
teach pull how to deal with a significant number of them.  I think the pull
command should be deprecated and quietly retired as a failed experiment.

		M.

  reply	other threads:[~2014-04-30 14:26 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-28  6:29 A failing attempt to use Git in a centralized environment Marat Radchenko
2014-04-28 18:41 ` Junio C Hamano
2014-04-30 14:21   ` Marc Branchaud [this message]
2014-04-30 14:55     ` Pull is Evil (was: Re: A failing attempt to use Git in a centralized environment) Junio C Hamano
2014-04-30 19:45       ` Pull is Evil Marc Branchaud
2014-04-30 20:01         ` Jonathan Nieder
2014-04-30 20:01         ` Junio C Hamano
2014-04-30 21:48           ` Marc Branchaud
2014-05-02  7:40           ` Andreas Krey
2014-05-02  8:46             ` David Kastrup
2014-05-03  6:17               ` Andreas Krey
2014-05-03  6:55                 ` David Kastrup
2014-04-30 20:14         ` Felipe Contreras
2014-04-30 22:06           ` Marc Branchaud
2014-04-30 22:25             ` Felipe Contreras
2014-05-01  9:46               ` brian m. carlson
2014-05-01 10:48                 ` Felipe Contreras
2014-05-01 15:16                   ` Junio C Hamano
2014-05-01 19:16                     ` Felipe Contreras
2014-05-01 19:48                       ` W. Trevor King
2014-05-01 20:07                         ` W. Trevor King
2014-05-01 23:25                           ` Felipe Contreras
2014-05-02  0:02                             ` W. Trevor King
2014-05-02  0:37                               ` Felipe Contreras
2014-05-02  1:10                                 ` W. Trevor King
2014-05-02  1:14                                   ` Felipe Contreras
2014-05-02 14:54                                     ` W. Trevor King
2014-05-02 18:55                                       ` Felipe Contreras
2014-05-02 19:07                                         ` W. Trevor King
2014-05-02 19:10                                           ` David Kastrup
2014-05-02 19:13                                           ` Felipe Contreras
2014-05-02 19:46                                             ` W. Trevor King
2014-05-02 20:34                                               ` Felipe Contreras
2014-05-02 21:13                                                 ` W. Trevor King
2014-05-02 21:18                                                   ` Felipe Contreras
2014-05-02 22:01                                                     ` pull.prompt or other way to slow/disable 'git pull' (was: Pull is Evil) W. Trevor King
2014-05-02 22:20                                                       ` Felipe Contreras
2014-05-03  0:05                                                         ` pull.prompt or other way to slow/disable 'git pull' W. Trevor King
2014-05-03  9:50                                                           ` Felipe Contreras
2014-05-04 18:51                                                             ` W. Trevor King
2014-05-04 20:54                                                               ` Felipe Contreras
2014-05-01 23:20                         ` Re: Pull is Evil Felipe Contreras
2014-05-01 15:20                 ` Marc Branchaud
2014-05-01 17:56                   ` W. Trevor King
2014-05-01 18:04                     ` Marc Branchaud
2014-05-01 18:30                       ` W. Trevor King
2014-05-01 20:21                         ` Marc Branchaud
2014-05-01 23:28                           ` Felipe Contreras
2014-05-02  7:16                           ` Andreas Krey
2014-05-02  8:14                             ` Felipe Contreras
2014-05-02 19:29                           ` Junio C Hamano
2014-05-02 19:53                             ` Junio C Hamano
2014-05-01 23:45                       ` brian m. carlson
2014-05-01 23:39                         ` Felipe Contreras
2014-05-01 19:22                   ` Felipe Contreras
2014-05-01 19:43                     ` Marc Branchaud
2014-05-01 19:27                 ` Felipe Contreras
2014-05-01 21:06         ` Philip Oakley
2014-05-01 21:16           ` Philip Oakley
2014-05-01 23:34           ` Felipe Contreras
2014-05-01 23:59             ` W. Trevor King
2014-05-02  0:31               ` Felipe Contreras
2014-04-30 16:47     ` Pull is Evil (was: Re: A failing attempt to use Git in a centralized environment) Felipe Contreras
2014-04-30 17:09       ` Pull is Evil Matthieu Moy
2014-04-30 18:31         ` Felipe Contreras
2014-04-30 19:10           ` Junio C Hamano
2014-04-30 19:32             ` Felipe Contreras
2014-04-30 19:53               ` Junio C Hamano
2014-04-30 20:11                 ` Felipe Contreras
2014-04-30 16:12 ` A failing attempt to use Git in a centralized environment Stepan Kasal
2014-04-30 17:15 ` Geert Bosch
2014-05-04  8:58   ` John Szakmeister
2014-05-02 20:56 ` Max Kirillov

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=536106EA.5090204@xiplink.com \
    --to=marcnarc@xiplink.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=marat@slonopotamus.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.