Brandon Williams <bmwill@xxxxxxxxxx> writes: >> + The method by which a submodule is updated by 'git submodule update', >> + which is the only affected command, others such as >> + 'git checkout --recurse-submodules' are unaffected. It exists for >> + historical reasons, when 'git submodule' was the only command to >> + interact with submodules; settings like `submodule.active` >> + and `pull.rebase` are more specific. It is copied to the config >> + by `git submodule init` from the .gitmodules file. >> + Allowed values here are 'checkout', 'rebase', 'merge' or 'none'. >> + See description of 'update' command in linkgit:git-submodule[1] >> + for their meaning. Note that the '!command' form is intentionally >> + ignored here for security reasons. > > This probably needs to be tweaked a bit to say that the '!command' form > is ignored by submodule init, in that it isn't copied over from the > .gitmodules file, but if it is configured in your config it will be > respected by 'submodule update'. I do not think gitmodules.txt is the place to say anything more than what Stefan's patch says above. Perhaps config.txt should mention that in addition to what the variable with the same in .gitmodules can take, it is allowed to use the !command form. IOW, in config.txt submodule.<name>.update:: Specifies how 'git submodule update' should work on the named submodule. In addition to the values that can be specified in (and copied from) `.gitmodules` (see linkgit:gitmodules[5]), `!command` form can also be used. or something, perhaps?