diff
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
This is now looking a LOT more like the standard "diff" utility. There are a few features missing (e.g. we can't do directory diffs), but apart from that, it seems to work. The major changes in this version are: - We now accept command-line options. In particular, we recognise all options that are accepted by GNU diff, though some of them result in error reports and a few which have do nothing to do with the output format or semantics, but are merely for efficiency, are accepted and ignored. - We support different output formats, in particular all of the output formats supported by GNU diff. There are a number of modifiers to the output formats (for example, --show-function-line) which we don't yet support. - We have a new diff algorithm, based on the one by Eugene Myers. See myers.m for details. - Just about everything has been modified to support the above changes. - Lots of cleanups, lots more documentation. Examine the file TODO to see what's still missing. Andrew Bromage 13 September 1998 =========================================================================== The version which appears here is a re-hacked version of Marnix Klooster's hacked version of my original. Special thanks to him for making my code a lot more maintainable than it originally was. :-) The changes from the previous version: - Bug fix for a problem which was causing it to bomb out if the two files were identical. - Changed indenting so it more closely matches the Mercury compiler coding standard. - Update to use unique arrays (now called array.m). - Various minor documentation tweaks. Oh, and it still runs in nowhere near the speed of GNU diff. Andrew Bromage 28 Jul 1997 =========================================================================== The Mercury modules in this directory have been derived from the 'diff' sample distributed with Mercury 0.6. That sample carries the following copyright information, description and to-do list (in diff.m): %-----------------------------------------------------------------------------% % Copyright (C) 1995 The University of Melbourne. % This file may only be copied under the terms of the GNU General % Public License - see the file COPYING in the Mercury distribution. %-----------------------------------------------------------------------------% % File: diff.m % Main author: bromage % Something very similar to the standard diff utility. Sort of. :-) % On the still-to-do list: % - Add command-line options. Probably: % --ignore-all-space % --ignore-blank-lines % --ignore-case % --rcs % What others are easy and don't break up the code? The major changes I made were * Moved code for manipulating and displaying diffs to a separate module called diffs.m (and changed their calls in diff.m). The type 'lcss,' needed both by the rest of lcss.m and by diffs.m, was moved to a new module lcsstype.m. * Made lcss.m independent of files, and allowed it to process any kind of list by adding polymorphism. (The file processing calls have been moved to diff.m.) * Added type synonyms 'pos' and 'segment' in diffs.m to clarify the types. Renamed 'single_diff' to 'edit'. * Added end-of-file match to the generated lcss, thereby allowing the to_diff predicate to be simplified considerably. * Numbered lists from 0 internally in the lcss-algorithm. This made to_diff simpler still, but also forced changes in the diff-printing part. * Removed the swapping in find_lcss, because it doesn't seem to help. * The array(string) representing a file in file.m was also renumbered to begin with 0. * Added and corrected comments. Have fun, <>< Marnix -- Marnix Klooster [email protected]