summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-04-23 10:53:47 -0700
committerJunio C Hamano <gitster@pobox.com>2008-04-27 21:47:39 -0700
commita2b26acd7afb4d77d8844ccd681e993f25e75205 (patch)
treec224e3cfdbd8bab90ff9216e22b9104e413e83e6
parent5736a3747120d6215de4fdfcf45f4a168a8d024e (diff)
downloadgit-a2b26acd7afb4d77d8844ccd681e993f25e75205.tar.gz
clone: detect and fail on excess parameters
"git clone [options] $src $dst excess-garbage" simply ignored excess-garbage without giving any diagnostic message. Fix it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-clone.sh1
-rwxr-xr-xt/t5601-clone.sh26
2 files changed, 27 insertions, 0 deletions
diff --git a/git-clone.sh b/git-clone.sh
index 2636159aaa..9e433c0808 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -219,6 +219,7 @@ fi
if test -n "$2"
then
dir="$2"
+ test $# == 2 || die "excess parameter to git-clone"
else
# Derive one from the repository name
# Try using "humanish" part of source repo if user didn't specify one
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
new file mode 100755
index 0000000000..dc9d63dbf9
--- /dev/null
+++ b/t/t5601-clone.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+test_description=clone
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ rm -fr .git &&
+ test_create_repo src &&
+ (
+ cd src
+ >file
+ git add file
+ git commit -m initial
+ )
+
+'
+
+test_expect_success 'clone with excess parameters' '
+
+ test_must_fail git clone -n "file://$(pwd)/src" dst junk
+
+'
+
+test_done