From: Marc Branchaud <marcnarc@xiplink.com>
To: Jens Lehmann <Jens.Lehmann@web.de>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH] Try harder to find a remote when on a detached HEAD or non-tracking branch.
Date: Tue, 19 Jun 2012 17:43:00 -0400 [thread overview]
Message-ID: <4FE0F264.1040703@xiplink.com> (raw)
In-Reply-To: <4FE0D5D5.3020408@web.de>
On 12-06-19 03:41 PM, Jens Lehmann wrote:
> Am 19.06.2012 16:07, schrieb Marc Branchaud:
>> On 12-06-18 06:12 PM, Junio C Hamano wrote:
>>> Marc Branchaud <marcnarc@xiplink.com> writes:
>>>> That would be bad for our situation. As I said, our automated build system
>>>> uses detached HEADs a lot. Erroring-out in this case would break us. It's
>>>> really only the near-ubiquity of the name "origin" that has kept things
>>>> working so far.
>
> And the "submodule add" documentation clearly talks about relative
> submodule URLs being relative to the superproject's origin.
This whole thing seems a bit weird...
So user A adds a submodule with <repository> "../others/thing.git". Clearly
user A has some remote in mind when they added this submodule.
But consider user B, who cloned the super-repo from the same remote that user
A had in mind when creating the submodule. If user B then checks out a
non-tracking branch (or a branch that tracks a different remote) and then
tries to initialize/update the submodule, user B will get an error.
To me this is clearly wrong. It's also wrong to error-out and expect the
user to fix it. Should the user temporarily set their branch's remote to the
right place, initialize the submodule, then undo the branch setting? Should
the user check our a branch that tracks the correct remote, initialize the
submodule, then check out their branch? Both of those "solutions" look
pretty weak to me.
I'm starting to think that maybe "git submodule init" (and "update") should
learn a --remote option. That way at least user B could tell git what to do.
> Your buildbot could also check if an origin is configured and use the
> magic in your patch to configure one to the URL of the first remote it
> finds if it isn't before initializing the submodules.
Yes, it seems my assumptions about how to determine the default remote
shouldn't be coded into git. But dang it, the current fallback to "origin"
is really lame.
>>> That reliance of "origin" is what made me think that "not guessing
>>> and blindly assuming" a wrong thing to do.
>>
>> I think git can do better than erroring out, though.
>
> Hmm, but guessing and using the first remote it finds (which might or
> might not be the one used in the initial clone) doesn't sound like a
> terribly good idea.
Fair enough, but I still think it's better than guessing that the right
remote is "origin". :)
>> Sure, but I feel it did that already when it cloned. It seems reasonable for
>> the submodules to default to using the remote specified when the super-repo
>> was cloned.
>
> Is there a way to reliably tell that remote without relying e.g. on
> the implementation details of git config (e.g. it could sort remotes
> alphabetically some day)? What happens if someone changes the config
> later? A lot of ambiguity here ...
Yes, I agree.
Should there perhaps be some kind of "cloned from this remote" setting in the
config?
> And I think origin should always be the second choice if it exists,
> the first being the remote configured for the checked out branch.
Do you mean "the origin(al) remote repository" or just "the remote named
'origin'"?
> This gives the user the opportunity to say "Oh, I screwed up using
> 'git clone -o', let's set origin to the upstream repo". But should we
> try to guess the remote the superproject was cloned from as third
> option? I am not convinced.
Maybe I'm misinterpreting you. Are you attaching a special meaning to a
remote named "origin"?
M.
next prev parent reply other threads:[~2012-06-19 21:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-18 17:01 [PATCH] Try harder to find a remote when on a detached HEAD or non-tracking branch marcnarc
2012-06-18 17:33 ` Junio C Hamano
2012-06-18 21:40 ` Marc Branchaud
2012-06-18 22:12 ` Junio C Hamano
2012-06-19 14:07 ` Marc Branchaud
2012-06-19 17:55 ` Junio C Hamano
2012-06-19 19:31 ` Heiko Voigt
2012-06-19 21:42 ` Marc Branchaud
2012-06-20 17:42 ` Heiko Voigt
2012-06-19 20:12 ` Jeff King
2012-06-19 20:31 ` Junio C Hamano
2012-06-19 21:43 ` Marc Branchaud
2012-06-19 21:46 ` Jeff King
2012-06-19 21:58 ` Junio C Hamano
2012-06-19 22:00 ` Jeff King
2012-06-19 22:26 ` Junio C Hamano
2012-06-19 19:41 ` Jens Lehmann
2012-06-19 21:43 ` Marc Branchaud [this message]
2012-06-20 2:49 ` Phil Hord
2012-06-18 17:53 ` Arnaud Lacombe
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FE0F264.1040703@xiplink.com \
--to=marcnarc@xiplink.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.
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 NNTP newsgroup(s).