]> git.madduck.net Git - code/myrepos.git/blobdiff - mr

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

mr bootstrap: Now supports ssh:// urls.
[code/myrepos.git] / mr
diff --git a/mr b/mr
index cb4ff43b23d97adcb8daf138797adaf9722e37d4..60801f6a760144aeae9091602e1fa7a3b861eac5 100755 (executable)
--- a/mr
+++ b/mr
@@ -116,8 +116,10 @@ These commands are also available:
 
 =item bootstrap url [directory]
 
-Causes mr to download the url, and use it as a .mrconfig file
-to checkout the repositories listed in it, into the specified directory.
+Causes mr to download the url, and use it as a .mrconfig file to checkout
+the repositories listed in it, into the specified directory.
+
+To use scp to download, the url may have the form ssh://[user@]host:file
 
 The directory will be created if it does not exist. If no directory is
 specified, the current directory will be used.
@@ -1661,11 +1663,18 @@ sub bootstrap {
        eval q{use File::Temp};
        die $@ if $@;
        my $tmpconfig=File::Temp->new();
-       my @curlargs = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
-       push(@curlargs, "-k") if $insecure;
-       my $curlstatus = system(@curlargs);
-       die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n" if $curlstatus >> 8 == 60;
-       die "mr bootstrap: download of $url failed\n" if $curlstatus != 0;
+       my @downloader;
+       if ($url =~ m!^ssh://(.*)!) {
+               @downloader = ("scp", $1, $tmpconfig);
+       }
+       else {
+               @downloader = ("curl", "-A", "mr", "-L", "-s", $url, "-o", $tmpconfig);
+               push(@downloader, "-k") if $insecure;
+       }
+       my $status = system(@downloader);
+       die "mr bootstrap: invalid SSL certificate for $url (consider -k)\n"
+               if $downloader[0] eq 'curl' && $status >> 8 == 60;
+       die "mr bootstrap: download of $url failed\n" if $status != 0;
 
        if (! -e $dir) {
                system("mkdir", "-p", $dir);
@@ -1866,7 +1875,7 @@ lib =
        }
 
 svn_test = perl: -d "$ENV{MR_REPO}/.svn"
-git_test = perl: -d "$ENV{MR_REPO}/.git"
+git_test = perl: -e "$ENV{MR_REPO}/.git"
 bzr_test = perl: -d "$ENV{MR_REPO}/.bzr"
 cvs_test = perl: -d "$ENV{MR_REPO}/CVS"
 hg_test  = perl: -d "$ENV{MR_REPO}/.hg"
@@ -1890,7 +1899,7 @@ bzr_update =
        else
                bzr merge --pull "$@"
        fi
-cvs_update = cvs update "$@"
+cvs_update = cvs -q update "$@"
 hg_update  = hg pull "$@"; hg update "$@"
 darcs_update = darcs pull -a "$@"
 fossil_update = fossil pull "$@"
@@ -1948,7 +1957,7 @@ veracity_push = vv push "$@"
 svn_diff = svn diff "$@"
 git_diff = git diff "$@"
 bzr_diff = bzr diff "$@"
-cvs_diff = cvs diff "$@"
+cvs_diff = cvs -q diff "$@"
 hg_diff  = hg diff "$@"
 darcs_diff = darcs diff -u "$@"
 fossil_diff = fossil diff "$@"
@@ -1983,7 +1992,7 @@ git_register =
        echo "Registering git url: $url in $MR_CONFIG"
        mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
 bzr_register =
-       url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}'`"
+       url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}' | head -n 1`"
        if [ -z "$url" ]; then
                error "cannot determine bzr url"
        fi