I've been hesitating to upgrade to the latest release, primarily due to all
the little customizations I've made all over the place. I didn't look
forward to modifying web pages, copying little scripts, etc...
To help me, I came up with a little script over the weekend. Basically it
diff's the source of the latest release against my current source (2.99) to
generate a list of updated files, then diff's my customized installation
against the current source to determine which files I've modified.
I then compare the two lists and determine the number of impacted files
(files I've changed from the current source that are also updated in the new
The script then copies the current installation as a baseline, applies the
new version non-conflicting files, and renames the conflicting files with a
.<version> filename so I can manually reconcile the files. After
installation, I delete the old /usr/local/mh symlink, and recreate pointing
to the new directory. Worked great when I tested it, and had an upgraded mh
installation in 10 minutes!
Note that this is a linux only script -- I don't know if there is a diff for
Neat idea, and I think it would help a lot of folks test out new versions
quicker. (with a built in backout plan of keeping the older directory).
If anyone wants to add anything to it to make it more useful, reliable,
non-destructive, etc... feel free. Hopefully this will lead to a good
upgrade solution that can more easily keep our installations up to date.
your script looks very impressive and is a good idea. I actually run off
the CVS version, updating whenever a new build is released, so I'm not a
good candidate for testing.
I wanted to point out that what you've implemented is a subset of standard
source control system functionality. You may want to take a look at
subversion in particular. Although opinions vary, I consider it to be the
best free SCS available. If you search for the red bean book on subversion
(freely available on web), they even have a section on how to integrate the
diffs from an external package into your repository. In this case, you
would consider the mh zip package as a vendor set.
The advantage of using a SCS is that you can track all of the changes that
you are making to your code, go back to earlier versions, do diffs between
arbitrary versions, etc. As well, there are excellent tools for browsing
Search the mailing list for subversion and you should find a short
discussion I had regarding this exact topic.
H Plato wrote:
> I've been hesitating to upgrade to the latest release, primarily due to all
> the little customizations I've made all over the place. I didn't look
> forward to modifying web pages, copying little scripts, etc...
> To help me, I came up with a little script over the weekend. Basically it
> diff's the source of the latest release against my current source (2.99) to
> generate a list of updated files, then diff's my customized installation
> against the current source to determine which files I've modified.
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around