X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/d9b82cdd522cbd05dbffa5b72037415407bc46f6..e5dd85021198561461d46c50b41a927ef9e6050a:/mr?ds=sidebyside diff --git a/mr b/mr index e29e367..310f99a 100755 --- a/mr +++ b/mr @@ -138,6 +138,11 @@ directory. Be verbose. +=item -s + +Expand the statistics line displayed at the end to include information +about exactly which repositories failed and were skipped, if any. + =back =head1 FILES @@ -245,6 +250,7 @@ use Cwd qw(getcwd abs_path); my $directory=getcwd(); my $config="$ENV{HOME}/.mrconfig"; my $verbose=0; +my $stats=0; my %config; my %knownactions; my %alias; @@ -253,7 +259,8 @@ Getopt::Long::Configure("no_permute"); my $result=GetOptions( "d|directory=s" => sub { $directory=abs_path($_[1]) }, "c|config=s" => \$config, - "verbose" => \$verbose, + "v|verbose" => \$verbose, + "s|stats" => \$stats, ); if (! $result || @ARGV < 1) { die("Usage: mr [-d directory] action [params ...]\n". @@ -455,6 +462,12 @@ sub action { #{{{ } } else { + if ($action eq 'checkout' && ! -d $dir) { + print STDERR "mr $action: $dir missing after checkout\n";; + push @failed, $dir; + return; + } + push @ok, $dir; } @@ -479,6 +492,14 @@ print "mr $action: finished (".join("; ", showstat($#failed+1, "failed", "failed"), showstat($#skipped+1, "skipped", "skipped"), ).")\n"; +if ($stats) { + if (@skipped) { + print "mr $action: (skipped: ".join(" ", @skipped).")\n"; + } + if (@failed) { + print "mr $action: (failed: ".join(" ", @failed).")\n"; + } +} if (@failed) { exit 1; } @@ -518,7 +539,10 @@ sub loadconfig { #{{{ # copy in defaults from first parent my $parent=$dir; - while ($parent=~s/^(.*)\/[^\/]+\/?$/$1/) { + while ($parent=~s/^(.*\/)[^\/]+\/?$/$1/) { + if ($parent eq '/') { + $parent=""; + } if (exists $config{$parent} && exists $config{$parent}{DEFAULT}) { $config{$dir}{DEFAULT}={ %{$config{$parent}{DEFAULT}} };