threads / discuss / 40541

Add submodule specifying depth and branch at the same time won't work

Subject: Add submodule specifying depth and branch at the same time won't work

## tl;dr

3 messages between Oct 12, 2015 and Oct 12, 2015.

replies: 2people: 2as markdown or json

Carlos Pita· Oct 12, 2015, 19:48 UTC · lore
For example, I can do:
git clone --depth 1 --branch devel git@gitlab.com:memeplex/bash.git
But if I try:
git submodule add --depth 1 -b devel git@gitlab.com:memeplex/bash.git
I get:

fatal: Cannot update paths and switch to branch 'devel' at the same time. Did you intend to checkout 'origin/devel' which can not be resolved as commit? Unable to checkout submodule 'src/aur/bash'

I think the devel branch is left outside the update because depth is just 1, but then the same could be said for the clone, which just works. The request should be interpreted as depth 1 inside devel branch.

Stefan Beller· Oct 12, 2015, 21:36 UTC · re: Carlos Pita · lore

[PATCH] submodule: Test a shallow branch

Instead of tracking the submodule at the specified branch, using a shallow clone, we get the following error:

fatal: Cannot update paths and switch to branch 'anotherbranch' at the same time. Did you intend to checkout 'origin/anotherbranch' which can not be resolved as commit? Unable to checkout submodule 'submodule'

Noticed-by: Carlos Pita <carlosjosepita@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 Hi Carlos,
 
 I can reproduce your issue and have a patch which we can add to the
 testing suite to document this faulty behavior.
 
 Thanks,
 Stefan
 t/t7400-submodule-basic.sh | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 540771c..cee74cb 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -846,7 +846,8 @@ test_expect_success 'submodule add with an existing name fails unless forced' '
 
 test_expect_success 'set up a second submodule' '
 	git submodule add ./init2 example2 &&
-	git commit -m "submodule example2 added"
+	git commit -m "submodule example2 added" &&
+	git checkout -b anotherbranch
 '
 
 test_expect_success 'submodule deinit should remove the whole submodule section from .git/config' '
@@ -987,6 +988,7 @@ test_expect_success 'submodule with UTF-8 name' '
 
 test_expect_success 'submodule add clone shallow submodule' '
 	mkdir super &&
+	test_when_finished "rm -rf super" &&
 	pwd=$(pwd) &&
 	(
 		cd super &&
@@ -999,5 +1001,21 @@ test_expect_success 'submodule add clone shallow submodule' '
 	)
 '
 
+test_expect_failure 'submodule add a shallow branch' '
+	mkdir super &&
+	test_when_finished "rm -rf super" &&
+	pwd=$(pwd) &&
+	(
+		cd super &&
+		git init &&
+		git submodule add --depth=1 --branch anotherbranch file://"$pwd"/example2 submodule &&
+		(
+			cd submodule &&
+			test 1 = $(git log --oneline | wc -l)
+		)
+	)
+'
+
+
 
 test_done
-- 
2.5.0.268.g453a26a
Stefan Beller· Oct 12, 2015, 21:59 UTC · re: Stefan Beller · lore

Fwd: [PATCH] submodule: Test a shallow branch

I forgot to CC you guys.
---------- Forwarded message ----------
From: Stefan Beller <sbeller@google.com>
Date: Mon, Oct 12, 2015 at 2:36 PM
Subject: [PATCH] submodule: Test a shallow branch
To: gitster@pobox.com
Cc: git@vger.kernel.org, carlosjosepita@gmail.com, Stefan Beller
<sbeller@google.com>

Instead of tracking the submodule at the specified branch, using a shallow clone, we get the following error:

fatal: Cannot update paths and switch to branch 'anotherbranch' at the same time. Did you intend to checkout 'origin/anotherbranch' which can not be resolved as commit? Unable to checkout submodule 'submodule'

Noticed-by: Carlos Pita <carlosjosepita@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 Hi Carlos,
 I can reproduce your issue and have a patch which we can add to the
 testing suite to document this faulty behavior.
 Thanks,
 Stefan
 t/t7400-submodule-basic.sh | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 540771c..cee74cb 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -846,7 +846,8 @@ test_expect_success 'submodule add with an
existing name fails unless forced' '

 test_expect_success 'set up a second submodule' '
        git submodule add ./init2 example2 &&
-       git commit -m "submodule example2 added"
+       git commit -m "submodule example2 added" &&
+       git checkout -b anotherbranch
 '

 test_expect_success 'submodule deinit should remove the whole
submodule section from .git/config' '
@@ -987,6 +988,7 @@ test_expect_success 'submodule with UTF-8 name' '

 test_expect_success 'submodule add clone shallow submodule' '
        mkdir super &&
+       test_when_finished "rm -rf super" &&
        pwd=$(pwd) &&
        (
                cd super &&
@@ -999,5 +1001,21 @@ test_expect_success 'submodule add clone shallow
submodule' '
        )
 '

+test_expect_failure 'submodule add a shallow branch' '
+       mkdir super &&
+       test_when_finished "rm -rf super" &&
+       pwd=$(pwd) &&
+       (
+               cd super &&
+               git init &&
+               git submodule add --depth=1 --branch anotherbranch
file://"$pwd"/example2 submodule &&
+               (
+                       cd submodule &&
+                       test 1 = $(git log --oneline | wc -l)
+               )
+       )
+'
+
+

 test_done
--
2.5.0.268.g453a26a

← back to recent threads