X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/f98564a75f9466db13c85fa6c1acaa40c10c479a..54ef16536ceb543d9dd0da24047f4621092644c4:/mr?ds=inline diff --git a/mr b/mr index 4d77368..4cd3c2e 100755 --- a/mr +++ b/mr @@ -1,8 +1,8 @@ -#!/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 @@ -24,6 +24,8 @@ B [options] diff B [options] log +B [options] grep pattern + B [options] run command [param ...] B [options] bootstrap url [directory] @@ -40,11 +42,11 @@ B [options] remember action [params ...] =head1 DESCRIPTION -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 -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 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 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 @@ -113,6 +115,11 @@ Show a diff of uncommitted changes. 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. @@ -519,7 +526,7 @@ Copyright 2007-2011 Joey Hess Licensed under the GNU GPL version 2 or higher. -http://kitenet.net/~joey/code/mr/ +http://myrepos.branchable.com/ =cut @@ -1318,11 +1325,12 @@ sub loadconfig { while (@lines) { $_=$nextline->(); + next if /^\s*\#/ || /^\s*$/; + if (! $trusted && /[[:cntrl:]]/) { $trusterror->("illegal control character"); } - next if /^\s*\#/ || /^\s*$/; if (/^\[([^\]]*)\]\s*$/) { $section=$1; @@ -1543,10 +1551,7 @@ sub dispatch { my $action=shift; # actions that do not operate on all repos - if ($action eq 'help') { - help(@ARGV); - } - elsif ($action eq 'config') { + if ($action eq 'config') { config(@ARGV); } elsif ($action eq 'register') { @@ -1574,7 +1579,27 @@ sub dispatch { } sub help { - exec($config{''}{DEFAULT}{help}) || die "exec: $!"; + my $help=q# + case `uname -s` in + SunOS) + SHOWMANFILE="man -f" + ;; + Darwin) + SHOWMANFILE="man" + ;; + *) + SHOWMANFILE="man" + ;; + esac + if [ ! -e "$MR_PATH" ]; then + error "cannot find program path" + fi + tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed" + trap "rm -f $tmp" exit + pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed" + $SHOWMANFILE "$tmp" || error "man failed" + #; + exec($help) || die "exec: $!"; } sub config { @@ -1817,6 +1842,7 @@ sub exitstats { sub main { getopts(); init(); + help(@ARGV) if $ARGV[0] eq 'help'; startingconfig(); loadconfig($HOME_MR_CONFIG); @@ -2073,25 +2099,6 @@ vcsh_trusted_checkout = vcsh run "$MR_REPO" git clone $url $repo veracity_trusted_checkout = vv clone $url $repo -help = - case `uname -s` in - SunOS) - SHOWMANFILE="man -f" - ;; - Darwin) - SHOWMANFILE="man" - ;; - *) - SHOWMANFILE="man -l" - ;; - esac - if [ ! -e "$MR_PATH" ]; then - error "cannot find program path" - fi - tmp=$(mktemp -t mr.XXXXXXXXXX) || error "mktemp failed" - trap "rm -f $tmp" exit - pod2man -c mr "$MR_PATH" > "$tmp" || error "pod2man failed" - $SHOWMANFILE "$tmp" || error "man failed" list = true config = bootstrap =