Subject: Re: bug#21998: Run 'make change-history' on release branch

From: Glenn Morris <[email-masked]>
Date: Tue, 08 Mar 2016 02:32:12 -0500

Eli Zaretskii wrote:

> I think if we care at all about having ChangeLog in the releases, we
> should simply reinstate the file and maintain it in the repository.

FWIW, that's not what I was hoping would come from this, and I think
that would be a retrograde step.

> if we don't do that, let's decide there will be no ChangeLog files in
> the release tarballs at all, and stop worrying about these issues.

It's an option; however, there are two issues, which aren't directly
related:

a) an undetermined number of people may be interested in following the
history of Emacs changes without the VCS. Eg, those looking at release
tarfiles.

b) if you care about the quality of your history, you need a way to
correct commit logs, which are (effectively) immutable in git. IMO Emacs
should care about this, if only for legal reasons (eg you get the author
wrong while committing, or forget "tiny change").

I care about b), but not really about a).
Or maybe b) is irrelevant too, I don't know.

Other options:

1) Fix the merging problem. Eg the idea of using differently named
ChangeLog.2/.3 files for emacs-25 and master was mentioned. This is a
mess for people in a) trying to follow the Clog in time order.

2) Go back to only allowing versioned ChangeLog.2 on master branch. This
is least-effort, and removes the merging problem. a) doesn't benefit
from corrections, but at least the legal corrections can be made in
master.

For 1) and 2), experience shows that few people will bother to make
corrections.

3) Stop keeping a versioned ChangeLog.2 in the repo, include a
generated, unfixed ChangeLog in release tarfiles. This addresses a) at
some level but ignores b).

4) Develop a better method for correcting commit log errors. Eg, a file
that lists problematic git hashes and the corrected log message. This
could be similar to git notes, but could just be a text file. You'd need
to develop a little bit of infrastructure to help people use the system.
Recent experience suggests few people would use it. It would not have
the merging problem that the current system does. It would address b),
and a) if you used it while generating the ChangeLog.

PS For the record, to explain the actual merging issue as I see it:

Suppose emacs-25 and master are synced at revision aaa and ChangeLog.2
is up-to-date. emacs-25 advances to rev xxx, and independently master to
rev xxx'. emacs-25 gets ChangeLog.2 updated, and merged to master. Now
the footer of master ChangeLog.2 reports that it is up-to-date to rev
xxx. What does this mean for the changes on master between aaa and xxx'?
Because xxx on master is "after" xxx', I suspect it means they end up
missing from ChangeLog.2 forever, which is bad. But maybe there's no
such issue, or it is fixable with some git trivia. I don't know. That's
why I made this bug report. AFAICS, the adopted "solution" was simply to
ignore the issue, which means master/ChangeLog.2 is (probably) messed up
at the moment.