Problem using 'submodule.recurse'
- Date: Thu, 23 May 2019 18:42:14 +0100
- From: Maksim Odnoletkov <odnoletkov@xxxxxxx>
- Subject: Problem using 'submodule.recurse'
I have a problem using 'submodule.recurse' config option. I want to use
it and at the same time fine-tune behavior for individual commands with
more specific options. For example to keep 'on-demand' behavior for
'fetch' and 'pull'.
* If I put 'fetch.recurseSubmodules = on-demand' *below*
'submodule.recurse = true' in the config, it kinda works - fetch will
use 'on-demand' behavior.
* But with this setup 'fetch' within 'pull' will always recurse
unconditionally. Looking at the code this happens because 'pull'
reads 'submodule.recurse' and seeing it in non-default state forces
this behavior on underlying 'fetch'.
As far as I understand there is no way currently to have 'on-demand'
recursing for 'fetch' within the 'pull' when 'submodule.recurse' is on
(outside of using command line args). Also with described setup 'fetch'
behaves differently from 'pull' which is unexpected.
Looking at the code quickly I see two ways this can be resolved:
* Add 'pull.recurseSubmodules' option so it can be used to explicitly
override 'submodule.recurse' for 'pull'.
* Don't force recursing behavior from 'pull' to underlying 'fetch' if
it comes from config and not from command line args.