B<mr> [options] diff
+B<mr> [options] log
+
B<mr> [options] action [params ...]
=head1 DESCRIPTION
Any mix of revision control systems can be used with B<mr>, and you can
define arbitrary actions for commands like "update", "checkout", or "commit".
+B<mr> cds into and operates on all registered repsitories at or below your
+working directory. Or, if you are in a subdirectory of a repository that
+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
control system:
Show a diff of uncommitted changes.
-=item list
+=item log
+
+Show the commit log.
+
+=item list (or ls)
List the repositories that mr will act on.
=back
Actions can be abbreviated to any unambiguous subsctring, so
-"mr st" is equivilant to "mr status".
-
-B<mr> operates on all registered repsitories at or below your working
-directory. Or, if you are in a subdirectory of a repository that contains
-no other registered repositories, it will act on only that repository.
+"mr st" is equivilant to "mr status", and "mr up" is equivilant to "mr
+update"
Additional parameters can be passed to other commands than "commit", they
will be passed on unchanged to the underlying revision control system.
=item -c mrconfig
-Use the specified mrconfig file, instead of looking for on in your home
+Use the specified mrconfig file, instead of looking for one in your home
directory.
=item -v
if (@matches == 1) {
$action=$matches[0];
}
+ elsif (@matches == 0) {
+ die "mr: unknown action \"$action\" (known actions: ".
+ join(", ", sort keys %knownactions).")\n";
+ }
else {
- die "mr: ambiguous action \"$action\" (matches @matches)\n";
+ die "mr: ambiguous action \"$action\" (matches: ".
+ join(", ", @matches).")\n";
}
}
}
push @skipped, $dir;
}
else {
- print "mr $action: $dir\n";
+ if (! $nochdir) {
+ print "mr $action: $dir\n";
+ }
+ else {
+ print "mr $action: $dir (in subdir $directory)\n";
+ }
my $command="set -e; ".$lib.
"my_action(){ $config{$topdir}{$subdir}{$action} ; }; my_action ".
join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV);
[alias]
co = checkout
ci = commit
+ ls = list
[default]
lib = \
error() { \
else \
error "unknown repo type"; \
fi
+log = \
+ if [ -d "$MR_REPO"/.svn ]; then \
+ svn log"$@"; \
+ elif [ -d "$MR_REPO"/.git ]; then \
+ git log "$@"; \
+ else \
+ error "unknown repo type"; \
+ fi
list = true
help = \
if [ ! -e "$MR_PATH" ]; then \