Code

git-clone: Keep remote names when cloning unless explicitly told not to.
authorAndreas Ericsson <exon@op5.se>
Thu, 10 Nov 2005 11:58:08 +0000 (12:58 +0100)
committerJunio C Hamano <junkio@cox.net>
Fri, 11 Nov 2005 09:34:26 +0000 (01:34 -0800)
With this patch the following commands all clone into the local directory
"repo". If repo exists, it will still barf.

git-clone git://host.xz/repo.git
git-clone /path/to/repo/.git
git-clone host.xz:repo.git

I ended up doing the same source-to-target sed'ing for all our company
projects, so it was easier to add it directly to git-clone.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-clone.txt
git-clone.sh

index fefd2985f3f1424ddaff24fed6b57a85b86f8acc..83f58ae5365f05297a432cbd147c496e9fff8ba1 100644 (file)
@@ -8,7 +8,7 @@ git-clone - Clones a repository.
 
 SYNOPSIS
 --------
-'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> <directory>
+'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> [<directory>]
 
 DESCRIPTION
 -----------
@@ -68,9 +68,11 @@ OPTIONS
        be any URL git-fetch supports.
 
 <directory>::
-       The name of a new directory to be cloned into.  It is an
-       error to specify an existing directory.
-
+       The name of a new directory to clone into.  The "humanish"
+       part of the source repository is used if no directory is
+       explicitly given ("repo" for "/path/to/repo.git" and "foo"
+       for "host.xz:foo/.git").  Cloning into an existing directory
+       is not allowed.
 
 Author
 ------
@@ -78,7 +80,7 @@ Written by Linus Torvalds <torvalds@osdl.org>
 
 Documentation
 --------------
-Documentation by Junio C Hamano.
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 
 
 GIT
index f5ef70b8afa792671f5aa6e4dd752e63c376c6dd..8e7150127aff222059f3549a8b7f647b8f792c7d 100755 (executable)
@@ -96,6 +96,8 @@ if base=$(get_repo_base "$repo"); then
 fi
 
 dir="$2"
+# Try using "humanish" part of source repo if user didn't specify one
+[ -z "$dir" ] && dir=$(echo "$repo" | sed -e 's|/$||' -e 's|:*/*\.git$||' -e 's|.*/||g')
 mkdir "$dir" &&
 D=$(
        (cd "$dir" && git-init-db && pwd)