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

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

From
Manlio Perillo <manlio.perillo@gmail.com>
Date
Jan 5, 2013, 13:52 UTC
Message-ID
<50E83001.9000505@gmail.com>
In-Reply-To
<7vzk0osjli.fsf@alter.siamese.dyndns.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 04/01/2013 22:51, Junio C Hamano ha scritto:
Show 20 quoted lines
> 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?
I have found another, related problem.

Today I tried to update qemu submodules again, however the command failed with an "obscure" error message:

$ git submodule update pixman fatal: Needed a single revision Unable to find current revision in submodule path 'pixman'

The pixman submodule is the one that I failed to update in the very begin. The problem is not with the pixman or qemu repository: if I clone again qemu (with the --recursive option), all is ok.

The problem is with the private working copy (in .git/modules/pixman) being corrupted:

$git log fatal: bad default revision 'HEAD'.

The HEAD file contains "ref: refs/heads/master", but the refs/heads directory is empty.

By the way: since git submodule is a porcelain command, IMHO it should not show to the user these low level error message; at least it should give more details. As an example, in this case it could say something like:

  the local module "pixmap" seems to be corrupted.
  Run xxx to remove the module and yyy to create it again.

The ideal solution is, for submodule update, to never leave an incomplete directory; that is: the update command should be atomic.

Regards  Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlDoMAEACgkQscQJ24LbaUQVugCggdl36Hx5JIW/hd1SVXWv+ths zpYAnR+93BfDLaFhXEiaQvu/TickmDA0 =2Mnw -----END PGP SIGNATURE-----

Previous: Junio C HamanoNext: Jens Lehmann
Message 3 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.