X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/3462c6fcaa77e2fe0d2c69b6ab62533be631506d..a33917423c99bcf6dc02d939e7956a746aa974ca:/mr diff --git a/mr b/mr index 8108762..13807f8 100755 --- a/mr +++ b/mr @@ -321,6 +321,7 @@ my %configfiles; my %knownactions; my %alias; my $directory=getcwd(); +my (@ok, @failed, @skipped); getopts(); @@ -347,29 +348,8 @@ loadconfig($ENV{MR_CONFIG}); #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; @@ -377,7 +357,33 @@ if (@failed) { 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) = @_; @@ -537,6 +543,7 @@ sub action { #{{{ # run actions on multiple repos, in parallel sub mrs { #{{{ + my $action=shift; my @repos=@_; $| = 1; @@ -1072,6 +1079,7 @@ ls = list [DEFAULT] order = 10 lib = + PWD="$(pwd)" error() { echo "mr: $@" >&2 exit 1 @@ -1157,21 +1165,21 @@ svn_register = 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) @@ -1179,22 +1187,22 @@ cvs_register = 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