Jens Lehmann wrote: > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -241,7 +241,9 @@ cmd_add() > # ash fails to wordsplit ${branch:+-b "$branch"...} > case "$branch" in > '') git checkout -f -q ;; > - ?*) git checkout -f -q -b "$branch" "origin/$branch" ;; > + ?*) if [ "$(git branch)" != "* $branch" ]; then Agh. The command to use is "git symbolic-ref -q HEAD", I suppose. Maybe we can simplify by relying on "git clone". Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- git-submodule.sh | 16 ++++++---------- t/t7400-submodule-basic.sh | 8 +++++++- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/git-submodule.sh b/git-submodule.sh index d937f0b..6fd09e7 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -219,17 +219,13 @@ cmd_add() esac git config submodule."$path".url "$url" else - - module_clone "$path" "$realrepo" "$reference" || exit + brancharg=${branch:+"-b $(git rev-parse --sq-quote "$branch")"} + refarg=${reference:+"$(git rev-parse --sq-quote "$reference")"} ( - clear_local_git_env - cd "$path" && - # ash fails to wordsplit ${branch:+-b "$branch"...} - case "$branch" in - '') git checkout -f -q ;; - ?*) git checkout -f -q -b "$branch" "origin/$branch" ;; - esac - ) || die "Unable to checkout submodule '$path'" + export realrepo path && + eval "git clone $brancharg $refarg" '"$realrepo" "$path"' + ) || + die "Clone of '$realrepo' into submodule path '$path' failed" fi git add $force "$path" || diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 2c49db9..77088cc 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -114,7 +114,6 @@ test_expect_success 'submodule add --branch' ' echo "refs/heads/initial" >expect-head && cat <<-\EOF >expect-heads && refs/heads/initial - refs/heads/master EOF >empty && @@ -131,6 +130,13 @@ test_expect_success 'submodule add --branch' ' test_cmp empty untracked ' +test_expect_success 'submodule add --branch succeeds even when branch is at HEAD' ' + ( + cd addtest && + git submodule add -b master "$submodurl" submod-existing-branch + ) +' + test_expect_success 'submodule add with ./ in path' ' echo "refs/heads/master" >expect && >empty && -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html