submodule add: If --branch is given, record it in .gitmodules wtk/submodule.name.branch-v5
authorW. Trevor King <wking@tremily.us>
Wed, 28 Nov 2012 17:43:31 +0000 (12:43 -0500)
committerW. Trevor King <wking@tremily.us>
Wed, 28 Nov 2012 19:19:01 +0000 (14:19 -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 39aa02dffa7c0270dd7b74050d8203056dc4d047..43e5b4b8cfc5972638be84abf76c33067a726ae5 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 b63d8691180a078622249059a8dba1562df5ba67..1f76893c9e5438099f677b6d454754fa815611bb 100755 (executable)
@@ -368,6 +368,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
        ) &&