Hi all,
I did a quick bugfix for this ticket:
http://sourceforge.net/p/tei/bugs/724/
back in July, but I'm now dealing with the ramifications of getting it
onto tei-c.org, and in the process, noticing that the project was moved
from SF to GitHub without some key code changes being made to handle the
changelog; I think the same issues will apply to P5, so I think we could
use Roma as a good testcase for handling the change.
When you run "make dist" or "make install" in the Roma source, one of
the things that should happen is that the latest changes are added to
the ChangeLog file. That's done by calling a PERL script called
gnuify-changelog, which seems to be fairly widely used; but it is
explicitly customized for the project and its contributors, all of whom
are listed explicitly. What it does is to call svn log to get the latest
commits, then converts them into a GNU-style changelog by substituting
more detailed user info for user names.
There are four problems with this:
1. gnuify-changelog.pl no longer exists in the Roma source, since it's
been pulled out of the P5 tree.
2. We're now using git, not svn, so the log info is differently formatted.
3. The script requires a hard-coded list of contributors to be maintained.
However, git log seems to be more friendly than svn log, in that it
includes user name and email:
---------------
$> git log -n 1 --name-status
commit 18cc86ddcd79b409a9bfa406426fe4685c37fa8a
Author: martindholmes
Date: Mon Jul 27 14:05:29 2015 -0700
Fix for http://sourceforge.net/p/tei/bugs/724/. I'm doing a
string-replace which catches the specific bug reported (double quotes)
in the title and author fields, but doesn't make any attempt to do more
comprehensive escaping, since that would need a significant rewrite of
large blocks of the code, I think.
M VERSION
M roma/romadom.php
---------------
git log can also be massaged to output stuff in XML, by defining an XML
format. So I'd like to suggest the following, to be piloted and tested
with Roma, but then implemented for P5 (and any other projects which
happen to be using gnuify-changelog.pl in our setup:
Replace that call with an ant task which reads the existing XML log file
(if it exists), calls git log to output anything subsequent to the last
entry in XML, calls Saxon to XSLT it to whatever we want and insert it
into the existing XML log file, then calls Saxon again to XSLT the
now-updated XML log file into the GNU-preferred text format.
Alternatively, if those of you who love PERL would like to simply update
gnuify-changelog.pl so that it can use the git log output format, you're
welcome to do that; it's a bit urgent because I don't think a build will
work properly otherwise.
Another option is to rely (for P5 builds) on having an svn checkout
which can generate an svn log in the expected format, and using that;
and then re-inserting gnuify-changelog.pl into the Roma tree, changing
the Makefile to point to it, and doing other updates (adding and
removing potential contributors) to both PERL files. I think the
ant/XSLT solution is better in the long term, and removes one more PERL
dependency, but I suspect I'm in a minority there.
Cheers,
Martin