This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: ChangeLog entry complexity
- From: "Joseph S. Myers" <joseph at codesourcery dot com>
- To: Eric Wong <normalperson at yhbt dot net>
- Cc: Carlos O'Donell <carlos at redhat dot com>, Petr Baudis <pasky at ucw dot cz>, Roland McGrath <roland at hack dot frob dot com>, OndÅej BÃlka <neleai at seznam dot cz>, <libc-alpha at sourceware dot org>
- Date: Tue, 26 Mar 2013 17:55:07 +0000
- Subject: Re: ChangeLog entry complexity
- References: <20130224085129 dot GA5898 at domone dot kolej dot mff dot cuni dot cz> <20130311132836 dot GA6016 at domone dot kolej dot mff dot cuni dot cz> <20130311162425 dot DAD282C083 at topped-with-meat dot com> <20130311174341 dot GA28265 at domone dot kolej dot mff dot cuni dot cz> <20130311174940 dot 0E0512C08D at topped-with-meat dot com> <513E4924 dot 4010500 at redhat dot com> <20130311214322 dot GC31274 at machine dot or dot cz> <20130311214635 dot 5B9D32C08F at topped-with-meat dot com> <20130325164624 dot GA6137 at machine dot or dot cz> <51508192 dot 90702 at redhat dot com> <20130325205300 dot GA24293 at dcvr dot yhbt dot net>
On Mon, 25 Mar 2013, Eric Wong wrote:
> As others have said, git is fast and powerful. There is no benefit to
> reading a static ChangeLog when one can run git blame/log with the
> appropriate options to get exactly what you need (and most importantly,
> quickly filter out what one does not want).
Given the messy state of the history converted from CVS (sometimes the
heuristics to combine separate CVS commits to separate files into a single
git commit helped, but sometimes they made things worse), in practice the
ChangeLogs are often a better place to find all the history in one place
(together with checking the old CVS repository in tricky cases).
> ChangeLog entries also lead to needing extra tools like
> git-merge-changelog instead of just doing a plain cherry-pick/am.
Not having a checked-in ChangeLog leads to on-the-side extra files with
corrections to bad log messages and author information, information about
multiple authors where git can only show one, etc. (see
gitlog-to-changelog --amend). (I think in principle things such as log
messages should themselves be versioned objects so you could refer to the
state of the tree as of a particular commit, which would refer not just to
the files in the tree and the history of the tree but to the state of the
log messages etc. in that history. But I don't know of any version
control systems that do that.)
I think we *should* move to putting both title lines (as explicitly
described in the GNU Coding Standards) and rationale at the top of
ChangeLog entries, in addition to the descriptions of "what" changed, and
also putting that detailed patch description in the commit messages. But
this would require that the detailed description be reviewed for
formatting and English usage in as much detail as the rest of the patch.
It would also mean that many patch submissions could have just the
ChangeLog entry and patch, without anything else above the ChangeLog
entry, as the entry would show the full rationale. (Revised submissions
would still have descriptions of the changes in that particular version
above the log entry, then the full, possibly amended, rationale in the
ChangeLog entry.)
I also think that for the problem cases of large global mechanical changes
it's reasonable to simplify the "what" part of the log just to list files
changed or not to list them at all (as in the log entries when I moved all
files to copyright year ranges).
I also think the issue of having lots of separate ChangeLog files for
changes affecting all architectures should best be addressed by moving
ports into libc proper after eliminating the remaining ways in which libc
architectures still put some things in architecture-independent files that
should be in sysdeps files. Then it would just be the main ChangeLog and
those for libidn, localedata, nptl and nptl_db. Even withing ports, the
separate ChangeLogs for different architectures were really an artifact of
CVS ACLs used to control who could commit changes to each port.
--
Joseph S. Myers
joseph@codesourcery.com