submodule add: If --branch is given, record it in .gitmodules wtk/submodule.name.branch-v5.1
authorW. Trevor King <wking@tremily.us>
Wed, 28 Nov 2012 17:43:31 +0000 (12:43 -0500)
committerW. Trevor King <wking@tremily.us>
Fri, 30 Nov 2012 16:53:46 +0000 (11:53 -0500)
This allows you to easily record a submodule.<name>.branch option in
.gitmodules when you add a new submodule.  With this patch,

  $ git submodule add -b <branch> <repository> [<path>]
  $ git config -f .gitmodules submodule.<path>.branch <branch>

reduces to

  $ git submodule add -b <branch> <repository> [<path>]

This means that future calls to

  $ git submodule update --remote ...

will get updates from the same branch that you used to initialize the
submodule, which is usually what you want.

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

index 49c06d1c3011e278aa1467173ee46346db4364a5..95ee1a1746e0d21b2e5f255663461a171f97aedf 100644 (file)
@@ -208,6 +208,8 @@ OPTIONS
 -b::
 --branch::
        Branch of repository to add as submodule.
+       The name of the branch is recorded as `submodule.<path>.branch` in
+       `.gitmodules` for `update --remote`.
 
 -f::
 --force::
index 1feb38a3a658168314249270b8d557b2c71d3f95..60dd0b2214d0888014d0036df6133173ae4a5be0 100755 (executable)
@@ -395,6 +395,10 @@ Use -f if you really want to add it." >&2
 
        git config -f .gitmodules submodule."$sm_path".path "$sm_path" &&
        git config -f .gitmodules submodule."$sm_path".url "$repo" &&
+       if test -n "$branch"
+       then
+               git config -f .gitmodules submodule."$sm_path".branch "$branch"
+       fi &&
        git add --force .gitmodules ||
        die "$(eval_gettext "Failed to register submodule '\$sm_path'")"
 }
index 53970374913eaa6f1b5921b14b5f25043974e3a4..90e29157b83b42a94a54a5221be270202881eae6 100755 (executable)
@@ -133,6 +133,7 @@ test_expect_success 'submodule add --branch' '
        (
                cd addtest &&
                git submodule add -b initial "$submodurl" submod-branch &&
+               test "initial" = "$(git config -f .gitmodules submodule.submod-branch.branch)" &&
                git submodule init
        ) &&