From: Marcus D. Hanwell Date: Sun, 17 Apr 2011 01:47:58 GMT Subject: Re: Generating GNU-style Changelog from git commits Message-ID: In-Reply-To: <4DAA3A0D.6070904@gmail.com> On Sat, Apr 16, 2011 at 8:53 PM, Chris Packham wrote: > On 17/04/11 10:46, David Chanters wrote: >> >> [Please Cc me on replies.  Thanks!] >> >> Hi, >> >> Some projects maintain a ChangeLog file, which looks something like this: >> >> 2011-01-01  David Chanters >>         * foo/bar.c (some_function): >>          Changed static variable in some_function to auto. >> >> etc., etc. >> >> Here "foo" is some directory relative to the top-level directory the >> .git one is in. >> >> These ChangeLog files are maintained manually, irrespective of the/any >> revision control system in use.  I am wondering if it's possible if >> the project is in Git to be able to automatically append to such a >> ChangeLog file with each commit automatically, and have it formatted >> in the style above. >> >> Is this possible?  Is it a solved problem?  If not, and I wanted to >> try myself, could someone point me at the git-specific tools I'd need >> to know to use to achieve it? > > Shouldn't be to hard, there are numerous hooks that could be used either on > the developer end (post-commit), on the server end (post-update) or even > when a maintainer applies a patch (post-applypatch). See githooks(5) for > more info on what hooks are available and what args are passed. > > There is also the possibility of generating this changelog at the time of > release. I'd advocate this approach as it would allow you to edit the > changelog to make it more useful to readers. Something I wrote a few years ago does this for us. It may not be perfect, but there was a desire to have a Changelog in our released tarballs, https://github.com/cryos/avogadro/blob/master/scripts/gitlog2changelog.py If there are better ways of doing this I would certainly be interested, but have not spent much time on this since writing the initial script. We had a similar desire, but didn't want to end up resolving conflicts around a file in version control. Marcus