From: Jens Lehmann <Jens.Lehmann@web.de>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Jonathan Nieder <jrnieder@gmail.com>,
Klaus Ethgen <Klaus@Ethgen.de>,
Sven Verdoolaege <skimo@kotnet.org>,
mlevedahl@gmail.com
Subject: [PATCH] git submodule -b ... of current HEAD fails
Date: Thu, 09 Dec 2010 00:19:46 +0100 [thread overview]
Message-ID: <4D001292.3020503@web.de> (raw)
In-Reply-To: <4CFFFA05.6070609@web.de>
git submodule add -b $branch $repository
fails when HEAD already points to $branch in $repository.
When the freshly cloned submodules HEAD is the same as the checked out
branch, it doesn't make sense to update it again as "git checkout -b"
would fail with »fatal: git checkout: branch $branch already exists«.
Reported-by: Klaus Ethgen <Klaus@Ethgen.de>
Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
---
Am 08.12.2010 22:35, schrieb Jens Lehmann:
> Am 07.12.2010 23:57, schrieb Junio C Hamano:
>> Jens Lehmann <Jens.Lehmann@web.de> writes:
>>
>>> Nope, these lines date back to the time before I got involved in the
>>> submodule business ... Seems like this "git checkout" was added in
>>> March 2008 by Mark Levedahl (CCed), maybe he can shed some light on
>>> that.
>>>
>>> But to me your change looks good, so feel free to add:
>>> Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
>>
>> Does either of you want to add a test for this?
>
> Will do.
And as it happens from time to time, while writing the test you find
out that the first attempt to fix the bug didn't work as expected ...
git-submodule.sh | 4 +++-
t/t7400-submodule-basic.sh | 7 +++++++
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 33bc41f..bf2803f 100755
--- 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
+ git checkout -f -q -b "$branch" "origin/$branch"
+ fi ;;
esac
) || die "Unable to checkout submodule '$path'"
fi
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 782b0a3..e224da4 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -131,6 +131,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 &&
--
1.7.3.3.580.ged75d
next prev parent reply other threads:[~2010-12-08 23:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20101201171814.GC6439@ikki.ethgen.de>
2010-12-01 18:50 ` [RFC/PATCH] Re: git submodule -b ... of current HEAD fails Jonathan Nieder
2010-12-02 21:11 ` Jens Lehmann
2010-12-03 1:16 ` Mark Levedahl
2010-12-03 1:21 ` Ben Jackson
2010-12-03 7:10 ` Jonathan Nieder
2010-12-04 23:27 ` [PATCH] git submodule: Remove now obsolete tests before cloning a repo Jens Lehmann
2010-12-07 22:57 ` [RFC/PATCH] Re: git submodule -b ... of current HEAD fails Junio C Hamano
2010-12-08 21:35 ` Jens Lehmann
2010-12-08 23:19 ` Jens Lehmann [this message]
2010-12-08 23:45 ` [PATCH] " Jonathan Nieder
2010-12-28 21:42 ` [RFC/PATCH] " Junio C Hamano
2010-12-29 0:05 ` Jens Lehmann
2010-12-29 0:34 ` Junio C Hamano
2010-12-29 9:04 ` Jens Lehmann
2010-12-29 20:53 ` Re* " Junio C Hamano
[not found] ` <4D1BB26D.1010502@web.de>
2010-12-29 22:23 ` Jens Lehmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D001292.3020503@web.de \
--to=jens.lehmann@web.de \
--cc=Klaus@Ethgen.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=mlevedahl@gmail.com \
--cc=skimo@kotnet.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).