I am in the process of developing a CPAN library which I am considering
calling Git-Multisect-Perl. The library would have packages with names
starting with 'Git::Multisect::Perl::' and would contain an associated
command-line utility to be called 'multisect'.
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 several 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?" is insufficient. We may want to capture the test output for each
commit, or -- more usefully -- may want to capture the test output only
at those commits where the test output changed.
Though the library is currently on github.com as 'test-multisect', I'd
like to change that because putting 'Test::' first in a Perl package
name usually means an extension to Test::Simple, Test::Builder or
Test::Harness.
It appears that the top-level namespace 'Git::' is used for both
libraries that wrap git and those that do something useful with git.
This library will fall into the latter category. (In hindsight, perhaps
we should have created a top-level 'Gitx::' namespace.)
'Multisect::' is chosen to contrast with 'bisect'. When we speak of
bisection in the context of, say, Perl 5 core development and use of
Porting/bisect.pl, we're usually looking for a single answer to a
question, e.g., at which specific commit did this test file start to
experience failures. Recently, however, we have a case where a file
failed in different ways over many months. That's the actual use case
which led me to develop this library.
The '::Perl' in the namespace is intended to say, "This is a way to
apply the concept of multisection to typical needs in Perl development
such as CPAN distributions and P5P, but we don't want to foreclose the
possibility of future libraries which use git to perform multisection in
other problem spaces."
I'm in the advanced stages of development of this library so, while I
welcome advice, I hope to avoid bikeshedding and I recognize that
whatever name I go with will make some people unhappy. So be it.
Thoughts?
Thank you very much.
Jim Keenan
CPANID: jkeenan