We have a client here who manages there own web server and website deployment, but they rely on us to develop and update their site as needed. For this reason, they prefer to receive updates to their site in patch-like zip files. On our end we mange this project with a combination of Unfuddle, SVN and a staging server that mimics their server environment. When it comes time to release code it can be a bit confusing for us which files the client will need for a particular update. We rely on SVN to help.

First, we determine at which revision in the repository the updates began. We do this by referencing associated changesets inside Unfuddle (Side note; Unfuddle is a fantastic project management and source control tool that we recommend checking out.) Then, it’s just a matter of grabbing a diff from this changeset to the HEAD. From the command line, do (Where “XX” is, of course, the revision our changes start at. In doubt, we err on the side of more files than necessary.):

$> svn diff -r XX:HEAD --summarize>~/Desktop/diff.txt

This dumps a summary of the affected files into a text file on the desktop. From there we go down the list and compile our patch for the client. Easy.