Subject: Re: different git-merge behavior with regard to submodules in 1.6.2.4 vs. 1.6.2.1

From: Finn Arne Gangstad <[email-masked]>
Date: Tue, 28 Apr 2009 23:12:57 +0200

On Tue, Apr 28, 2009 at 11:29:49AM -0700, Junio C Hamano wrote:
> Tim Olsen <[email-masked]> writes:
> 
> > $ git merge origin/deployed
> > fatal: cannot read object 83055ffdddde60d41d9811aae77e78be50b329f8
> > 'rubydav': It is a submodule!
> >
> > Nothing in my history suggests that rubydav was at one point not a
> > submodule.
[...]
> > So then I downgraded to the last debian package of git which is 1.6.2.1.
> >  Now I get a result which is more approachable:
> >
> > $ git merge origin/deployed
> > Auto-merging rubydav
> > CONFLICT (submodule): Merge conflict in rubydav - needs
> > 167a344227c4745031d50a210869e6fb59a5ac03
> > Auto-merging server
> > CONFLICT (submodule): Merge conflict in server - needs
> > 82a74ae791c8563ca65f29187d2fe5ebfbc167ea
> > Automatic merge failed; fix conflicts and then commit the result.
> >
> > Both merges are from freshly checked out clones.
> >
> > Is this a bug in 1.6.2.4?  Please let me know what other information I
> > can provide to help debug the problem.
> 
> Thanks for a report.  I think the following commits are involved.
> 
>     39d8e27 simplify output of conflicting merge
>     0eb6574 update cache for conflicting submodule entries
>     f37ae35 add tests for merging with submodules
> 
> Clemens, these seem to be yours.  Thoughts?

The current error message is not an improvement I think, it should say
that merge does not support merging submodules, not complain about
being unable to read some object because it is a submodule.

I added the "CONFLICT (submodule) Merge conflict .. needs <SHA-1>"
messages when I tried to work with submodules a while (1-2 years?)
ago.  The intention was that you could enter the submodule(s), write
"git merge <SHA-1>", and resolve the conflict that way.

git is unfortunately not capable of merging submodules at all, so I
added these error messages to give me a hint about what I needed to do
in conflicting submodules to get something useful. I have used git a
lot more now, so maybe it is time to pick this up again and implement
proper recursive sub-module merging.

- Finn Arne