]> git.madduck.net Git - code/myrepos.git/commitdiff

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.
authorJoey Hess <joey@kitenet.net>
Thu, 5 Jul 2012 15:08:23 +0000 (09:08 -0600)
committerJoey Hess <joey@kitenet.net>
Thu, 5 Jul 2012 15:08:23 +0000 (09:08 -0600)
debian/changelog
mr

index c5c31f8596ba4ed5ac3643b4ff486397a18c0baf..a1dca16ec64a4f2dea89d21261b39de4453723dd 100644 (file)
@@ -1,6 +1,7 @@
 mr (1.13) UNRELEASED; urgency=low
 
   * Pass -q to cvs diff and update. Closes: #673367
 mr (1.13) UNRELEASED; urgency=low
 
   * Pass -q to cvs diff and update. Closes: #673367
+  * mr bootstrap: Now supports ssh:// urls.
 
  -- Joey Hess <joeyh@debian.org>  Fri, 18 May 2012 12:27:45 -0400
 
 
  -- Joey Hess <joeyh@debian.org>  Fri, 18 May 2012 12:27:45 -0400
 
diff --git a/mr b/mr
index 21d267739d2f5a1fe90aa1e925918d4efc22b52b..60801f6a760144aeae9091602e1fa7a3b861eac5 100755 (executable)
--- a/mr
+++ b/mr
@@ -116,8 +116,10 @@ These commands are also available:
 
 =item bootstrap url [directory]
 
 
 =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.
 
 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();
        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);
 
        if (! -e $dir) {
                system("mkdir", "-p", $dir);