my %knownactions;
my %alias;
my $directory=getcwd();
+my (@ok, @failed, @skipped);
getopts();
#print Dumper(\%config);
my $action=expandaction(shift @ARGV);
-
-# actions that do not operate on all repos
-if ($action eq 'help') {
- help(@ARGV);
-}
-elsif ($action eq 'config') {
- config(@ARGV);
-}
-elsif ($action eq 'register') {
- register(@ARGV);
-}
-
-my (@ok, @failed, @skipped);
-if ($jobs > 1) {
- mrs(selectrepos());
-}
-else {
- foreach my $repo (selectrepos()) {
- record($repo, action($action, @$repo));
- }
-}
-
-showstats();
+dispatch($action);
+showstats($action);
if (@failed) {
exit 1;
elsif (! @ok && @skipped) {
exit 1;
}
-exit 0;
+else {
+ exit 0;
+}
+
+sub dispatch { #{{{
+ my $action=shift;
+
+ # actions that do not operate on all repos
+ if ($action eq 'help') {
+ help(@ARGV);
+ }
+ elsif ($action eq 'config') {
+ config(@ARGV);
+ }
+ elsif ($action eq 'register') {
+ register(@ARGV);
+ }
+
+ if ($jobs > 1) {
+ mrs($action, selectrepos());
+ }
+ else {
+ foreach my $repo (selectrepos()) {
+ record($repo, action($action, @$repo));
+ }
+ }
+} #}}}
sub rcs_test { #{{{
my ($action, $dir, $topdir, $subdir) = @_;
# run actions on multiple repos, in parallel
sub mrs { #{{{
+ my $action=shift;
my @repos=@_;
$| = 1;
[DEFAULT]
order = 10
lib =
+ PWD="$(pwd)"
error() {
echo "mr: $@" >&2
exit 1
error "cannot determine svn url"
fi
echo "Registering svn url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="svn co '$url' '$MR_REPO'"
git_register =
url="$(LANG=C git-config --get remote.origin.url)" || true
if [ -z "$url" ]; then
error "cannot determine git url"
fi
echo "Registering git url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="git clone '$url' '$MR_REPO'"
bzr_register =
url=$(cat .bzr/branch/parent)
if [ -z "$url" ]; then
error "cannot determine bzr url"
fi
echo "Registering bzr url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="bzr clone '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="bzr clone '$url' '$MR_REPO'"
cvs_register =
repo=$(cat CVS/Repository)
root=$(cat CVS/Root)
error "cannot determine cvs root"
fi
echo "Registering cvs repository $repo at root $root"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="cvs -d '$root' co -d '$MR_REPO' '$repo'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="cvs -d '$root' co -d '$MR_REPO' '$repo'"
hg_register =
url=$(hg showconfig paths.default)
echo "Registering mercurial repo url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="hg clone '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="hg clone '$url' '$MR_REPO'"
darcs_register =
url=$(cat _darcs/prefs/defaultrepo)
echo "Registering darcs repository $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="darcs get '$url'p '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="darcs get '$url'p '$MR_REPO'"
git_bare_register =
url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" || true
if [ -z "$url" ]; then
error "cannot determine git url"
fi
echo "Registering git url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone --bare '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="git clone --bare '$url' '$MR_REPO'"
help =
if [ ! -e "$MR_PATH" ]; then