views:

78

answers:

2

When working with some open source projects (in my case Joomla and Moodle), I've often had to delve into the core code to make some alterations, but the problem is keeping track of these changes so I know which files to update on the production server, as well as which files to keep a special eye on when upgrading to a new version so my changes aren't overwritten.

The obvious answer is to load the entire codebase into version control, and then you can easily compare revision 0 (the untouched release code) to the current version or working copy to find the changed files, but it seems like a bit of overkill when you're only changing one or two files and the project has over 5000 files (like Moodle does).

On one end of the spectrum is a version control repository, on the other is using notepad to manually track the changes... is there anything in between?

+7  A: 

I'm not sure why you're resistant to version control; your situation is exactly what version control is designed to handle!

In fact, the case of several small local changes to a large externally-driven codebase makes it even more important to use proper source control. Using a source control system that has a smart differencing and merging engine ensures that simple changes are simple to merge when updating from upstream, and complex changes have a chance of being trackable.

Given the wide availability of high-quality, zero-cost source control systems, there's really no reason not to use them.

Tim Lesher
A: 

Ultimately, it sounds like what you've done is you've forked the code. Was that really your intention? Get your changes merged into the original source, and then you don't have to continue making those changes for future updates.

If your changes are inappropriate for any other consumers of the project, then maybe you could instead introduce changes that allow your customizations to be loaded later. That is, even if your specific changes aren't for everyone, but the sections of code you change could be sections that others would like to customize for their installations as well. Add a feature to the program that will load customizations from a separate file. Then the code doesn't need to change anymore, and you can update your configuration file without having to track your changes in relation to the external code.

Rob Kennedy