contains no other registered repositories, it will stay in that directory,
and work on only that repository,
-The predefined commands should be fairly familiar to users of any revision
+These predefined commands should be fairly familiar to users of any revision
control system:
=over 4
Show the commit log.
+=back
+
+These commands are also available:
+
+=over 4
+
=item list (or ls)
List the repositories that mr will act on.
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
my $directory=getcwd();
my $config="$ENV{HOME}/.mrconfig";
my $verbose=0;
+my $stats=0;
my %config;
my %knownactions;
my %alias;
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".
}
}
else {
+ if ($action eq 'checkout' && ! -d $dir) {
+ print STDERR "mr $action: $dir missing after checkout\n";;
+ push @failed, $dir;
+ return;
+ }
+
push @ok, $dir;
}
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;
}
# 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}} };