Most VuFind development is done with Subversion, and there are some notes on using it for upgrading purposes here:
If you haven’t worked with version control before, I also recommend the standard Subversion book, which does a good job of explaining the philosophy behind it:
The biggest disadvantage to Subversion is that since it’s a client/server setup, if you don’t have a repository server available, setting one up can be a bit of a chore (not a huge project, but non-trivial). The other really popular version control option these days is Git, which has gained popularity because of its more advanced branching and merging capabilities which make large-scale collaboration easier. Personally, I find that these extra features get in the way when you don’t need them, but Git does have the advantage of a more built-in repository system, which makes it faster to use “out of the box.” You might also find it less annoying than I do if you don’t already have deeply-ingrained Subversion-specific habits.
If you want to do a simple comparison between two directory trees, I recommend WinMerge (assuming you’re working on a Windows box):
If you’re not using Windows, I’m sure similar projects are available for other platforms.
In any case, I’ve done this sort of upgrade tracking several times for different flavors of VuFind, so I’m pretty comfortable with it… and it has usually turned out to be less difficult than I originally expected, once I figured out the best way to use all the available tools. I’m happy to share more advice if you still have any questions. Also, if you have modifications that you feel should be part of the trunk, or which could be made easier to maintain through improvements to trunk architecture, I’d be interested in hearing about them.