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

Relative url values in .gitmodules confusingly sensitive to clone via ssh vs https.

From
BSBenjamin Shropshire <benjamin.shropshire@economicmodeling.com>
Date
Mar 17, 2020, 18:34 UTC
Message-ID
<CAAjm7Ga5JOJ2w=01o1-x-80HMGVaYQQy8SBBb-zJ6MOQAe4SxQ@mail.gmail.com>
From my perspective, this is a bug.
If I clone a repo twice like this:

git clone https://github.com/user/repo.git ./https git clone git@github.com:user/repo.git ./ssh

And if it contains a .gitmodules like this:
[submodule "x"]
    path = xxx
    url = ../../different-user/something.git

When I `git submodule update --init --recursive` in each, only the HTTPS version works. the SSH version confusingly seems to try to find something at ~/different-user/something.git or some other path in the local file system.

this seems consistent with the URL parsing resulting in different segmentation and thus the ../../ ending up in different places:

https =[..., 'github.com', 'user', 'repo.git'] ssh=['git@github.com:user', 'repo.git']

# ../../ https[:-2] -> [..., 'github.com'] ssh[:-2] -> []

This theory is supported by the fact that this works:

git clone ssh://git@github.com/user/repo.git ./ssh cd ssh git submodule update --init --recursive

---- See also: https://stackoverflow.com/questions/36564696/how-to-use-same-protocol-for-git-submodules

Next: brian m. carlson
Message 1 of 7 in “Relative url values in .gitmodules confusingly sensitive to clone via ssh vs https.”
  1. Benjamin ShropshireMar 17, 2020
  2. brian m. carlsonMar 18, 2020
  3. Benjamin ShropshireMar 18, 2020
  4. brian m. carlsonMar 20, 2020
  5. brian m. carlsonMar 23, 2020
  6. Benjamin ShropshireMar 23, 2020
  7. brian m. carlsonMar 23, 2020

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.