gitextensions/gitextensions — pull request #2175 by olmobrutall (2013-12-16 23:23:10+00:00)
Title: UpdateSubmodulesOnCheckout

When explaining submodules, one really confusing topic is that they are kind of lazy: When you checkout a commit in the superproject the submodules remain in the old state until you ask them to update (one by one or using Update all submodules)

This is even more confusing because the word update has 'moving forward' semantics, while in reality `git submodule update` can move you back an forth.

What I've done is to add a checkbox update submodules on Checkout branch:

![image](https://f.cloud.github.com/assets/720953/1760055/644731de-66a8-11e3-9203-8fffc2183b95.png)

This checkbox is only visible if the repository has submodules, and the selected value gets remembered in AppSettings.

I've also added an identical checkbox in Checkout revision:

![image](https://f.cloud.github.com/assets/720953/1760031/d84bc5fa-66a7-11e3-87d8-58043bca0095.png)

And in Create branch

![image](https://f.cloud.github.com/assets/720953/1760066/a0f809aa-66a8-11e3-98d3-846edd1b1467.png)

Note that, when Checkout after create is not checked, Update submodules gets disabled.

![image](https://f.cloud.github.com/assets/720953/1760072/b2cbc568-66a8-11e3-8fa4-83863c426f49.png)

The default is false to preserve the previous behavior, but I don't really see a lot of cases not to use it, so maybe true will be better.