libssh2
/
git2news.pl
78 строк · 1.7 Кб
1#!/usr/bin/env perl
2# Copyright (C) The libssh2 project and its contributors.
3# SPDX-License-Identifier: BSD-3-Clause
4
5# git log --pretty=fuller --no-color --date=short --decorate=full
6
7my @mname = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
8'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' );
9
10sub nicedate {
11my ($date)=$_;
12
13if($date =~ /(\d\d\d\d)-(\d\d)-(\d\d)/) {
14return sprintf("%d %s %4d", $3, $mname[$2-1], $1);
15}
16return $date;
17}
18
1920' Changelog for the libssh2 project. Generated with git2news.pl
21';
22
23my $line;
24my $tag;
25while(<STDIN>) {
26my $l = $_;
27
28if($l =~/^commit ([[:xdigit:]]*) ?(.*)/) {
29$co = $1;
30my $ref = $2;
31if ($ref =~ /refs\/tags\/(libssh2-|VERSION\.)([0-9._]*)/) {
32$tag = $2;
33} else {
34$tag = '';
35}
36}
37elsif($l =~ /^Author: *(.*) +</) {
38$a = $1;
39}
40elsif($l =~ /^Commit: *(.*) +</) {
41$c = $1;
42}
43elsif($l =~ /^CommitDate: (.*)/) {
44$date = nicedate($1);
45}
46elsif($l =~ /^( )(.*)/) {
47my $extra;
48if ($tag) {
49# Version entries have a special format
50print "\nVersion " . $tag." ($date)\n";
51$oldc = "";
52$tag = "";
53}
54if($a ne $c) {
55$extra=sprintf("\n- [%s brought this change]\n\n ", $a);
56}
57else {
58$extra="\n- ";
59}
60if($co ne $oldco) {
61if($c ne $oldc) {
62print "\n$c ($date)$extra";
63}
64else {
65print "$extra";
66}
67$line =0;
68}
69
70$oldco = $co;
71$oldc = $c;
72$olddate = $date;
73if($line++) {
74print " ";
75}
76print $2."\n";
77}
78}
79