NAME
    Perl5::TestEachCommit - Test each commit in a pull request to Perl core

SYNOPSIS
        use Perl5::TestEachCommit;

        $self = Perl5::TestEachCommit->new();

        $self->prepare_repository();
        $self->display_plan();
        $self->get_commits();
        $self->display_commits();
        $self->examine_all_commits();
        $self->get_results();
        $self->display_results();

DESCRIPTION
    This library is intended for use by people working to maintain the Perl
    core distribution <https://github.com/Perl/perl5>.

    Commits to "blead", the main development branch in the Perl repository,
    are most often done by pull requests. Most such p.r.s consist of a
    single commit, but commits of forty or eighty are not unknown. A
    continuous integration system (CI) ensures that each p.r. is configured,
    built and tested on submission and on subsequent modifications. That CI
    system, however, only executes that cycle on the *final* commit in each
    p.r. It cannot detect any failure in a *non-final* commit. This library
    provides a way to test each commit in the p.r. to the same extent that
    the CI system tests the final commit.

    Why is this important? Suppose that we have a pull request that consists
    of 5 commits. In commit 3 the developer makes an error which causes make
    to fail. The developer notices that and corrects the error in commit 4.
    Commit 5 configures, builds and tests satisfactorily, so the CI system
    gives the p.r. as a whole a PASS. The committer uses that PASS as the
    basis for approving a merge of the branch into "blead".

        Commit  Configure   Build       Test
        ------------------------------------
        1abcd       X         X           X
        2efab       X         X           X
        3cdef       X         0           -
        4dcba       X         X           X
        5fedc       X         X           X

    If, for any reason (*e.g.,* bisection), some other developer in the
    future needs to say git checkout 3cdef, they will discover that at that
    commit the build was actually broken.

