-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME
68 lines (53 loc) · 2.8 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
NAME
Devel::Git::MultiBisect - Study build and test output over a range of
git commits
DESCRIPTION
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.
What Is Multisection?
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.
Multisection of Build-Time Failures
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.
PREREQUISITES
Perl 5.14 or higher.
CPAN module Devel::CheckBin needed for "perl Makefile.PL".
CPAN module Capture::Tiny needed for testing only.
git.
INSTALL
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