Re: [PATCH] Make cg-clone handle local directories as sources
- From
- Ryan Anderson <ryan@michonline.com>
- Date
- Apr 29, 2005, 22:17 UTC
- Message-ID
- <20050429221710.GH1233@mythryan2.michonline.com>
- In-Reply-To
- <20050429215928.GF1233@mythryan2.michonline.com>
cg-clone is described as only being used with remote repositories, but it has the nice feature of creating the destination directory for you.
This patch adds two features:
1. A destination directory can (optionally) be specified.
2. The source directory can be in the local file system.The following, for example, now works:
cg-clone rsync://rsync.kernel.org/pub/scm/cogito/cogito.git
mkdir test ; cd test
cg-clone ../cogito ../cogito2/(This version of the patch actually doesn't break existing functionality.)
Index: cg-clone =================================================================== --- c3aa1e6b53cc59d5fbe261f3f859584904ae3a63/cg-clone (mode:100755 sha1:4ee0685c358e094c5350b3968d013105da6ddf7e) +++ 3dc3edca08f66f90147d0cb2240274072fa8644a/cg-clone (mode:100755 sha1:e42237e0408bc3f34cc70a956c29df1251bd1571) @@ -11,13 +11,25 @@ . cg-Xlib location=$1 -[ "$location" ] || die "usage: cg-clone SOURCE_LOC" +[ "$location" ] || die "usage: cg-clone SOURCE_LOC [DEST_LOC]" location=${location%/} -dir=${location##*/}; dir=${dir%.git} +if [ "$2" == "" ]; then + dir=${location##*/}; dir=${dir%.git} +else + dir=$2 +fi + +pwd=$(pwd) +if ! echo "$location" | grep -q ":" ; then + relative_location=$(echo "$location" | sed -e "s#^[^/]#$pwd\/&#") +else + relative_location="$location" +fi + [ -e "$dir" ] && die "$dir/ already exists" mkdir "$dir" cd "$dir" -cg-init $location || exit $? +cg-init "$relative_location" || exit $? echo "Cloned to $dir/ (origin $location available as branch \"origin\")"