Devel::Git::MultiBisect - Study build and test output over a range of git
commits
Given a Perl library or application kept in git
for version control, it is
often useful to be able to compare the output collected from running one or
more test files over a range of git
commits. If that range is sufficiently
large, a test may fail in more than one way over that range.
If that is the case, then simply asking, "When did this file start to
fail?" -- a question which git bisect
is designed to answer -- is
insufficient. In order to identify more than one point of failure, we may
need to (a) capture the test output for each commit; or, (b) capture the test
output only at those commits where the output changed. The output of a run of
a test file may change for a variety of reasons: test failures, segfaults,
changes in the number or content of tests, etc.
Devel::Git::MultiBisect
provides methods to achieve that objective. Its
child classes, Devel::Git::MultiBisect::AllCommits
and
Devel::Git::MultiBisect::Transitions
, provide different flavors of that
functionality for objectives (a) and (b), respectively. Please refer to their
documentation for further discussion.
In this library we introduce the term multisection as a short-hand for multiple bisection. Instead of hoping to identify a single commit within a range of commits that will, in effect, divide that range into "before" and "after" sub-ranges, we hope to identify multiple commits within that range where an application's behavior changed significantly.
Perl 5 has many different configuration options, some of which are used
infrequently. Given a specific set of configuration options and a
sufficiently large number of git
commits and, it is possible that Perl
would fail to build (i.e.
, a build-time failure in make
) in more than
one way over that range.
If that is the case, then simply asking, "When did Perl start failing to
build with this set of configuration options?" is insufficient. We may need
to capture the build-time error output at those commits where the output
changed. Devel::Git::MultiBisect::BuildTransitions
provides methods to
achieve that objective. Please refer to their documentation for further
discussion.
Perl 5.14 or higher.
CPAN module Devel::CheckBin
needed for perl Makefile.PL
.
CPAN module Capture::Tiny
needed for testing only.
git
.
perl Makefile.PL
make
make test
make install
This library has not yet been tested on Windows.
Once installed, start reading the documentation by calling:
perldoc Devel::Git::MultiBisect