[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Improving CHANGES (or at least making it easier to produce)

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Fri, 30 Aug 2013 11:48:56 +0200

On Fri, Aug 30, 2013 at 12:20 AM, Ben Reser <ben_at_reser.org> wrote:
> Right now we produce the CHANGES file by someone going through the log and
> looking at the individual commits and coming up with the entries for CHANGES.
> It's an after the fact process.
> The problem with this is that it's not always obvious from commit messages what
> the user impact is. I could probably find some examples but I'm not going to
> bother to pick on anyone in particular. Ultimately, our commit messages are
> for developers and the CHANGES entries are for users. There's a wide gap
> sometimes between what goes where.
> So I'd like to suggest that we start including a Changes field in the STATUS
> file entries. I haven't exactly worked out the details so nobody needs to rush
> out right now and start doing it immediately.
> Since the people proposing the backport and the people voting for it usually
> have the best idea of the impact it should improve the quality of our CHANGES file.
> If a STATUS entry doesn't require a CHANGES entry (e.g. improvement to an
> already merged change that wasn't released yet) then we can just ommit this
> line. I can then simply search through the commit logs (since the backport.pl
> includes the STATUS entries in the commit log when it commits) and find all the
> CHANGES entries.
> It'll still take some editing for consistency and style probably. But it'll be
> a lot better in my humble opinion.
> This of course does nothing to help producing the CHANGES file for a 1.x.0
> release, because there are tons of changes going on trunk that do not ever get
> backported. A huge thing that can help there is to start trying to describe
> why a user would care about the commit and not just a developer. This is
> something that I think we all can put a little bit more effort into on our
> trunk commits that'll help us when we produce 1.9.0.

Here is an alternative approach, that addresses both problems (CHANGES
for backports, and CHANGES for next big release), and it's the way we
currently do this at my workplace:

Put the information for end-users directly in the commit message which
makes the change (or one of the commit messages if there is a whole
series of related commits), encoded in some parseable way. That way a
release tool can extract this information and construct a draft of
CHANGES (which can then still get final edits).

This avoids duplication of information over both STATUS and other
places (the description of the change is usually the same for trunk
(next 1.x.0 to be) as for backports). At the cost of the developer who
commits the change having to think, at that point, about how one would
phrase this for end-users (but this is probably the best time (and the
best person) to think about this -- and if need be, it can always be
added after the fact to the log message). As an added bonus, the
user-facing message is then also immediately there in the log message,
which can be handy for devs looking through a file's history.

At my workplace, we have a convention (enforced by pre-commit hook) to
use a prefix between square brackets ([U] for the user-facing text,
[S9] for the developer details (our team is called the "system9" team)
-> which also get extracted to another text file for an overview of
all the dev-messages of a single release). Here we could use something
similar to the contribulyzer syntax (for instance "Change: blablabla
(issue #1234)").

Any revision numbers that are related to such a "change" can maybe be
extracted automatically (for inclusion in the CHANGES, if there is no
issue number mentioned). "Change" entries which are identical (same
Change in 10 different commits) would of course be folded into one
line in CHANGES.

Received on 2013-08-30 11:49:52 CEST

This is an archived mail posted to the Subversion Dev mailing list.