Most developers know the problem. You’ve done a lot of work and it’s time to put all your hard work live. So it is time to copy all the files you modified to the live environment, remove all files that are no longer needed and edit those that have configuration changes.
After the update someone walks screaming through the building with his hands in their hair. Nothing works anymore!!!!!!!! (All web-developers encounter this, as well as some application developers.)
So what went wrong? Something as simple as forgetting to change one setting in a configuration file. Small but crucial mistakes that could throw an entire website or application offline.
How to lessen the changes of errors in upgrades happening
One of the easiest changes to make in preventing these type of errors is using a source versioning package. Two popular ones are CVS and SVN, both are good and reliable.
The huge advantage is not the versioning itself though. It’s the capability to work in a branch. When you’re done developing you will have to merge your code with what is already in the trunk. The trunk is the same as the version that is currently in your live environment (or it should be :)). After the merge you can pretty much see which files were modified, removed or added. Makes it a lot easier to upgrade now doesn’t it.
Doing the steps as described above will help, allot! But you’re not homefree just yet. After all the settings in the live environment will always be different, so you can’t just copy them.
Keep track of changed files, settings manually
That is why this second part is so crucial. It may seem redundant if you’re using a versioning tool, but trust me it helps. I keep track of all changed files that will go live in one Excel document per upgrade.
Note that if multiple files compile to a single executable you only need to add that executable to your sheet.
I personally like creating different sheets for each project affected by the upgrade, it’s just easier to see the impact. To make some stuff a lot more automatic I’ve added some VBScript that does boring tasks like creating new rows and sorting the lists.
It may be boring to keep updating the sheets, but it helps. And I’ve written scripts that will automatically generate an upgrade script, which saves time in the end.
If there is interest in the Excel template I use to keep track of changes let me know. I’ll sent it to you or add it to the feed.