Skip to content

Recursive submodule checkout

Jens Lehmann edited this page May 10, 2013 · 6 revisions

You find the current state of this series in the recusive_submodule_update branch in this repo.

Be warned: the code is still experimental and might damage your data!
Especially when removing a submodule on checkout all untracked files inside it will be lost! (and it’ll stay that way until the discussed ignored-but-precious attribute is implemented in Git)

Having said that, I already use this code for quite some time at my dayjob and it’s working fine for me.

Stuff that’s currently known not to work:

  • Interactive rebase doesn’t update submodule work trees
  • A recreated submodule won’t appear on first checkout (but it will on the second checkout; a fix for that is being worked on)
  • A non-interactive rebase empties changed submodules

Please mail me if you find another problem so we can take care of it (patches are also welcome ;-).

How to test it

Just check out the recusive_submodule_update and put a “return 1” in the first line of submodule_needs_update() in submodule.c in a commit on top of it (this enables unconditional recursive checkout and will be needed until the configuration options are implemented and mature enough; but currently it breaks quite some tests).

Clone this wiki locally