threads / discuss / 23379

git pull with "no common commits" : danger?

Subject: git pull with "no common commits" : danger?

## tl;dr

7 messages between Apr 8, 2010 and Apr 8, 2010.

replies: 6people: 4as markdown or json

Aghiles· Apr 8, 2010, 01:56 UTC · lore
Hello,

I mistakenly pulled a project into another project. I had the "warning: no common commits" but the pull did proceed. I am wondering if, from a usability point of view, it would be best to avoid doing so by default.

Thanks,
  -- aghiles
Michael J Gruber· Apr 8, 2010, 02:08 UTC · re: Aghiles · lore

Re: git pull with "no common commits" : danger?

Aghiles venit, vidit, dixit 08.04.2010 09:56:
Show 6 quoted lines
> Hello,
> 
> I mistakenly pulled a project into another project. I had the
> "warning: no common commits" but the pull did proceed.
> I am wondering if, from a usability point of view, it would be
> best to avoid doing so by default.
Puleeezze: No animals were harmed during the process, right? I mean, no
data loss, all you have to do is a git reset. Let's try and not make Git
into "Are you sure"dom.
Michael
Aghiles· Apr 8, 2010, 02:43 UTC · re: Michael J Gruber · lore

Re: git pull with "no common commits" : danger?

Show 11 quoted lines
> Aghiles venit, vidit, dixit 08.04.2010 09:56:
>> Hello,
>>
>> I mistakenly pulled a project into another project. I had the
>> "warning: no common commits" but the pull did proceed.
>> I am wondering if, from a usability point of view, it would be
>> best to avoid doing so by default.
>
> Puleeezze: No animals were harmed during the process, right? I mean, no
> data loss, all you have to do is a git reset. Let's try and not make Git
> into "Are you sure"dom.

How many times did you see that message? If you saw it, it was probably a mistake. I think that it is a safe bet to assume that whoever does that won't complain to type something like: git pull --no-common-commits-ok

I manage many git projects and this happens from time to time, mainly because of tiredness. I simply consider the proposed behaviour more natural.

Git is not the bare bone tool set anymore, it aspires into becoming a user friendly tool, usable by "the masses". And don't worry, following some simple usability rules won't make git less "cool".

Now, that was just a suggestion,
  -- aghiles
Jonathan Nieder· Apr 8, 2010, 05:44 UTC · re: Aghiles · lore

Re: git pull with "no common commits" : danger?

Hi,
Aghiles wrote:
> I mistakenly pulled a project into another project. I had the
> "warning: no common commits" but the pull did proceed.
First: you are aware that interrupting the pull will have no bad
side-effects, right?  So if the worry is lost time, then git is not
advertising its features well enough.

Because of this, if ‘git fetch’ starts refusing to fetch when there are no common commits, I will be unhappy, because it imposes hassle on the user for basically no benefit.

On the other hand, ‘git pull’ is a little different. The fetch has very little cost because it’s interruptible, but the merge could result in two unrelated pieces of history being merged, requiring the user to use ‘git reset --keep HEAD^’ to get back to the previous state. A more likely outcome is a merge conflict, requiring ‘git reset --merge’ to recover.

Can we make this less painful? Is it worth adding yet another option to ‘git pull’ to avoid this pain? I don’t know.

Regards, Jonathan

Aghiles· Apr 8, 2010, 19:55 UTC · re: Jonathan Nieder · lore

Re: git pull with "no common commits" : danger?

Jonathan Nieder <jrnieder@gmail.com> writes:
Show 12 quoted lines
>
> ...
>
> On the other hand, ‘git pull’ is a little different.  The fetch has
> very little cost because it’s interruptible, but the merge could
> result in two unrelated pieces of history being merged, requiring
> the user to use ‘git reset --keep HEAD^’ to get back to the
> previous state.  A more likely outcome is a merge conflict, requiring
> ‘git reset --merge’ to recover.
>
> Can we make this less painful?  Is it worth adding yet another option
> to ‘git pull’ to avoid this pain?  I don’t know.

That is exactly the case I was talking about. I never lost any data because of this and considering what Junio Hamano is saying I probably should just continue to do the 'git reset'.

  -- aghiles
Junio C Hamano· Apr 8, 2010, 06:20 UTC · re: Aghiles · lore

Re: git pull with "no common commits" : danger?

Aghiles <aghilesk@gmail.com> writes:
> I mistakenly pulled a project into another project. I had the
> "warning: no common commits" but the pull did proceed.
> I am wondering if, from a usability point of view, it would be
> best to avoid doing so by default.

Refusing this without an escape hatch would regress two minor but valid workflows.

 1. "a cross-project merge" like 5569bf9 (Do a cross-project merge of Paul
    Mackerras' gitk visualizer, 2005-06-22) aka "The coolest merge ever".
    Being able to do this kind of merge after the fact is the whole point
    of allowing merges between two histories with no common commits.
 2. A not so uncommon newbie mistake sequence:
    $ git init
    $ git pull $there
    instead of the usual
    $ git clone $there
    
    which was an actual complaint that led to the "merge into emptiness"
    behaviour of "git pull" in such a case added as a new feature.

If we were to forbid a "nothing in common" merge by default and add an option to explicitly allow it on demand, I would not be worried too much about the first use case. Anybody who runs a cross-project merge has already learned git well enough that having to add an extra option is not a problem.

But I would be unhappy if I have to be the one to hear complaints from newbies who are now forced to add an obscure option to his "git pull" in the second case.

So this is not so cut-and-dried from the usability point of view as you seem to think.

Aghiles· Apr 8, 2010, 19:46 UTC · re: Junio C Hamano · lore

Re: git pull with "no common commits" : danger?

Junio C Hamano <gitster@pobox.com> writes:
Show 9 quoted lines
>
> ...
>
> But I would be unhappy if I have to be the one to hear complaints from
> newbies who are now forced to add an obscure option to his "git pull" in
> the second case.
>
> So this is not so cut-and-dried from the usability point of view as you
> seem to think.

I understand your reasoning for the second case, and the init/pull sequence is something I used to do too. Thanks for the explanations.

Regarding this init/pull sequence: it might be nice to print something like:
  Merging with an empty tree,  'git clone' intended ?

I see more and more such messages when using various git commands, it helps a lot.

  -- aghiles

← back to recent threads