To reduce the pain with the merging of my config changes (for various software) with upstream’s new defaults, I came up with a small program to track the default config files in a Git branch.
With things set up, the update and the merge become a matter of:
% ./update-defaults (or whatever you’ll call your script) % git merge defaults (or whatever you’ll call the defaults branch)
The program is generic, of course – I’ve already found other uses for it[1].
The README: http://github.com/ion1/update-base-branch#readme
How I use the program in real life – examples of what the update-defaults script mentioned above could look like: http://github.com/ion1/update-base-branch/tree/master/examples#browser
Release tarball: http://johan.kiviniemi.name/software/update-base-branch/
A demonstration: using the program to update the user config for the Awesome window manager: http://www.youtube.com/watch?v=RQ3CqJ4jM90&fmt=18
[1] If there is no public VCS repository for a piece of software and you want to maintain/send patches, use update-base-branch to track the contents of the latest released tarball and merge that branch with your ‘master’.
-- Jοhan Kiviniemi