git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Merging submodules - best merge-base

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Mar 10, 2013, 17:09 UTC
Message-ID
<20130310170953.GA1248@sandbox-ub.fritz.box>
In-Reply-To
<513B7554.4020700@web.de>
On Sat, Mar 09, 2013 at 06:45:56PM +0100, Jens Lehmann wrote:
Show 37 quoted lines
> Am 07.03.2013 19:59, schrieb Heiko Voigt:
> > On Thu, Mar 07, 2013 at 10:49:09AM +0100, Daniel Bratell wrote:
> >> Den 2013-03-06 19:12:05 skrev Heiko Voigt <hvoigt@hvoigt.net>:
> >>> So to summarize what you are requesting: You want a submodule merge be
> >>> two way in the view of the superproject and calculate the merge base
> >>> in the submodule from the two commits that are going to be merged?
> >>>
> >>> It currently sounds logical but I have to think about it further and
> >>> whether that might break other use cases.
> >>
> >> Maybe both could be legal even. The current code can't be all wrong,
> >> and this case also seems to be straightforward.
> > 
> > Ok I have thought about it further and I did not come up with a simple
> > (and stable) enough strategy that would allow your use case to merge
> > cleanly without user interaction.
> > 
> > The problem is that your are actually doing a rewind from base to both
> > tips. The fact that a rewind is there makes git suspicious and we simply
> > give up. IMO, thats the right thing to do in such a situation.
> > 
> > What should a merge strategy do? It infers from two changes what the
> > final intention might be. For submodules we can do that when the changes
> > on both sides point forward. Since thats the typical progress of
> > development. If not there is some reason for it we do not know about. So
> > the merge gives up.
> > 
> > Please see this post about why we need to forbid rewinds from the
> > initial design discussion:
> > 
> > http://article.gmane.org/gmane.comp.version-control.git/149003
> 
> I agree that rewinds are a very good reason not merge two branches using
> a fast-forward strategy, but I believe Daniel's use case is a (and maybe
> the only) valid exception to that rule: both branches contain *exactly*
> the same rewind. In that case I don't see any problem to just do a fast
> forward to S21, as both agree on the commits to rewind.

That is different than using the merge base of the two commits needing merge. I agree that rewinding to exactly the same commits is probably a valid exception. Will have a look into extending the submodule merge strategy to include this case.

Cheers Heiko
Previous: Jens LehmannNext: Heiko Voigt
Message 6 of 7 in “Merging submodules - best merge-base”
  1. Daniel BratellFeb 25, 2013
  2. Heiko VoigtMar 6, 2013
  3. Daniel BratellMar 7, 2013
  4. Heiko VoigtMar 7, 2013
  5. Jens LehmannMar 9, 2013
  6. Heiko VoigtMar 10, 2013
  7. submodule: allow common rewind when merging submodulesHeiko Voigt, Mar 11, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.