From: Linus Torvalds Date: Fri, 8 Jul 2005 22:46:33 +0000 (-0700) Subject: Make "git clone" a lot more user-friendly X-Git-Tag: v0.99~20 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ba375acff7692cbca16f7cc2e69b71563188ab7f?hp=51cb06c36de67007f3464d864f63d93213fcaf86 Make "git clone" a lot more user-friendly This silently adds the ".git" directory component if needed, so you don't need to state it explicitly for the source. Also, it turns the source into an absolute pathname when local, so that you can use relative pathnames without losing sight of the source when we cd into the destination. --- diff --git a/git-clone-script b/git-clone-script index 4f80ade21c..19697427ec 100755 --- a/git-clone-script +++ b/git-clone-script @@ -10,6 +10,10 @@ usage() { exit 1 } +get_repo_base() { + (cd "$1" && (cd .git ; pwd)) 2> /dev/null +} + use_local=no while case "$#,$1" in @@ -22,7 +26,15 @@ do shift done +# Turn the source into an absolute path if +# it is local repo="$1" +local=no +if base=$(get_repo_base "$repo"); then + repo="$base" + local=yes +fi + dir="$2" mkdir "$dir" && D=$( @@ -31,8 +43,8 @@ D=$( test -d "$D" || usage # We do local magic only when the user tells us to. -case "$use_local" in -yes) +case "$local,$use_local" in +yes,yes) ( cd "$repo/objects" ) || { repo="$repo/.git" ( cd "$repo/objects" ) || {