git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] New script: git-changelog.perl - revised
@ 2007-11-02 20:03 Ronald Landheer-Cieslak
  2007-11-03  8:36 ` Andreas Ericsson
  0 siblings, 1 reply; 5+ messages in thread
From: Ronald Landheer-Cieslak @ 2007-11-02 20:03 UTC (permalink / raw)
  To: git

I just noticed that I'd been sending personal replies to each and
every one of the replies I got - sorry about that.

Anyway, after Nicolas' suggestion, I moved the script into the contrib
directory and removed it from the Makefile, having the following patch
as net effect.
This is also available through git at
git://vlinder.landheer-cieslak.com/git/git.git#topic/git-log-changelog

As for difference wrt git2cl:
* less complicated
* less dependencies
* short hash for the commits are output in the change log
* git-changelog calls git-log with the proper parameters itself (no
need for the user to call it with a given set of parameters).

rlc

diff --git a/contrib/git-changelog/git-changelog.perl
b/contrib/git-changelog/git-changelog.perl
new file mode 100755
index 0000000..bffa1ab
--- /dev/null
+++ b/contrib/git-changelog/git-changelog.perl
@@ -0,0 +1,68 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+sub fetch_log {
+       my $command='git log --pretty=format:"%ai|%an|%h|%s" ';
+       foreach (@_) {
+               $command .= ' ' . $_;
+       }
+       $command .= " |";
+       my $fh;
+       open $fh, $command
+               or die "Failed to fetch logs";
+       # logs are presented as lines in which fields are separated by pipes.
+       # the fields are the date in ISO format (so the date as we
want it extends to the
+       # first space), the name of the author, the abbreviated SHA1
hash and the subject line
+       my $date_time;
+       my $date;
+       my $cruft;
+       my $author;
+       my $hash;
+       my $subject;
+       my $prev_date="";
+       my @cache; # a cache of the changes for the current date (i.e.
while $prev_date eq $date)
+       my %entry; # a cache entry; $entry{'author'} is the entry and
@$entry{'changes'} are the changes for the author in question
+       while (<$fh>) {
+               ($date_time, $author, $hash, $subject) = split(/\|/);
+               ($date, $cruft) = split(/\s/, $date_time, 2);
+               chomp $author;
+
+               if ($date ne $prev_date)
+               {
+                       foreach (@cache)
+                       {
+                               # print out the line with the date and
the author
+                               my $changes = $_->{'changes'};
+                               print "\n" . $prev_date . "\t" .
$_->{'author'} . "\n" if ($#{$changes} != -1);
+                               foreach (@{$changes})
+                               {
+                                       print "\t" . $_->{'hash'} . ':
' . $_->{'subject'};
+                               }
+                       }
+                       $prev_date = $date;
+                       @cache = ();
+               }
+               # try to find an entry with the same author in the cache
+               my $found = -1;
+               my $i;
+               for ($i = 0; $i <= $#cache && $found == -1; $i++)
+               {
+                       if ($cache[$i]->{'author'} eq $author)
+                       {
+                               $found = $i;
+                       }
+               }
+               if ($found == -1)
+               {
+                       my $changes = ();
+                       push @cache, { 'author', $author, 'changes', $changes };
+                       $found = $#cache;
+               }
+               push @{$cache[$found]->{'changes'}}, { 'hash', $hash,
'subject', $subject };
+       }
+}
+
+fetch_log @ARGV;
+
+



-- 
Ronald Landheer-Cieslak
Software Architect
http://www.landheer-cieslak.com/
New White Paper: "Three Good Reasons to Plan Ahead"

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] New script: git-changelog.perl - revised
  2007-11-02 20:03 [PATCH] New script: git-changelog.perl - revised Ronald Landheer-Cieslak
@ 2007-11-03  8:36 ` Andreas Ericsson
  2007-11-03 13:46   ` Ronald Landheer-Cieslak
  0 siblings, 1 reply; 5+ messages in thread
From: Andreas Ericsson @ 2007-11-03  8:36 UTC (permalink / raw)
  To: Ronald Landheer-Cieslak; +Cc: git

Ronald Landheer-Cieslak wrote:
>
> This is also available through git at
> git://vlinder.landheer-cieslak.com/git/git.git#topic/git-log-changelog
> 

This mode of specifying a repository + branch was just thoroughly shot
down in a list discussion, and git certainly doesn't grok it. I'd be a
happier fella if you didn't use it.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] New script: git-changelog.perl - revised
  2007-11-03  8:36 ` Andreas Ericsson
@ 2007-11-03 13:46   ` Ronald Landheer-Cieslak
  2007-11-03 13:58     ` Johannes Schindelin
  2007-11-03 14:58     ` Alex Riesen
  0 siblings, 2 replies; 5+ messages in thread
From: Ronald Landheer-Cieslak @ 2007-11-03 13:46 UTC (permalink / raw)
  To: Andreas Ericsson; +Cc: git

On Nov 3, 2007 4:36 AM, Andreas Ericsson <ae@op5.se> wrote:
> Ronald Landheer-Cieslak wrote:
> >
> > This is also available through git at
> > git://vlinder.landheer-cieslak.com/git/git.git#topic/git-log-changelog
> >
>
> This mode of specifying a repository + branch was just thoroughly shot
> down in a list discussion, and git certainly doesn't grok it. I'd be a
> happier fella if you didn't use it.
>
Is there a canonical way to specify both the location and the branch
in one shot, then? I must admit that this is the way I've always seen
it specified, so I assumed that this is the way it was done
"canonically". If it isn't, please forgive my ignorance.

rlc


-- 
Ronald Landheer-Cieslak
Software Architect
http://www.landheer-cieslak.com/
New White Paper: "Three Good Reasons to Plan Ahead"

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] New script: git-changelog.perl - revised
  2007-11-03 13:46   ` Ronald Landheer-Cieslak
@ 2007-11-03 13:58     ` Johannes Schindelin
  2007-11-03 14:58     ` Alex Riesen
  1 sibling, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2007-11-03 13:58 UTC (permalink / raw)
  To: Ronald Landheer-Cieslak; +Cc: Andreas Ericsson, git

Hi,

On Sat, 3 Nov 2007, Ronald Landheer-Cieslak wrote:

> On Nov 3, 2007 4:36 AM, Andreas Ericsson <ae@op5.se> wrote:
> > Ronald Landheer-Cieslak wrote:
> > >
> > > This is also available through git at
> > > git://vlinder.landheer-cieslak.com/git/git.git#topic/git-log-changelog
> > >
> >
> > This mode of specifying a repository + branch was just thoroughly shot
> > down in a list discussion, and git certainly doesn't grok it. I'd be a
> > happier fella if you didn't use it.
> >
> Is there a canonical way to specify both the location and the branch
> in one shot, then?

Yes.  Create a repository containing only that branch, as "master", and 
point people to that repository.

Hth,
Dscho

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] New script: git-changelog.perl - revised
  2007-11-03 13:46   ` Ronald Landheer-Cieslak
  2007-11-03 13:58     ` Johannes Schindelin
@ 2007-11-03 14:58     ` Alex Riesen
  1 sibling, 0 replies; 5+ messages in thread
From: Alex Riesen @ 2007-11-03 14:58 UTC (permalink / raw)
  To: Ronald Landheer-Cieslak; +Cc: Andreas Ericsson, git

Ronald Landheer-Cieslak, Sat, Nov 03, 2007 14:46:27 +0100:
> On Nov 3, 2007 4:36 AM, Andreas Ericsson <ae@op5.se> wrote:
> > Ronald Landheer-Cieslak wrote:
> > >
> > > This is also available through git at
> > > git://vlinder.landheer-cieslak.com/git/git.git#topic/git-log-changelog
> > >
> >
> > This mode of specifying a repository + branch was just thoroughly shot
> > down in a list discussion, and git certainly doesn't grok it. I'd be a
> > happier fella if you didn't use it.
> >
> Is there a canonical way to specify both the location and the branch
> in one shot, then? ...

Something like this:

    Please fetch from

    git://vlinder.landheer-cieslak.com/git/git.git topic/git-log-changelog

If one uses git-fetch the result will be in FETCH_HEAD, a pull will
merge it nicely with the commit message like:

    "Merge branch 'topic/git-log-changelog' of git://vlinder.landheer-cieslak.com/git/git"

which fits, I believe.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-11-03 14:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-02 20:03 [PATCH] New script: git-changelog.perl - revised Ronald Landheer-Cieslak
2007-11-03  8:36 ` Andreas Ericsson
2007-11-03 13:46   ` Ronald Landheer-Cieslak
2007-11-03 13:58     ` Johannes Schindelin
2007-11-03 14:58     ` Alex Riesen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).