threads / discuss / 7046

ANNOUNCE: git2cl

Subject: ANNOUNCE: git2cl

## tl;dr

4 messages between Mar 2, 2007 and Mar 4, 2007.

replies: 3people: 3as markdown or json

Simon Josefsson· Mar 2, 2007, 09:03 UTC · lore

Hi! I really need proper GNU ChangeLog functionality for my projects, so I ended up writing my own script to do this in Perl. Below is the README, but you can find more information at:

http://josefsson.org/git2cl/
I push my changes to:
http://repo.or.cz/w/git2cl.git

I've enabled so that the 'mob' user can apply changes, so feel free to improve on it if you like.

/Simon

git2cl ======

This is a quick'n'dirty tool to convert git logs to GNU ChangeLog format.

The tool expects output from 'git --pretty --numstat --summary' on stdin. Thus, typically you would use it as follows:

........................................................................... jas@mocca:~/src/libtasn1$ git log --pretty --numstat --summary | ~/src/git2cl/git2cl > ChangeLog jas@mocca:~/src/libtasn1$ ...........................................................................

The output format is specified by:
link:http://www.gnu.org/prep/standards/html_node/Change-Logs.html[]

In the future, git2cl may be modified to run this command itself, similar to how cvs2cl works.

My inspiration for writing this tool was the link:http://www.red-bean.com/cvs2cl/[cvs2cl] tool, which I am using in several projects. Replacing it is a necessary condition for me to seriously consider switching from CVS to GIT for my projects.

Currently, git2cl lacks much of the flexibility in git2cl. Sheesh, git2cl doesn't even have command line parameters!

The canonical home page for git2cl is: link:http://josefsson.org/git2cl/[] and its repository can be found at link:http://repo.or.cz/w/git2cl.git[].

Support -------

Try talking to mailto:simon@josefsson.org[Simon Josefsson].
Andreas Herrmann· Mar 2, 2007, 10:16 UTC · re: Simon Josefsson · lore

Re: ANNOUNCE: git2cl

On Fri, Mar 02, 2007 at 10:03:09AM +0100, Simon Josefsson wrote:
Show 6 quoted lines
> Hi!  I really need proper GNU ChangeLog functionality for my projects,
> so I ended up writing my own script to do this in Perl.  Below is the
> README, but you can find more information at:
> 
> http://josefsson.org/git2cl/
> 
Hi,

Just for your interest ... I downloaded git2cl version as of 02-Mar-2007 09:58, gave it a try and received the following (while running the script for an current git tree):

  #> git log --pretty --numstat --summary | ~/git2cl
  2007-02-28  Junio C Hamano <junkio@cox.net>
          * : Add recent changes to draft 1.5.1 release notes.
  Usage: POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday =
  -1, yday = -1, isdst = -1)
     at git2cl line 257, <> line 20.
So it seems that your script needs some improvement.
Regards,
Andreas
Simon Josefsson· Mar 2, 2007, 11:05 UTC · re: Andreas Herrmann · lore

Re: ANNOUNCE: git2cl

"Andreas Herrmann" <andreas.herrmann3@amd.com> writes:
Show 15 quoted lines
> On Fri, Mar 02, 2007 at 10:03:09AM +0100, Simon Josefsson wrote:
>> Hi!  I really need proper GNU ChangeLog functionality for my projects,
>> so I ended up writing my own script to do this in Perl.  Below is the
>> README, but you can find more information at:
>> 
>> http://josefsson.org/git2cl/
>> 
>
>
> Hi,
>
> Just for your interest ...
> I downloaded git2cl version as of 02-Mar-2007 09:58, gave it a try and
> received the following (while running the script for an current git
> tree):
Hi.  Thanks for testing!
Show 12 quoted lines
>   #> git log --pretty --numstat --summary | ~/git2cl
>   2007-02-28  Junio C Hamano <junkio@cox.net>
>
>           * : Add recent changes to draft 1.5.1 release notes.
>
>
>
>   Usage: POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday =
>   -1, yday = -1, isdst = -1)
>      at git2cl line 257, <> line 20.
>
> So it seems that your script needs some improvement.

Yup! The parser did not handle merges, and several other things that I haven't learned about and didn't use in libtasn1 yet.

I have fixed the script so that it doesn't break on the git log. However, the log style used in git doesn't work perfectly with the ChangeLog format, some problems are:

* Sentences are sometimes finished with newline instead of '.'.  It is
  difficult for the parser to know when a sentence is finished or not.
  For example:
    * np/types:
      Cleanup check_valid in commit-tree.
      make sure enum object_type is signed
      get rid of lookup_object_type()
      convert object type handling from a string to a number
      formalize typename(), and add its reverse type_from_string()
      sha1_file.c: don't ignore an error condition in sha1_loose_object_info()
      sha1_file.c: cleanup "offset" usage
      sha1_file.c: cleanup hdr usage
* The Signed-off-by message also aren't terminated with '.'.  However,
  I think it would be useful to put these headers together with the
  author field, something like this:
2007-02-28  Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
        Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
        Signed-off-by: Junio C Hamano <junkio@cox.net>
        * Documentation/Makefile: Include config.mak in doc/Makefile
        config.mak.autogen is already there.  Without this change it is not
        possible to override mandir in config.mak. 
   However, this is an extension of the changelog format, and should
   probably be discussed within the GNU community.
There are more issues, but making this work right is not my priority.

If you care, please run the script and compare the output with what you believe should have happened and try to improve it. Possibly the current parser is too simplistic to handle more complex situations, but there is a starting point for everything...

/Simon
Jakub Narebski· Mar 4, 2007, 00:29 UTC · re: Simon Josefsson · lore

Re: ANNOUNCE: git2cl

Simon Josefsson wrote:
Show 12 quoted lines
> Hi!  I really need proper GNU ChangeLog functionality for my projects,
> so I ended up writing my own script to do this in Perl.  Below is the
> README, but you can find more information at:
> 
> http://josefsson.org/git2cl/
> 
> I push my changes to:
> 
> http://repo.or.cz/w/git2cl.git
> 
> I've enabled so that the 'mob' user can apply changes, so feel free to
> improve on it if you like.
I have added  note about git2cl at Git wiki, at
  http://git.or.cz/gitwiki/InterfacesFrontendsAndTools#git2cl
Please do review, and correct errors (if any). TIA.
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

← back to recent threads