This is an easy way of doing it: the only problem is that diff doesn’t handle binary files very well. 🙁
Say, for example, that a small portion of code is inserted into a program. This changes the relative position of all other code in the address space of the program => all pointers for function calls, etc. get changed making a standard diff-type comparison a nightmare. Diff was made for textfiles: something new is needed to handle binary files.
This would, however, work really well for all the text files contained in a package: the only problem is that for most packages, the binaries constitute most of the size of the package and a lot of documentation rarely changes (only changelogs and important updates)…