Re: Why have a ChangeLog file if you already have commit messages?



On Sun, 2007-09-16 at 00:13 +0200, Jaap Haitsma wrote:
> Hi
> 
> Talking to Daniel "Cheese" Siegel we asked ourselves:
> Why do all GNOME projects have a ChangeLog file?
> Isn't it redundant when you just save a commit message.

The problem is that centralised RCSs make it hard (no network, or
network lag) to make commits of  small changes.  As a consequence,
developers are compelled to bundle many changes into a single commit,
and the commit log message has to mention all changes.  After that, even
if you want to generate a decent ChangeLog from commit messages, it is
very hard to produce a good looking ChangeLog since people use
free-style commit messages with multiple bulleted items...

In a non-GNOME project of mine [1] I use bzr and I autogenerate the
ChangeLog from bzr commit logs.  For obtaining a good looking gnu-style
ChangeLog I developed my own bzr log plugin [2], with great results.
This plugin is even smart enough to generate release markers (=== X.Y.Z
===) at appropriate places based on bzr tags.

In fact, even the project version string is obtained from bzr tags, so
when I want to make a release I just write NEWS, commit, then do
something like "bzr tag 0.7.0".  Afterwards, the generated dist tarball
will contain the version 0.7.0.

With the ChangeLog file out of version control, and no need to manually
change the project version, branching and merging is a piece of
cake. :-)

The only downside is that your changelog loses information regarding
functions and methods changed, unlike the manual changelogs (especially
if you use "C-x 4 a" under emacs).  Although, in theory even that could
be automated, but it would require looking at the diffs of each commit
and source code analysis to determine the changed functions.  Anyway, I
can easily live without a list of changed functions.  And since each
changelog entry has a revision number, interested parties can fire up
"bzr viz" and look at the diff themselves.

[1] https://launchpad.net/pybindgen/
[2] http://telecom.inescporto.pt/~gjc/gnulog.py
-- 
Gustavo J. A. M. Carneiro
<gjc inescporto pt> <gustavo users sourceforge net>
"The universe is always one step beyond logic" -- Frank Herbert




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]