Multisection: When You Need to Bisect More Than Once



James E Keenan

Philadelphia Perlmongers
December 12 2016


Table of Contents

1. Introduction
2. 'Multisection' eq 'Multiple Bisection'

3. Bisection General
4. Bisection: Focus on Single Commit

5. Perl 5 Development Process
6. Case 1: Production Release Breakage
7. Case 2: Blead Breaks CPAN
8. Case 3: Test Suite Improvements

9. Bisection Simple
10. Bisection: Calculate Next Commit to Be Tested
11. Bisection: Boolean Decisions
12. Bisection: Back and Forth
13. Bisection: Diagnostic Aid; Not Solution
14. git bisect
15. Porting/bisect.pl

16. More Complex Case
17. FreeBSD Release Cycle
18. My FreeBSD Virtual Machines
19. lib/locale.t: Failures on FreeBSD-11.0
21. First Diagnostic: Porting/bisect.pl
22. Second Diagnostic: Run Every Intervening Commit
23. Need for New Diagnostic Tool

24. Devel-Git-MultiBisect
25. Process Options
26. Devel::Git::MultiBisect Constructor
27. set_targets()
28. multisect_all_targets()
29. multisect_all_targets(): Commits Being Tested
30. multisect_all_targets(): Configure Command
31. multisect_all_targets(): Build Command
32. multisect_all_targets(): Test Command
33. multisect_all_targets(): Output Files Created
34. multisect_all_targets(): First Bisection Round
35. multisect_all_targets(): Next Bisection Round
37. multisect_all_targets(): Completion of Multisection
38. get_multisected_outputs()
39. inspect_transitions()
40. inspect_transitions(): Differences in md5_hex

41. Analysis and Summary
42. Why Did Test Output Change at These Transition Commits?
43. Summary
44. To Do
45. Thank You
46. References

47. Bonus Slides
48. Bisection: Divide and Conquer
49. Bisection Method
50. Polynomial Root Problem Solved in Perl