git-submodule add: Add -r/--record option
authorW. Trevor King <wking@tremily.us>
Mon, 22 Oct 2012 14:48:24 +0000 (10:48 -0400)
committerW. Trevor King <wking@tremily.us>
Fri, 9 Nov 2012 03:27:45 +0000 (22:27 -0500)
commitfb2d915cf60160c200b84df88c6112c1c2d4eefd
tree78724a8c6e4abb8663e140a79adec84df492dd60
parent8c7a786b6c8eae8eac91083cdc9a6e337bc133b0
git-submodule add: Add -r/--record option

This option allows you to record a submodule.<name>.branch option in
.gitmodules.  Git does not currently use this configuration option for
anything, but users have used it for several things, so it makes sense
to add some syntactic sugar for initializing the value.

Current consumers:

Ævar uses this setting to designate the upstream branch for pulling
submodule updates:

  $ git submodule foreach 'git checkout $(git config --file $toplevel/.gitmodules submodule.$name.branch) && git pull'

as he describes in

  commit f030c96d8643fa0a1a9b2bd9c2f36a77721fb61f
  Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
  Date:   Fri May 21 16:10:10 2010 +0000

    git-submodule foreach: Add $toplevel variable

Gerrit uses the same interpretation for the setting, but because
Gerrit has direct access to the subproject repositories, it updates
the superproject repositories automatically when a subproject changes.
Gerrit also accepts the special value '.', which it expands into the
superproject's branch name.

By remaining agnostic on the variable usage, this patch makes
submodule setup more convenient for all parties.

[1] https://gerrit.googlesource.com/gerrit/+/master/Documentation/user-submodules.txt

Signed-off-by: W. Trevor King <wking@tremily.us>
Documentation/git-submodule.txt
git-submodule.sh
t/t7400-submodule-basic.sh