“No url found for submodule path” errors can be tricky to track down; if you think you have all your submodules set up correctly. I ran into this very issue today! I cloned one of my team’s repositories and could not then pull the submodules due to this error. After some searching, I was able to find a simple solution to resolve the error from incorrectly adding submodules to your repository.
The problem I was running into was this:
$ git submodule update --init --recursive
fatal: No url found for submodule path 'common_source' in .gitmodules
Code language: JavaScript (javascript)
I was left scratching my head because I did in fact have my .gitmodules set correctly. I should not have been seeing this “No url found for submodule path” error.
The normal resolution did not help:
git rm --cached modules/common_source
git add git@<my-common-source-submodule-repo-url>/common_source.git modules/common_source
Code language: HTML, XML (xml)
This would resolve my issue for my local repository, but if I then cloned it anew I would run into the same problem.
I finally found the magic sauce from this post on Netlify. (Note: Gitlinks, which are submodules, have mode 160000).
$ git ls-files --stage | grep 160000
14:160000 9e05e5731986604b50a1bf4a6201aec642f76a27 0 common_source
270:160000 9e05e5731986604b50a1bf4a6201aec642f76a27 0 modules/common_source
Somehow, I’m not sure how, but somehow the submodule got added at the wrong path initially and then was not correctly removed. Using the git ls-files command, I was able to see that the submodule was indeed listed twice. That was what was causing the error.
To fix this once and for all, I did this:
$ git rm --cached common_source
And, viola! Problem solved!
I hope that someone else can find this helpful!
Comments