git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [BUG] git submodule update is not fail safe

From
Jens Lehmann <jens.lehmann@web.de>
Date
Jan 5, 2013, 14:50 UTC
Message-ID
<50E83DAE.1080500@web.de>
In-Reply-To
<50E83224.2070701@web.de>
Am 05.01.2013 15:01, schrieb Jens Lehmann:
Show 30 quoted lines
> Am 04.01.2013 22:51, schrieb Junio C Hamano:
>> Manlio Perillo <manlio.perillo@gmail.com> writes:
>>
>>> $ 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 ...

Previous: Manlio PerilloNext: Jens Lehmann
Message 7 of 24 in “[BUG] git submodule update is not fail safe”
  1. Manlio PerilloJan 4, 2013
  2. Junio C HamanoJan 4, 2013
  3. Manlio PerilloJan 5, 2013
  4. Jens LehmannJan 5, 2013
  5. Jens LehmannJan 5, 2013
  6. Manlio PerilloJan 5, 2013
  7. Jens LehmannJan 5, 2013
  8. clone: support atomic operation with --separate-git-dirJens Lehmann, Jan 5, 2013
  9. Manlio PerilloJan 5, 2013
  10. Junio C HamanoJan 6, 2013
  11. Duy NguyenJan 6, 2013
  12. Jonathan NiederJan 6, 2013
  13. clone: forbid --bare --separate-git-dir <dir>Nguyễn Thái Ngọc Duy, Jan 6, 2013
  14. Jonathan NiederJan 6, 2013
  15. Junio C HamanoJan 6, 2013
  16. Duy NguyenJan 7, 2013
  17. Junio C HamanoJan 7, 2013
  18. Duy NguyenJan 8, 2013
  19. Jens LehmannJan 8, 2013
  20. Junio C HamanoJan 8, 2013
  21. Duy NguyenJan 8, 2013
  22. Junio C HamanoJan 8, 2013
  23. clone: forbid --bare --separate-git-dir <dir>Nguyễn Thái Ngọc Duy, Jan 11, 2013
  24. Junio C HamanoJan 11, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.