Subject: Re: Strange merge failure (would be overwritten by merge / cannot merge)

From: David Aguilar <[email-masked]>
Date: Fri, 4 Sep 2009 16:45:53 -0700

On Fri, Sep 04, 2009 at 10:28:36PM +0200, Christoph Haas wrote:
> 
> Now I imported a new upstream version into the upstream branch. And then
> tried to merge the 'upstream' branch into the 'master' branch to work on
> it. And suddenly I get this error:
> 
>    error: Entry 'cream-abbr-eng.vim' would be overwritten by merge.
>    Cannot merge.
> 
> To reproduce my problem:
> 
>   $> git clone git://git.workaround.org/cream
>   $> cd cream
>   $> git merge origin/upstream
>   error: Entry 'cream-abbr-eng.vim' would be overwritten by merge.
>   Cannot merge.
>   fatal: merging of trees 70008c82f82a7985531aa2d039c03fdf944ea267 and
>   78d3a35e300434d6369424dd873bb587beacfaa4 failed

Very odd indeed!

$ git version
git version 1.6.4.2.264.g79b4f

I was able to workaround it:

$ rm *
$ git add -u
$ git merge origin/upstream

I've never run into this before.
I think it has to do with all the renamed files.
It looks like you're running into ain unfortunate edge case.

The merge-base of both branches (the initial commit) has all
files underneath a cream/ directory.

Both descendants (upstream and master) moved files up to the
root.  So when you go to merge those histories the merge driver
gets confused.

What happened in master?    cream/A -> A
What happened in upstream?  cream/A -> A

That seems like an edge case that might need some attention.

Anyways, once you do the workaround merge it'll settle
itself out and won't happen to you again since the merge will
resolve it for all your future commits (future merges will
have a new, rename-safe merge base).

Does anyone else on the list have any insights?

-- 
		David