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

Re: `git submodule update --single-branch` tracks HEAD instead of branch from .gitmodules

From
UKUwe Kleine-König <u.kleine-koenig@baylibre.com>
Date
Nov 21, 2025, 08:49 UTC
Message-ID
<llfngawozm26eo3x42ndon55qenrzeto2tgl7djr2weho43gt5@sjcdk2ppafqc>
In-Reply-To
<CALnO6CBdc=5KpUwweMzxpT+9CBXZVP4AG4bFS9sGucJJVmzjtQ@mail.gmail.com>
Hello,
On Thu, Nov 20, 2025 at 11:05:00AM -0500, D. Ben Knoble wrote:
Show 30 quoted lines
> On Mon, Nov 17, 2025 at 4:28 AM Uwe Kleine-König
> <u.kleine-koenig@baylibre.com> wrote:
> > for a project I'm using several submodules, showing my issue with just
> > one of them
> >
> >         $ git ls-tree @:layers | grep poky
> >         160000 commit b33a8abe77081a2bdda0d89c61736473b2f9bb8b  poky
> >
> >         $ cat .gitmodules
> >         ...
> >         [submodule "yocto_poky"]
> >                 path = layers/poky
> >                 url = https://git.yoctoproject.org/git/poky
> >                 branch = scarthgap
> >
> >         $ git submodule update --init --checkout --recursive --single-branch
> >         ...
> >         Cloning into '/home/uwe/work/sri/poet-server/layers/poky'...
> >         remote: Enumerating objects: 8775, done.
> >         remote: Counting objects: 100% (3119/3119), done.
> >         remote: Compressing objects: 100% (158/158), done.
> >         remote: Total 8775 (delta 2974), reused 2961 (delta 2961), pack-reused 5656 (from 1)
> >         Receiving objects: 100% (8775/8775), 3.24 MiB | 15.45 MiB/s, done.
> >         Resolving deltas: 100% (6158/6158), completed with 391 local objects.
> >         From https://git.yoctoproject.org/git/poky
> >          * branch                      b33a8abe77081a2bdda0d89c61736473b2f9bb8b -> FETCH_HEAD
> >
> > so far so good. But:
> 
> Is it? You've only cloned the HEAD from the origin:

I don't. b33a8abe77081a2bdda0d89c61736473b2f9bb8b isn't included in the remote's HEAD, only in the scarthgap branch.

Show 5 quoted lines
>        --single-branch, --no-single-branch
>            This option is only valid for the update command. Clone only one
>            branch during update: HEAD or one specified by --branch.
> 
> Perhaps you want to use --branch here, [...]

Well, the submodule is initialized from .gitmodules which has a specification of the branch. And the init steps works fine despite the submodule commit not being included in HEAD of the remote poky repo. I interpret that as --branch being provided (somewhat) implicitly.

And yes I'm aware I wail about something that is documented. But the documentation is silly in the same way as the code.

> [...] and _perhaps_ update --single-branch should default to
> submodule.<name>.branch ?

Yes please. `git submodule update --init` already does it right, just the fetch line in .git/modules/yocto_poky/config is wrong.

Best regards Uwe

Previous: D. Ben Knoble
Message 3 of 3 in “`git submodule update --single-branch` tracks HEAD instead of branch from .gitmodules”
  1. Uwe Kleine-KönigNov 17, 2025
  2. D. Ben KnobleNov 20, 2025
  3. Uwe Kleine-KönigNov 21, 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.