X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f2cabdb155025f5441df135c91e39abf1c4c3756..01faa6757d7012e3b9126cc02e8ac10502864526:/mr?ds=sidebyside

diff --git a/mr b/mr
index f7509c9..1f01803 100755
--- a/mr
+++ b/mr
@@ -115,9 +115,6 @@ specified, the current directory will be used.
 If the .mrconfig file includes a repository named ".", that
 is checked out into the top of the specified directory.
 
-To bootstrap from a SSL url with an untrusted certificate, you may
-need to specify the -k option.
-
 =item list (or ls)
 
 List the repositories that mr will act on.
@@ -790,6 +787,15 @@ sub repolist {
 	} @list;
 }
 
+sub repodir {
+	my $repo=shift;
+	my $topdir=$repo->{topdir};
+	my $subdir=$repo->{subdir};
+	my $ret=($subdir =~/^\//) ? $subdir : $topdir.$subdir;
+	$ret=~s/\/\.$//;
+	return $ret;
+}
+
 # figure out which repos to act on
 sub selectrepos {
 	my @repos;
@@ -798,7 +804,7 @@ sub selectrepos {
 		my $subdir=$repo->{subdir};
 
 		next if $subdir eq 'DEFAULT';
-		my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir;
+		my $dir=repodir($repo);
 		my $d=$directory;
 		$dir.="/" unless $dir=~/\/$/;
 		$d.="/" unless $d=~/\/$/;
@@ -818,7 +824,7 @@ sub selectrepos {
 			my $subdir=$repo->{subdir};
 			
 			next if $subdir eq 'DEFAULT';
-			my $dir=($subdir =~/^\//) ? $subdir : $topdir.$subdir;
+			my $dir=repodir($repo);
 			my $d=$directory;
 			$dir.="/" unless $dir=~/\/$/;
 			$d.="/" unless $d=~/\/$/;
@@ -1031,6 +1037,12 @@ sub loadconfig {
 				}
 			}
 			$section=expandenv($section) if $trusted;
+			if ($section ne 'ALIAS' &&
+			    ! exists $config{$dir}{$section} &&
+			    exists $config{$dir}{DEFAULT}) {
+				# copy in defaults
+				$config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} };
+			}
 		}
 		elsif (/^(\w+)\s*=\s*(.*)/) {
 			my $parameter=$1;
@@ -1067,12 +1079,6 @@ sub loadconfig {
 			if (! defined $section) {
 				die "$f line $.: parameter ($parameter) not in section\n";
 			}
-			if ($section ne 'ALIAS' &&
-			    ! exists $config{$dir}{$section} &&
-			    exists $config{$dir}{DEFAULT}) {
-				# copy in defaults
-				$config{$dir}{$section}={ %{$config{$dir}{DEFAULT}} };
-			}
 			if ($section eq 'ALIAS') {
 				$alias{$parameter}=$value;
 			}
@@ -1353,7 +1359,7 @@ sub bootstrap {
 	eval q{use File::Temp};
 	die $@ if $@;
 	my $tmpconfig=File::Temp->new();
-	my @curlargs = ("curl", "-A", "mr", "-s", $url, "-o", $tmpconfig);
+	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;
@@ -1436,7 +1442,7 @@ sub getopts {
 		"v|verbose" => \$verbose,
 		"q|quiet" => \$quiet,
 		"s|stats" => \$stats,
-		"k|insecure" => \$insecure,   
+		"k|insecure" => \$insecure,
 		"i|interactive" => \$interactive,
 		"n|no-recurse:i" => \$max_depth,
 		"j|jobs:i" => \$jobs,
@@ -1541,10 +1547,10 @@ lib =
 		fi
 		delta=`perl -wle 'print -f shift() ? int((-M _) * 24) : 9999' "$flagfile"`
 		if [ "$delta" -lt "$2" ]; then
-			exit 0
+			return 1
 		else
 			touch "$flagfile"
-			exit 1
+			return 0
 		fi
 	}