I add a submodule from a git@... URL, to be able to develop in it. Now I want to deploy the app and replace the URL with an git://... one, so it doesn't need authentication to the submodule's repo from Capistrano. Is editing the URL in .gitmodules totally enough to accomplish this?
-
no need for sync: Git 2.25 (Q1 2020) comes with [a new command](https://stackoverflow.com/a/59364554/6309)": `git submodule set-url [--]
– VonC Dec 16 '19 at 21:38`
2 Answers
Editing the .gitmodules file (then committing, and pushing it) will be adequate for any new clones.
Additionally, when a submodule is initialized (e.g. git submodule init …, git submodule update --init …, or git clone --recursive …, etc.) its URL is copied from the .gitmodules file to the repository’s .git/config file.
So, if you have any existing “deployment clones” (the ones you now want to access the submodules through git://… URLs), you will also have to update the URL in their .git/config. You can use git submodule sync to automatically copy the submodule URLs from the current .gitmodules file to your .git/config file (i.e. once you have pulled the commit that updates the .gitmodules file).
The submodule URLs in .git/config are not normally automatically updated because there are cases where you only want to override the URL in certain situations. Specifically, you will often want to use git@… URLs in your repository’s .git/config (so you can push over SSH), but put git://… URLs in .gitmodules (so that the general public does not need to do SSH-based authentication).
- 214,407
- 26
- 209
- 186
I experienced similar problems, and after googling, I stumbled on this article: Relative URL for Git submodule. I found it's good a practice to follow as there's no need to manually change the .gitsubmodule file no matter who checks out it. It probably applies to your case as well.
- 608
- 1
- 11
- 16
-
Does it actually work only for submodules within the same hub of git repos? What if I connect a repo from other hub as a submod? E.g. a gitlab repo has a submodule located at github? – moudrick Mar 09 '20 at 23:35