Re: [BUG] git submodule update is not fail safe
From: Manlio Perillo <hidden>
Date: 2016-06-15 22:55:39
Possibly related (same subject, not in this thread)
- 2016-06-15 · [BUG] git submodule update is not fail safe · Manlio Perillo <hidden>
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Il 05/01/2013 15:01, Jens Lehmann ha scritto:
[...]quoted
quoted
$ 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. [...] If this isn't seen as a bug in clone, we could also remove the .git/modules/<name> directory in module_clone() of git-submodule.s h when the clone fails. Manilo,
Its Manlio, not Manilo ;-).
does the following patch remove the problems you are seeing (after removing .git/modules/pixman manually)?
I don't think I can test it right now, since the problem can only be reproduced when git clone fails due to network problems. Without the patch, if I remove the .git/modules/pixman directory, `git submodule update --init pixamp` fails: Unable to find current revision in submodule path 'pixman' fatal: Not a git repository: pixman/../.git/modules/pixman To reproduce the problem, however, it seems all you need to do is to send SIGINT signal during `git submodule update` : $ git submodule update --init pixman Cloning into 'pixman'... remote: Counting objects: 10137, done. ^C $ git submodule update pixman remote: Counting objects: 10137, done. ^C $ git submodule update pixman fatal: Needed a single revision Unable to find current revision in submodule path 'pixman' Note that I had to send SIGINT two times, in order to corrupt the module. I suspect your patch does not fix this (since I don't get the "Clone failed" error message). I also noted that If I send SIGINT before git starts counting remote objects, I get a different count number: $ git submodule update pixman Cloning into 'pixman'... ^C $ git submodule update pixman remote: Counting objects: 9757, done. ^C $ git submodule update pixman fatal: Needed a single revision Unable to find current revision in submodule path 'pixman' Note that git is reporting 9757 remote objects, instead of 10137. P.S.: sorry for the mail I sent today. It reported the exact same problem I reported yesterday: this morning I was rather sure that I got a different error message from submodule update... Regards Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlDoPZMACgkQscQJ24LbaUTfNQCdFvhSQwGlJZlvOr+TIHHyDFJY d8AAn0zuHKjBGIcqr8RH/rftHjomvPtM =48RN -----END PGP SIGNATURE-----