ChangeLogs in git

With the change to git, some/many/most (?) GNOME modules no longer use ChangeLogs.

This is their reasoning:

Using ChangeLog files adds usability issues to developers and translators. First, the information that goes to the ChangeLog is duplicated when adding the commit message. In usability terms, it makes sense to cut the workflow steps to those that are essential. In addition, the ChangeLog is a shared file and you are likely more that any other file to have a conflict when pushing your commits.

Generating ChangeLog files for tarball releases

If you want tarball users to have a detailed log of all the commits, along with the more generic NEWS file, you can generate a ChangeLog file from the Git commit log during the dist of your project.

If you are using autotools, a simple rule for generating the ChangeLog since the beginning of the project can be added to the toplevel (replace leading spaces with tabs):

        @if test -d "$(srcdir)/.git"; \
        then \
                echo Creating ChangeLog && \
                ( cd "$(top_srcdir)" && \
                  echo '# Generated by Makefile. Do not edit.'; echo; \
                  $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \
                && mv -f ChangeLog.tmp $(distdir)/ChangeLog \
                || ( rm -f ChangeLog.tmp ; \
                     echo Failed to generate ChangeLog >&2 ); \
        else \
                echo A git clone is required to generate a ChangeLog >&2; \

Unless you set automake strictness to foreign


in your file, you will need a dummy ChangeLog in your repository, like:

2009-04-17  Your Name  <>

        * *: The ChangeLog is auto-generated when releasing. If you
        are seeing this, use 'git log' for a detailed list of changes.

Git/ChangeLog (last edited 2010-11-20 13:24:22 by NikolaiKondrashov)