1. ChangeLog
Update: a ChangeLog file is no longer needed for GNOME's needs, but write good git commit messages.
This file lists all the changes that a given module has undergone. Since the move to Git, not all modules use a ChangeLog - See Git/ChangeLog.
In GNOME the ChangeLog is generally of the following form if it exists:
YYYY-MM-DD Joe Bloggs <joe.bloggs@gnome.org> Replace uses of deprecated API (bgo #878372) * filename.c (some_function): Use GtkDialog instead of deprecated GnomeDialog. (some_other_function): Use GtkAssistant instead of deprecated GnomeDruid. * otherfilename.c (yetanother_function): Use GtkAbout instead of deprecated GnomeAbout.
Not all modules mention the function names, but this can be informative. Note that the initial one-line summary is for various Git tools which expect this.
If a project uses a ChangeLog, you should generally copy the ChangeLog entry for your commit message, starting with the one-line summary, omitting the date/name/email-address line.
There are various tools to help generate ChangeLog entries:
moap changelog prepare -c
See also DeveloperUtilities.
1.1. git-merge-changelog
Shamelessly stolen from http://gcc.gnu.org/wiki/GitMirror
Before long you'll get frustrated with git's handling of ChangeLog merges, which is just as bad as SVN's. But there's a fix for that!
git clone git://git.savannah.gnu.org/gnulib.git gnulib/gnulib-tool --create-testdir --dir=git-merge-changelog git-merge-changelog cd git-merge-changelog ./configure --prefix=$HOME/.local make make install git config --global merge.merge-changelog.name "GNU-style ChangeLog merge driver" git config --global merge.merge-changelog.driver "$HOME/.local/bin/git-merge-changelog %O %A %B"
To enable this special merge driver for a git repository clone, set an attribute on the ChangeLog file:
cd yourclone echo 'ChangeLog merge=merge-changelog' >> ".git/info/attributes"