Hi. I'm running git version 2.13.2.windows.1.  My coworker has the same 
behavior with 2.21.0.windows.1.

I recently set up a git submodule by doing "git submodule add 
https://github.com/VoltServer/example";.  Based on our teams preference, I then 
tried to update .gitmodules to use the alternate URL 
"[email protected]:VoltServer/example.git".  When I manually edited the 
.gitmodules file, I failed to type it in correctly, instead providing 
"[email protected]/VoltServer/example" (I think the same problem applies for any 
malformed URL).  After my coworker pulled this commit and tried to init the 
submodule we realized my mistake.  So, I fixed .gitmodules to use the correct 
URL, committed, and he pulled again.  Despite now having the correct URL, his 
superproject clone still failed to clone the submodule.  I found a workaround, 
but I'm not certain if the workaround was valid or not.

Here are the recreation steps:

mkdir example
cd example
mkdir a
cd a
git init
touch foo
git add foo
git commit -m "Initial commit."
git submodule add https://github.com/VoltServer/example
git commit -m "Add submodule."
vim .gitmodules // edit as described above
git add .gitmodules
git commit -m "Update to wrong URL in .gitmodules."
cd ..
git clone a b
cd b
git submodule update --init

That last command gives the following output:

Submodule 'example' ([email protected]/VoltServer/example) registered for path 
'example'
fatal: repository '[email protected]/VoltServer/example' does not exist
fatal: clone of '[email protected]/VoltServer/example' into submodule path 
'C:/projects/temp/example/b/example' failed
Failed to clone 'example'. Retry scheduled
fatal: repository '[email protected]/VoltServer/example' does not exist
fatal: clone of '[email protected]/VoltServer/example' into submodule path 
'C:/projects/temp/example/b/example' failed
Failed to clone 'example' a second time, aborting

If I now edit .gitmodules to reflect the correct URL:

cd ../a
vim .gitmodules // format the URL correctly
git add .gitmodules
git commit -m "Fix .gitmodules URL."
cd ../b
git pull
git submodule update --init

This gives the same error message as before, except with the first line about 
registering the submodule missing.

I've found a workaround if I manually edit .git/config in each clone to reflect 
the correct URL.  After doing that, running "git submodule update --init" works 
as expected.

My understanding is that I shouldn't ever have to edit anything in the .git 
directory.  So, have I found a bug with .gitmodules being ignored after adding 
a given submodule?  Or is this just user error, a case of "Don't do that.  
Initialize the submodule with the correct URL and move on."?

Thanks,
Alex

Alex Levy
Firmware Engineer
VoltServer, Inc.
42 Ladd Street, Suite 227
East Greenwich, RIĀ 02818
[email protected]
888-622-8658 x413


Reply via email to