If needed, we could in the future provide access to `src_tip` and `dst_tip` as NothingToDoError class attributes.
Our version of check_output() returns Unicode strings. For Python 3.x, os.environ works with Unicode strings, so everything should be OK. But for Python 2.x, os.environ works with byte strings, so we have to encode the output of check_output() to bytes. str() can do the job only for ASCII characters. For non-ASCII, we need s.encode(PREFERRED_ENCODING). So, add a function env_encode() that does this encoding. Include two versions: one for Python 2.x and one for 3.x. Change get_author_info() to use this encoding function instead of str(). This should fix issue #62.
Graham Gyatt <email@example.com> reported a failure that was apparently caused by executing the same test merge twice with inconsistent answers. This merges in a few changes that avoid the problem by not repeating test merges redundantly, and thus never getting inconsistent answers.
If i2 - 1 is in row 1, then there is no reason to do a test merge in row 1 *again*. The redundant testing could have probably caused bugs like the one described in the last commit.
If i1 is in the last column, then there is no reason to do a test merge in the last column *again*. This was causing an actual failure for a user when the first test merge succeeded but the second one failed. This change helps prevent that error by using the cowardly way of always getting consistent answers: don't ask the same question more than once.
Tighten up the lower bound for the first bisection done in MergeFrontier.compute_by_bisection(). Since block.is_mergeable(1, 1) was just called successfully a few lines earlier, we know that the first unmergeable commit must have i2 >= 2.
Restructure README.txt and the in-program help to emphasize these new commands as simple ways to start an incremental merge. Also simplify the in-program help considerably.
Improve the HTML diagram output: * Desaturate the existing colors * Add some new colors: * Blue for initial commits * Pale green for skipped commits (and with "-" instead of "?") * Pale yellow for unknown commits * Display the numerical indexes along the top and left edges of the table. * Fix how the frontier is drawn.