threads / patch / 2426

patch, 2 partsgit-clone: Keep remote names when cloning unless explicitly told not to.

Subject: [PATCH 1/2] git-clone: Keep remote names when cloning unless explicitly told not to.

## tl;dr

3 messages between Nov 10, 2005 and Nov 10, 2005. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Andreas Ericsson· Nov 10, 2005, 11:58 UTC · lore

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>
---
 Documentation/git-clone.txt |   12 +++++++-----
 git-clone.sh                |    2 ++
 2 files changed, 9 insertions(+), 5 deletions(-)

applies-to: 6466c53ae80cddbb581c5fdb2332f9321fade867 fe6fb0e830253803798a2b70222d72e4107db1c1

Show changes to 2 files +9 −5

Documentation/git-clone.txt, git-clone.sh

diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index fefd298..83f58ae 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -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
 
 Documentation
 --------------
-Documentation by Junio C Hamano.
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 
 
 GIT
diff --git a/git-clone.sh b/git-clone.sh
index 4fdd652..70cf7a2 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -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#/*\.git$##' -e 's#.*[/:]##')
 mkdir "$dir" &&
 D=$(
 	(cd "$dir" && git-init-db && pwd)
---
0.99.9.GIT
Junio C Hamano· Nov 10, 2005, 17:15 UTC · re: Andreas Ericsson · lore

Re: [PATCH 1/2] git-clone: Keep remote names when cloning unless explicitly told not to.

exon@op5.se (Andreas Ericsson) writes:
Show 8 quoted lines
> +	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.
>  
> +# Try using "humanish" part of source repo if user didn't specify one
> +[ -z "$dir" ] && dir=$(echo "$repo" | sed -e 's#/*\.git$##' -e 's#.*[/:]##')

Micronit; if I version control contents of my home directory on host.xz [*1*] under git, I would say host.xz:.git/ when cloning it, wouldn't I?

Maybe we would want to check if the resulting $dir makes sense after this step.

[Footnote]

*1* ... I wouldn't personally, but some people are known to do that.

Andreas Ericsson· Nov 10, 2005, 17:49 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/2] git-clone: Keep remote names when cloning unless explicitly told not to.

Junio C Hamano wrote:
Show 10 quoted lines
> exon@op5.se (Andreas Ericsson) writes:
> 
>>+# Try using "humanish" part of source repo if user didn't specify one
>>+[ -z "$dir" ] && dir=$(echo "$repo" | sed -e 's#/*\.git$##' -e 's#.*[/:]##')
> 
> 
> Micronit; if I version control contents of my home directory on
> host.xz [*1*] under git, I would say host.xz:.git/ when cloning
> it, wouldn't I?
> 
Gah. Does anyone do that?
Anyways,
	sed -e 's#:*/*\.git$##' -e 's#.*[/:]##'
would turn that into "host.xz", so that should work real nice like, I 
suppose.
> Maybe we would want to check if the resulting $dir makes sense
> after this step.
> 

Perhaps, but this would lead to mkdir complaining about the empty directory name, so it's no worse than the current code. The sane user then looks at the help output and determines that he needs to specify a target directory.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

← back to recent threads