The Buildmeister
Investigates
The Buildmeister executes the build after merging branch yyy_R95 to /main
Builder% example ************************************** ************************************** ************************************** ************************************** You get = inf% of a pie. <--- an infinite amount of pie is an inauspicious result! ************************************** ************************************** ************************************** **************************************
This is a more dangerous merge problem, because the merge occurs automatically, but the resultant code is wrong -- causes divide by zero. Let's use the cleartool diff to illustrate what the problem in the code is:
Builder% ct diff -graphical main.C@@/main/sjk_R93/LATEST main.C@@/main/yyy_R95/LATEST
Here's the offending result:
Builder% cat main.C #include#include "corp_standards.h"; // Added even more meaningful comments. int main() { float num_pies = CORP_STD_NUMBER_OF_PIES; int num_slices = CORP_STD_SLICES_OF_PIE; --num_slices; // We want more cout << "**************************************" << endl; cout << "**************************************" << endl; cout << "**************************************" << endl; cout << "**************************************" << endl; --num_slices; // Yummm.... cout << "You get = "; cout << 100 * (num_pies / num_slices); cout << "% of a pie." << endl; cout << "**************************************" << endl; cout << "**************************************" << endl; cout << "**************************************" << endl; cout << "**************************************" << endl; }
Our disconsolate Buildmeister has no recourse other than to reject the whole mess:
Builder% ct unco -rm `ct lsco -cview -all -s` Checkout cancelled for "/tmp/sjk_demo/src/main.C".
And now, the developers go off to do the right thing...