B<mr> [options] record [-m "message"]
+B<mr> [options] push
+
B<mr> [options] diff
B<mr> [options] log
files providing such extensions are available in /usr/share/mr/. See
the documentation in the files for details about using them.
+=head1 EXIT STATUS
+
+mr returns nonzero if a command failed in any of the repositories.
+
=head1 AUTHOR
Copyright 2007-2010 Joey Hess <joey@kitenet.net>
chomp $rcs;
if ($rcs=~/\n/s) {
$rcs=~s/\n/, /g;
- print STDERR "mr $action: found multiple possible repository types ($rcs) for $topdir$subdir\n";
+ print STDERR "mr $action: found multiple possible repository types ($rcs) for ".fulldir($topdir, $subdir)."\n";
return undef;
}
if (! length $rcs) {
}
}
+sub fulldir {
+ my ($topdir, $subdir) = @_;
+ return $subdir =~ /^\// ? $subdir : $topdir.$subdir;
+}
+
sub action {
my ($action, $dir, $topdir, $subdir, $force_checkout) = @_;
-
+ my $fulldir=fulldir($topdir, $subdir);
+
$ENV{MR_CONFIG}=$configfiles{$topdir};
my $lib=exists $config{$topdir}{$subdir}{lib} ?
$config{$topdir}{$subdir}{lib}."\n" : "";
elsif (! defined $command) {
my $rcs=rcs_test(@_);
if (! defined $rcs) {
- print STDERR "mr $action: unknown repository type and no defined $action command for $topdir$subdir\n";
+ print STDERR "mr $action: unknown repository type and no defined $action command for $fulldir\n";
return FAILED;
}
else {
- print STDERR "mr $action: no defined action for $rcs repository $topdir$subdir, skipping\n";
+ print STDERR "mr $action: no defined action for $rcs repository $fulldir, skipping\n";
return SKIPPED;
}
}
else {
if (! $no_chdir) {
- print "mr $action: $topdir$subdir\n" unless $quiet;
+ print "mr $action: $fulldir\n" unless $quiet;
}
else {
my $s=$directory;
- $s=~s/^\Q$topdir$subdir\E\/?//;
- print "mr $action: $topdir$subdir (in subdir $s)\n" unless $quiet;
+ $s=~s/^\Q$fulldir\E\/?//;
+ print "mr $action: $fulldir (in subdir $s)\n" unless $quiet;
}
my $hookret=hook("pre_$action", $topdir, $subdir);
if (@failed) {
exit 1;
}
- elsif (! @ok && @skipped) {
- exit 1;
- }
else {
exit 0;
}