Matching blocks that are identical is for me the most important feature of any Diff/Merge tool. I know BC3 offers some nice advanced rules to ignore unimportant changes for some pretty specific cases but the core didn't improve so much. I'm talking of course to compare small files, for large files (over 5MB) the algo may be simplified (with a warning to the user).
How to improve? I found BC frequently take one function content for another. It also almost always misses the closing point of a function. The indentation isn't currently taken into account, nor are the bracket ({}) of C++/C#/Java...
Sure one of the main issue is handling function blocks that have been moved up and down. There are many ways it could be done but that probably be a BC4 more than a minor important improvement.
Best is to have an example. I've joined a screenshot of a simple before/after. Note that the closing bracket of "Whatever" is for BC3 matching the closing bracket of "FunctionBar".
How to improve? I found BC frequently take one function content for another. It also almost always misses the closing point of a function. The indentation isn't currently taken into account, nor are the bracket ({}) of C++/C#/Java...
Sure one of the main issue is handling function blocks that have been moved up and down. There are many ways it could be done but that probably be a BC4 more than a minor important improvement.
Best is to have an example. I've joined a screenshot of a simple before/after. Note that the closing bracket of "Whatever" is for BC3 matching the closing bracket of "FunctionBar".
Comment