App-Multigit
view release on metacpan or search on metacpan
lib/App/Multigit.pm view on Meta::CPAN
package App::Multigit;
use 5.014;
use strict;
use warnings FATAL => 'all';
use List::UtilsBy qw(sort_by);
use Capture::Tiny qw(capture);
use File::Find::Rule;
use Future::Utils qw(fmap);
use Path::Class;
use Config::INI::Reader;
use Config::INI::Writer;
use IPC::Run;
use Try::Tiny;
use App::Multigit::Future;
use App::Multigit::Repo;
use App::Multigit::Loop qw(loop);
use Exporter 'import';
our @EXPORT_OK = qw/
mgconfig mg_parent
all_repositories selected_repositories
base_branch set_base_branch mg_each
write_config
/;
=head1 NAME
App::Multigit - Run commands on a bunch of git repositories without having to
deal with git subrepositories.
=cut
our $VERSION = '0.18';
=head1 PACKAGE VARS
=head2 %BEHAVIOUR
This holds configuration set by options passed to the C<mg> script itself.
Observe that C<mg [options] command [command-options]> will pass C<options> to
C<mg>, and C<command-options> to C<mg-command>. It is those C<options> that will
affect C<%BEHAVIOUR>.
Scripts may also therefore change C<%BEHAVIOUR> themselves, but it is probably
badly behaved to do so.
=head3 report_on_no_output
Defaults to true; this should be used by scripts to determine whether to bother
mentioning repositories that gave no output at all for the given task. If you
use C<App::Multigit::Repo::report>, this will be honoured by default.
Controlled by the C<MG_REPORT_ON_NO_OUTPUT> environment variable.
=head3 ignore_stdout
=head3 ignore_stderr
These default to false, and will black-hole these streams wherever we have
control to do so.
Controlled by the C<MG_IGNORE_{STDOUT,STDERR}> environment variables.
=head3 concurrent_processes
Number of processes to run in parallel. Defaults to 20.
Controlled by the C<MG_CONCURRENT_PROCESSES> environment variable.
=head3 skip_readonly
( run in 0.431 second using v1.01-cache-2.11-cpan-39bf76dae61 )