Re: Changelogs on kernel.org

Tomas Szepe
2002-05-13T11:58:43Z

> > I agree. If developers need that changelog style it's fine, but on kernel.org
> > homepage there should the old changelog format, so everyone can read it.
> > The best changelog i've ever seen is the one used around ~2.4.9 release
> >
> > - changedescription (author)
>
> So, is there anybody willing to put together the scripts to
> generate this changelog format automatically ?

Alright, another one.

$ ./fmtcl2.pl /usr/src/ChangeLog-2.5.14

Summary of changes from v2.5.13 to v2.5.14
============================================

o kd.h (Andries.Brouwer@cwi.nl)
o NTFS: Release 2.0.6 - Major bugfix to make compatible with other kernel changes. (aia21@cantab.net)
o mm/memory.c: (aia21@cantab.net)
o suppress allocation warnings for radix-tree allocations (akpm@zip.com.au)
o radix-tree locking fix (akpm@zip.com.au)
o Allow truncate to discard unmapped buffers (akpm@zip.com.au)
o decouple swapper_space treatment from other address_spaces (akpm@zip.com.au)
o Allow ext3 pages to be written back by VM pressure (akpm@zip.com.au)
o Fix SMP race in truncate (akpm@zip.com.au)
o handle concurrent block_write_full_page and set_page_dirty (akpm@zip.com.au)
o Fix PG_launder (akpm@zip.com.au)
o Fix concurrent writepage and readpage (akpm@zip.com.au)
o Documentation update (akpm@zip.com.au)
o remove PRD_SEGMENTS (axboe@suse.de)
o 2.5.13 IDE 50 (dalecki@evision-ventures.com)
o 2.5.13 IDE 51 (dalecki@evision-ventures.com)
o 2.5.13 IDE 52 (dalecki@evision-ventures.com)
o 2.5.13 IDE 53 (dalecki@evision-ventures.com)
o [PATCH 2.5.13 IDE 54 (dalecki@evision-ventures.com)
o remove global_bufferlist_lock (hch@infradead.org)
o fix config.in syntax errors. (hch@infradead.org)
<snip>

#!/usr/bin/perl -w

use strict;

my %people = ();
my $addr = "";
my @cur = ();
my $len = 60;

sub append_item()
{
if (!$addr) { return; }
if (!$people{$addr}) { @{$people{$addr}} = (); }
push @{$people{$addr}}, [@cur];

@cur = ();
}

sub print_terse_items($)
{
my @items = @{$people{$_[0]}};
while ($_ = shift @items) {
my $fill = (" " x ($len - length(@$_[0]) + 1));
print "@$_$fill($_[0])\n";
}
}

while (<>) {
# Match address
if (/^\s*<([^>]+)>/) {
# Add old item (if any) before beginning new
append_item();
$addr = $1;
} elsif ($addr) {
# Add line to patch
# strip whitespace at start & end
s/^\s*(.*)\s*$/$1/;
# kill starting 'PATCH' captions
s/\s*\[?PATCH\]?\s*//;
# insert a bullet
s/^(.*)$/o $1/;
# Only save 1 line
if (scalar(@cur) < 1) {
push @cur, "$_";
# save record line length
if ((my $nlen = length($_)) > $len) { $len = $nlen; }
}
} else {
# Header information
print;
}
}

append_item();
foreach $addr (sort keys %people) {
print_terse_items($addr);
}