git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jacob Keller <jacob.keller@gmail.com>
To: Glen Choo <chooglen@google.com>
Cc: Git mailing list <git@vger.kernel.org>,
	Emily Shaffer <emilyshaffer@google.com>,
	Philippe Blain <levraiphilippeblain@gmail.com>
Subject: Re: issue with submodules using origin remote unexpectadly
Date: Tue, 11 Oct 2022 14:15:59 -0700	[thread overview]
Message-ID: <CA+P7+xq3NGGTq2U2Di9ZTBO3buqeEMb2smC=v78V9Subt2cDMw@mail.gmail.com> (raw)
In-Reply-To: <kl6lzgeblap2.fsf@chooglen-macbookpro.roam.corp.google.com>

On Tue, Oct 4, 2022 at 11:12 AM Glen Choo <chooglen@google.com> wrote:
>
> Hi Jacob! Thanks for the report!
>

Thanks for responding!

> I think we'd need a bit more info, specifically:
>
> - How did you rename the remote?
> - What command is doing the submodule fetch?
>

I am doing a git pull --rebase in the superproject, and I renamed the
remote in the submodule using git remote rename.

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

I'm not sure how to do this, because it is only an intermittent
failure. I suspect it has to do with when the submodule actually needs
to update.

Perhaps I can come up with something though. If I can, I'll send it as
a new test.

> Jacob Keller <jacob.keller@gmail.com> writes:
>
> > 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...
>

I renamed it using git remote rename.

> >
> > 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?
>

Its git pull --rebase, but I suppose as part of this it will run
something equivalent to git fetch?

> > 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.
>

Hmm.

> 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`

So basically if its checked out to a branch it will fetch from the
remote of that branch, but...

> - origin
>

It defaults to origin, so if you have the usual "checked out as a
detached head" style of submodule, it can't find the remote branch.

> 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.
>

I do not have a branch checked out, I have it checked out as detached
head, as is the usual style for "git submodule update" would do.

> 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.

Right, so that explains why I can re-run git submodule update after a
git pull --rebase and it works.

In theory wouldn't it make more sense to use the remote based on the
URL of the .gitmodules file?

> - If the superproject does not have a branch checked out, it uses
>   "origin".
>

I suppose one option would be to make this configurable. I started
using "upstream" as the default remote name for most of my
repositories when I began working with forks a lot more.

> >
> > Thanks,
> > Jake

  reply	other threads:[~2022-10-11 21:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-04 17:43 issue with submodules using origin remote unexpectadly Jacob Keller
2022-10-04 18:12 ` Glen Choo
2022-10-11 21:15   ` Jacob Keller [this message]
2022-10-11 22:20     ` Glen Choo
2022-10-12  0:13       ` Jacob Keller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CA+P7+xq3NGGTq2U2Di9ZTBO3buqeEMb2smC=v78V9Subt2cDMw@mail.gmail.com' \
    --to=jacob.keller@gmail.com \
    --cc=chooglen@google.com \
    --cc=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=levraiphilippeblain@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).