Fix clone to setup the origin if its name ends with .git
authorAlex Riesen <raa.lkml@gmail.com>
Wed, 6 Jun 2007 23:39:05 +0000 (16:39 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Jun 2007 23:40:03 +0000 (16:40 -0700)
The problem is visible when cloning a local repo. The cloned
repository will have the origin url setup incorrectly: the origin name
will be copied verbatim in origin url of the cloned repository.
Normally, the name is to be expanded into absolute path.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-clone.sh
t/t5701-clone-local.sh [new file with mode: 0755]

index fdd354f2da1978241a3e79a47a067496150cc1bc..d45618d9afe203d103cb6cdcbd66e23b0dc42932 100755 (executable)
@@ -20,7 +20,7 @@ usage() {
 get_repo_base() {
        (
                cd "`/bin/pwd`" &&
-               cd "$1" &&
+               cd "$1" || cd "$1.git" &&
                {
                        cd .git
                        pwd
diff --git a/t/t5701-clone-local.sh b/t/t5701-clone-local.sh
new file mode 100755 (executable)
index 0000000..b093327
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+test_description='test local clone'
+. ./test-lib.sh
+
+D=`pwd`
+
+test_expect_success 'preparing origin repository' '
+       : >file && git add . && git commit -m1 &&
+       git clone --bare . a.git &&
+       git clone --bare . x
+'
+
+test_expect_success 'local clone without .git suffix' '
+       cd "$D" &&
+       git clone -l -s a b &&
+       cd b &&
+       git fetch
+'
+
+test_expect_success 'local clone with .git suffix' '
+       cd "$D" &&
+       git clone -l -s a.git c &&
+       cd c &&
+       git fetch
+'
+
+test_expect_success 'local clone from x' '
+       cd "$D" &&
+       git clone -l -s x y &&
+       cd y &&
+       git fetch
+'
+
+test_expect_success 'local clone from x.git that does not exist' '
+       cd "$D" &&
+       if git clone -l -s x.git z
+       then
+               echo "Oops, should have failed"
+               false
+       else
+               echo happy
+       fi
+'
+
+test_done