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

Re: [GSoC][RFC PATCH] git-merge.adoc: detail submodule merge

From
Elijah Newren <newren@gmail.com>
Date
Feb 18, 2025, 21:58 UTC
Message-ID
<CABPp-BHvutRL80QiTYx6gJbYiATOD32DrvXgQQtEy=u5oUZ9Zg@mail.gmail.com>
In-Reply-To
<EE88CF05-9120-4CAB-A097-84CC5EA2FACE@gmail.com>

On Tue, Feb 18, 2025 at 10:55 AM Lucas Oshiro <lucasseikioshiro@gmail.com> wrote:

Show 35 quoted lines
>
> > It may be worth referencing the commit(s) that introduced the behavior
> > for other reviewers: commit 68d03e4a6e44 (Implement automatic
> > fast-forward merge for submodules, 2010-07-07).
>
> Ok! I'll inspect the codebase and reference it in a future v2.
>
> > "referred by it" is hard for me to parse.  Maybe something like
> >
> > """
> > In the case where the path is a submodule, if the HEAD version of the
> > submodule is a descendant of the MERGE_HEAD version of the submodule,
> > or vice-versa, Git...
> > """
> > ?
>
> Perfect! Actually, I find submodules a little abstract to be explained
> using only words, but your sentence is very clear.
>
> > Also, the references to HEAD and MERGE_HEAD do tie this documentation
> > rather directly to `git merge`; the basic idea is applicable to all
> > callers of the merge machinery, but none of the other callers use
> > MERGE_HEAD (some use CHERRY_PICK_HEAD or REBASE_HEAD), and some do not
> > assume HEAD points to one of the parents either (e.g. merge-tree and
> > replay).  So, if we want to move this somewhere more general, we'd
> > need to reword it a bit.
>
> Given your previous suggestion, what about:
>
> """
> In the case where the path is a submodule, if one of the versions of
> submodule is descendant of another, Git...
> """
>
> ?

That seems like the right direction, but I think "descendant of another" is vague/confusing. Perhaps

""" In the case where the path is a submodule, if the submodule commit used on one side of the merge is a descendant of the submodule commit used on the other side of the merge, Git... """

?
Show 9 quoted lines
>
> > Oh, maybe we could put this information in
> > Documentation/merge-strategies.txt?  Hmm....
>
> Looks like a good place to put this. My only concerns are:
>
> 1. It would need to be documented in both `ort` and `recursive`. I don't
> think it would be a big deal as most of the first paragraph of both
> strategies are equal.

Yes, until `recursive` is deleted anyway. (At which point we'll just remap `recursive` to mean `ort` and not have to have separate documentation for the two.)

> 2. Maybe it would detail too much on this specific case, while not
> covering others (e.g. changing file permissions, symlinks, etc).

Yeah, but we don't have a way to resolve differences for those kinds of changes when neither side matches the base version (unless something like -Xours or -Xtheirs is passed, but even then that belongs under the -X documentation); submodules are somewhat special in that regard.

Show 6 quoted lines
> > Thanks for sending this in.  It's always helpful to get researched
> > documentation improvements, even if I can't help but nitpick and
> > complicate matters here and there....  ;-)
>
> Thank you! Given how deeply you understand the merge machinery any nitpick
> is immensely valuable!
Previous: Lucas OshiroNext: Lucas Oshiro
Message 4 of 5 in “git-merge.adoc: detail submodule merge”
  1. Lucas Seiki OshiroFeb 17, 2025
  2. Elijah NewrenFeb 18, 2025
  3. Lucas OshiroFeb 18, 2025
  4. Elijah NewrenFeb 18, 2025
  5. Lucas OshiroFeb 19, 2025

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.