submodule update: continue when a checkout fails
authorFredrik Gustafsson <iveqy@iveqy.com>
Mon, 13 Jun 2011 17:15:26 +0000 (19:15 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Jun 2011 18:24:48 +0000 (11:24 -0700)
commit15ffb7cde48b73b3d5ce259443db7d2e0ba13750
tree17a9dfd49786e66afea33b751b7e0fc60d5b89b2
parentadb231cfdabd9b62c2d99519ac5f8ba29d689478
submodule update: continue when a checkout fails

"git submodule update" stops at the first error and gives control
back to the user. Only after the user fixes the problematic
submodule and runs "git submodule update" again, the second error
is found. And the user needs to repeat until all the problems are
found and fixed one by one. This is tedious.

Instead, the command can remember which submodules it had trouble with,
continue updating the ones it can, and report which ones had errors at
the end. The user can run "git submodule update", find all the ones that
need minor fixing (e.g. working tree was dirty) to fix them in a single
pass. Then another "git submodule update" can be run to update all.

Note that the problematic submodules are skipped only when they are to
be integrated with a safer value of submodule.<name>.update option,
namely "checkout". Fixing a failure in a submodule that uses "rebase" or
"merge" may need an involved conflict resolution by the user, and
leaving too many submodules in states that need resolution would not
reduce the mental burden on the user.

Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com>
Mentored-by: Jens Lehmann <Jens.Lehmann@web.de>
Mentored-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-submodule.sh
t/t7406-submodule-update.sh