-#!/usr/bin/perl
+#!/usr/bin/env perl
=head1 NAME
-mr - a Multiple Repository management tool
+mr - a tool to manage all your version control repos
=head1 SYNOPSIS
B<mr> [options] log
+B<mr> [options] grep pattern
+
B<mr> [options] run command [param ...]
B<mr> [options] bootstrap url [directory]
=head1 DESCRIPTION
-B<mr> is a Multiple Repository management tool. It can checkout, update, or
-perform other actions on a set of repositories as if they were one combined
-repository. It supports any combination of subversion, git, cvs, mercurial,
-bzr, darcs, fossil and veracity repositories, and support for other version
-control systems can easily be added.
+B<mr> is a tool to manage all your version control repos. It can checkout,
+update, or perform other actions on a set of repositories as if they were
+one combined repository. It supports any combination of subversion, git,
+cvs, mercurial, bzr, darcs, fossil and veracity repositories, and support
+for other version control systems can easily be added.
B<mr> cds into and operates on all registered repositories at or below your
working directory. Or, if you are in a subdirectory of a repository that
Show the commit log.
+=item grep pattern
+
+Searches for a pattern in each repository using the grep subcommand. Uses
+ack-grep on VCS that do not have their own.
+
=item run command [param ...]
Runs the specified command in each repository.
Licensed under the GNU GPL version 2 or higher.
-http://kitenet.net/~joey/code/mr/
+http://myrepos.branchable.com/
=cut
while (@lines) {
$_=$nextline->();
+ next if /^\s*\#/ || /^\s*$/;
+
if (! $trusted && /[[:cntrl:]]/) {
$trusterror->("illegal control character");
}
- next if /^\s*\#/ || /^\s*$/;
if (/^\[([^\]]*)\]\s*$/) {
$section=$1;
svn_status = svn status "$@"
git_status = git status -s "$@" || true; git --no-pager log --branches --not --remotes --simplify-by-decoration --decorate --oneline || true
bzr_status = bzr status --short "$@"; bzr missing
-cvs_status = cvs status "$@"
+cvs_status = cvs -q status | grep -E '^(File:.*Status:|\?)' | grep -v 'Status: Up-to-date'
hg_status = hg status "$@"; hg summary --quiet | grep -v 'parent: 0:'
darcs_status = darcs whatsnew -ls "$@" || true
fossil_status = fossil changes "$@"
bzr commit "$@" && bzr push
fi
cvs_commit = cvs commit "$@"
-hg_commit = hg commit -m "$@" && hg push
-darcs_commit = darcs record -a -m "$@" && darcs push -a
+hg_commit = hg commit "$@" && hg push
+darcs_commit = darcs record -a "$@" && darcs push -a
fossil_commit = fossil commit "$@"
vcsh_commit = vcsh run "$MR_REPO" git commit -a "$@" && vcsh run "$MR_REPO" git push --all
-veracity_commit = vv commit -m "@" && vv push
+veracity_commit = vv commit "$@" && vv push
git_record = git commit -a "$@"
bzr_record =
else
bzr commit "$@"
fi
-hg_record = hg commit -m "$@"
-darcs_record = darcs record -a -m "$@"
+hg_record = hg commit "$@"
+darcs_record = darcs record -a "$@"
fossil_record = fossil commit "$@"
vcsh_record = vcsh run "$MR_REPO" git commit -a "$@"
-veracity_record = vv commit -m "@"
+veracity_record = vv commit "$@"
svn_push = :
git_push = git push "$@"
SHOWMANFILE="man"
;;
*)
- SHOWMANFILE="man -l"
+ SHOWMANFILE="man"
;;
esac
if [ ! -e "$MR_PATH" ]; then