Re: Relative url values in .gitmodules confusingly sensitive to clone via ssh vs https.
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Mar 18, 2020, 00:26 UTC
- Message-ID
- <20200318002630.GA366567@camp.crustytoothpaste.net>
- In-Reply-To
- <CAAjm7Ga5JOJ2w=01o1-x-80HMGVaYQQy8SBBb-zJ6MOQAe4SxQ@mail.gmail.com>
On 2020-03-17 at 18:34:09, Benjamin Shropshire wrote:
Show 20 quoted lines
> 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:
Looking at the code, it appears that we don't let you go above the top of the URL, which makes sense. So we interpret it as a file system path.
(And since this SSH format is not technically a URL, we don't have a root slash, which is probably why this is a problem.)
Does it work if you write the following?
git clone git@github.com:/user/repo.git ./ssh
-- brian m. carlson: Houston, Texas, US OpenPGP: https://keybase.io/bk2204