Am 05.01.2013 15:01, schrieb Jens Lehmann:
Am 04.01.2013 22:51, schrieb Junio C Hamano:
quoted
Manlio Perillo [off-list ref] writes:
quoted
$ git submodule update --init
...
Submodule 'roms/vgabios' (git://git.qemu.org/vgabios.git/) registered
for path 'roms/vgabios'
fatal: unable to connect to anongit.freedesktop.org:
anongit.freedesktop.org[0: 131.252.210.161]: errno=Connection timed out
Unable to fetch in submodule path 'pixman'
$ git submodule update --init
fatal: Needed a single revision
Unable to find current revision in submodule path 'pixman'
The problem is easy to solve: manually remove the pixman directory;
however IMHO git submodule update should not fail this way since it may
confuse the user.
Sounds like a reasonable observation. Jens, Heiko, comments?
The reason seems to be that clone leaves a partial initialized .git
directory in case of connection problems. The next time submodule
update runs it tries to revive the submodule from .git/modules/<name>
but fails as there are no objects in it.
This looks like a bug in clone to me, as it takes precautions to clean
up if something goes wrong but doesn't do that in this case. But while
glancing over the code I didn't find out what goes wrong here.
I dug a bit deeper here and found the reason: In remove_junk() of
builtin/clone.c the junk_git_dir points to the gitfile in the
submodules work tree, not the .git/modules/<name> directory where
clone was told to put the git directory. Will see if I can come up
with a patch soonish ...