Make "git clone" a lot more user-friendly
authorLinus Torvalds <torvalds@g5.osdl.org>
Fri, 8 Jul 2005 22:46:33 +0000 (15:46 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 8 Jul 2005 22:46:33 +0000 (15:46 -0700)
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.

git-clone-script

index 4f80ade..1969742 100755 (executable)
@@ -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" ) || {