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

Re: issue with submodules using origin remote unexpectadly

From
Glen Choo <chooglen@google.com>
Date
Oct 4, 2022, 18:12 UTC
Message-ID
<kl6lzgeblap2.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<CA+P7+xrnAXceHJbBYV8Z9Ay9xbkzpiX3P0wXLwN7jfnifW2OBQ@mail.gmail.com>
Hi Jacob! Thanks for the report!
I think we'd need a bit more info, specifically:
- How did you rename the remote?
- What command is doing the submodule fetch?

Or, if you could include a reproduction script, that would be really helpful :)

Jacob Keller <jacob.keller@gmail.com> writes:
Show 5 quoted lines
> Hi,
>
> I've been running into an issue with submodules trying to fetch using
> "origin" even though the submodule does not have a remote by that
> name. (I recently switched the submodule remote name)

How did you rename the remote? e.g. did you run `git remote rename`, or did you rename it manually? I'll come back to why this might be important...

Show 20 quoted lines
>
> remote: Enumerating objects: 210, done.
> remote: Counting objects: 100% (207/207), done.
> remote: Compressing objects: 100% (54/54), done.
> remote: Total 210 (delta 123), reused 197 (delta 119), pack-reused 3
> Receiving objects: 100% (210/210), 107.20 KiB | 4.29 MiB/s, done.
> Resolving deltas: 100% (123/123), completed with 48 local objects.
> From <redacted>
> ...
> Fetching submodule submodule
> From <redacted>
>    85e0da7533d9..80cc886f1187  <redacted>
> Fetching submodule submodule2
> fatal: 'origin' does not appear to be a git repository
> fatal: Could not read from remote repository.
>
> Please make sure you have the correct access rights
> and the repository exists.
> Errors during submodule fetch:
>         submodule2
I assume this is `git fetch` running in the superproject?
Show 7 quoted lines
> I thought at first there might be some configuration value in the
> parent that is selecting origin, but I can 't find one. I also thought
> maybe its some sort of defaulting to origin but I looked through
> submodule code and didn't find one.
>
> Is it just that submodule code is not resilient against changing the
> default remote name away from origin?

Yes, in a sense, though I'm not sure if this is the source of your problems.

When fetching with `git fetch`, submodules are fetched without specifying the remote name, which means Git guesses which remote you want to fetch from, which is documented at https://git-scm.com/docs/git-fetch. I believe (I haven't reread this very closely) this is, in order:

- The remote of your branch, i.e. the value of the config value
  `branch.<name>.remote`
- origin

This is why `git remote rename` matters, because `git remote rename` will also rename `branch.<name>.remote`. If you have a branch checked out in your submodule, you might want to double-check your .git/config.

But... I'll mention another wrinkle for completeness' sake (though I don't think it applies to you). If you fetch using `git submodule update`, the submodule is fetched using a _named_ remote, specifically:

- If the superproject has a branch checked out, it uses the name of the
  superproject branch's remote.
- If the superproject does not have a branch checked out, it uses
  "origin".
>
> Thanks,
> Jake
Previous: Jacob KellerNext: Jacob Keller
Message 2 of 5 in “issue with submodules using origin remote unexpectadly”
  1. Jacob KellerOct 4, 2022
  2. Glen ChooOct 4, 2022
  3. Jacob KellerOct 11, 2022
  4. Glen ChooOct 11, 2022
  5. Jacob KellerOct 12, 2022

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.