X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/a6af578542ff49bdbac29fb5773c24ff2ed4ef5c..32808ba79347c860fd3acfa3f8b731795170bc93:/mr diff --git a/mr b/mr index 1741812..823e3df 100755 --- a/mr +++ b/mr @@ -34,25 +34,23 @@ control system: =item checkout (or co) -Checks out all the registered repositories that are not already checked -out. +Checks out any repositories that are not already checked out. =item update -Updates each registered repository from its configured remote repository. +Updates each repository from its configured remote repository. If a repository isn't checked out yet, it will first check it out. =item status -Displays a status report for each registered repository, showing what +Displays a status report for each repository, showing what uncommitted changes are present in the repository. =item commit (or ci) -Commits changes to each registered repository. (By default, changes -are pushed to the remote repository too, when using distributed systems -like git.) +Commits changes to each repository. (By default, changes are pushed to the +remote repository too, when using distributed systems like git.) The optional -m parameter allows specifying a commit message. @@ -60,6 +58,10 @@ The optional -m parameter allows specifying a commit message. Show a diff of uncommitted changes. +=item list + +List the repositories that mr will act on. + =item help Displays this help. @@ -69,6 +71,15 @@ Displays this help. Actions can be abbreviated to any unambiguous subsctring, so "mr st" is equivilant to "mr status". +B operates on all registered repsitories at or below your working +directory. Or, if you are in a subdirectory of a repository, it will act on +only that repository. + +Additional parameters can be passed to other commands than "commit", they +will be passed on unchanged to the underlying revision control system. +This is mostly useful if the repositories mr will act on all use the same +revision control system. + =head1 OPTIONS =over 4 @@ -224,7 +235,6 @@ foreach my $topdir (sort keys %config) { } my (@failed, @successful, @skipped); -my $first=1; foreach my $topdir (sort keys %config) { foreach my $subdir (sort keys %{$config{$topdir}}) { next if $subdir eq 'default'; @@ -280,7 +290,7 @@ sub action { push @skipped, $dir; } else { - print "mr $action: in $dir\n"; + print "mr $action: $dir\n"; my $command="set -e; ".$lib. "my_action(){ $config{$topdir}{$subdir}{$action} ; }; my_action ". join(" ", map { s/\//\/\//g; s/"/\"/g; '"'.$_.'"' } @ARGV); @@ -299,8 +309,7 @@ sub action { push @successful, $dir; } - print "\n" unless $first; - $first=0; + print "\n"; } } @@ -313,7 +322,6 @@ sub showstat { } return; } -print "\n" unless $first; print "mr $action: finished (".join("; ", showstat($#successful+1, "successful", "successful"), showstat($#failed+1, "failed", "failed"), @@ -464,6 +472,7 @@ diff = \ else \ error "unknown repo type"; \ fi +list = true help = \ if [ ! -e "$MR_PATH" ]; then \ error "cannot find program path";\