Skip to content

Commit a902618

Browse files
peffgitster
authored andcommitted
clone: die when trying to clone missing local path
Since 86ac751 (Allow cloning an empty repository, 2009-01-23), doing: git clone does-not-exist has created does-not-exist as an empty repository. This was an unintentional side effect of 86ac751. Even weirder, doing: git clone does-not-exist new-dir _does_ fail, making this "feature" (if you want to consider it such) broken. Let's detect this situation and explicitly die. It's almost certainly not what the user intended. This patch also adds two tests. One for the missing path case, and one to confirm that a similar case, cloning a non-repository directory, fails. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7ed863a commit a902618

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

builtin/clone.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
413413
if (path)
414414
repo = xstrdup(make_nonrelative_path(repo_name));
415415
else if (!strchr(repo_name, ':'))
416-
repo = xstrdup(make_absolute_path(repo_name));
416+
die("repository '%s' does not exist", repo_name);
417417
else
418418
repo = repo_name;
419419
is_local = path && !is_bundle;

t/t5701-clone-local.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,17 @@ test_expect_success 'clone empty repository, and then push should not segfault.'
144144
test_must_fail git push)
145145
'
146146

147+
test_expect_success 'cloning non-existent directory fails' '
148+
cd "$D" &&
149+
rm -rf does-not-exist &&
150+
test_must_fail git clone does-not-exist
151+
'
152+
153+
test_expect_success 'cloning non-git directory fails' '
154+
cd "$D" &&
155+
rm -rf not-a-git-repo not-a-git-repo-clone &&
156+
mkdir not-a-git-repo &&
157+
test_must_fail git clone not-a-git-repo not-a-git-repo-clone
158+
'
159+
147160
test_done

0 commit comments

Comments
 (0)