Subject: Re: [PATCHv2] clone: support cloning full bundles

From: Junio C Hamano <[email-masked]>
Date: Wed, 27 Feb 2008 14:44:33 -0800

Santi Béjar <[email-masked]> writes:

> Signed-off-by: Santi Béjar <[email-masked]>
> diff --git a/git-clone.sh b/git-clone.sh
> index 0d686c3..2efb947 100755
> --- a/git-clone.sh
> +++ b/git-clone.sh
> @@ -210,11 +210,14 @@ if base=$(get_repo_base "$repo"); then
>  	then
>  		local=yes
>  	fi
> +elif [ -f "$repo" ] ; then
> +	case "$repo" in /*);; *) repo="$PWD/$repo" ; esac
>  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')
> +[ -f "$dir" ] && dir=$(expr "$repo" : '.*/\([^/]*\)\.[^/]*')
>  [ -e "$dir" ] && die "destination directory '$dir' already exists."
>  [ yes = "$bare" ] && unset GIT_WORK_TREE
>  [ -n "$GIT_WORK_TREE" ] && [ -e "$GIT_WORK_TREE" ] &&

What is this [ -f "$dir" ] line doing?  The purpose of these
lines is:

 - The user (might have) said "clone to $2";

 - If the user didn't, then set dir to humanish part;

 - If that exists, we barf.

I do not see any valid reason for an additional logic in this
sequence when adding a new clone _source_ type.

The check to see if "$dir" _exists_ is even worse.  If the user
said "clone _to_ this", then we would not have invented $dir
based on the $repo (which is what the user said "clone _from_")
but used whatever name the user has given us.  The existing
check to barf "Hey, that explicit location you told me to clone
to is WRONG!!!" should not be broken.