X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/157203e8c58b608b328d55ba8dcbcfe791c847f5..565de32fed5b476d0003da7ebb4c35ac14b149c7:/mr?ds=sidebyside diff --git a/mr b/mr index a4469e9..f4a93b6 100755 --- a/mr +++ b/mr @@ -30,7 +30,7 @@ B [options] action [params ...] B 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 -respository. It supports any combination of subversion, git, cvs, mecurial, +repository. It supports any combination of subversion, git, cvs, mecurial, bzr and darcs repositories, and support for other revision control systems can easily be added. @@ -121,8 +121,8 @@ Displays this help. =back -Actions can be abbreviated to any unambiguous subsctring, so -"mr st" is equivilant to "mr status", and "mr up" is equivilant to "mr +Actions can be abbreviated to any unambiguous substring, so +"mr st" is equivalent to "mr status", and "mr up" is equivalent to "mr update" Additional parameters can be passed to most commands, and are passed on @@ -161,11 +161,15 @@ If a number is specified, will recurse into repositories at most that many subdirectories deep. For example, with -n 2 it would recurse into ./src/foo, but not ./src/packages/bar. -=item -j number +=item -j [number] -Run the specified number of jobs in parallel. This can greatly speed up -operations such as updates. It is not recommended for interactive -operations. +Run the specified number of jobs in parallel, or an unlimited number of jobs +with no number specified. This can greatly speed up operations such as updates. +It is not recommended for interactive operations. + +Note that running more than 10 jobs at a time is likely to run afoul of +ssh connection limits. Running between 3 and 5 jobs at a time will yeild +a good speedup in updates without loading the machine too much. =back @@ -510,7 +514,7 @@ sub mrs { #{{{ my @out; my $running=0; while (@fhs or @repos) { - while ($running < $jobs && @repos) { + while ((!$jobs || $running < $jobs) && @repos) { $running++; my $repo = shift @repos; pipe(my $outfh, CHILD_STDOUT); @@ -928,7 +932,7 @@ sub dispatch { #{{{ register(@ARGV); } - if ($jobs > 1) { + if (!$jobs || $jobs > 1) { mrs($action, selectrepos()); } else { @@ -1052,7 +1056,7 @@ sub getopts { #{{{ "v|verbose" => \$verbose, "s|stats" => \$stats, "n|no-recurse:i" => \$max_depth, - "j|jobs=i" => \$jobs, + "j|jobs:i" => \$jobs, ); if (! $result || @ARGV < 1) { die("Usage: mr [-d directory] action [params ...]\n". @@ -1180,7 +1184,7 @@ git_commit = git commit -a "$@" && git push --all bzr_commit = bzr commit "$@" && bzr push cvs_commit = cvs commit "$@" hg_commit = hg commit -m "$@" && hg push -darcs_commit = darcs commit -a -m "$@" && darcs push -a +darcs_commit = darcs record -a -m "$@" && darcs push -a svn_diff = svn diff "$@" git_diff = git diff "$@" @@ -1198,14 +1202,14 @@ darcs_log = darcs changes "$@" git_bare_log = git log "$@" svn_register = - url=`LANG=C svn info . | grep -i '^URL:' | cut -d ' ' -f 2` + url=`LC_ALL=C svn info . | grep -i '^URL:' | cut -d ' ' -f 2` if [ -z "$url" ]; then 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'" git_register = - url="`LANG=C git config --get remote.origin.url`" || true + url="`LC_ALL=C git config --get remote.origin.url`" || true if [ -z "$url" ]; then error "cannot determine git url" fi @@ -1233,9 +1237,9 @@ hg_register = 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' '$MR_REPO'" git_bare_register = - url="`LANG=C GIT_CONFIG=config git config --get remote.origin.url`" || true + url="`LC_ALL=C GIT_CONFIG=config git config --get remote.origin.url`" || true if [ -z "$url" ]; then error "cannot determine git url" fi @@ -1246,7 +1250,10 @@ help = if [ ! -e "$MR_PATH" ]; then error "cannot find program path" fi - (pod2man -c mr "$MR_PATH" | man -l -) || error "pod2man or man failed" + tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed" + trap "rm -f $tmp" exit + pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed" + man -l "$tmp" || error "man failed" list = true config =