From 62f5fd30a2b3e800a70a85dba6a2cbdc15668c2a Mon Sep 17 00:00:00 2001 From: demonchy Date: Tue, 9 Aug 2005 21:52:19 +0000 Subject: Ajout de svnlog (conversion des logs svn en html) --- d/sys/lampion/local/lib/svnlog/html.tt | 59 +++++++++++++++++++++++++++ d/sys/lampion/local/sbin/svnlog | 74 ++++++++++++++++++++++++++++++++++ d/sys/lampion/www/robot/svnlog.css | 43 ++++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 d/sys/lampion/local/lib/svnlog/html.tt create mode 100755 d/sys/lampion/local/sbin/svnlog create mode 100644 d/sys/lampion/www/robot/svnlog.css (limited to 'd') diff --git a/d/sys/lampion/local/lib/svnlog/html.tt b/d/sys/lampion/local/lib/svnlog/html.tt new file mode 100644 index 0000000..f6c05b8 --- /dev/null +++ b/d/sys/lampion/local/lib/svnlog/html.tt @@ -0,0 +1,59 @@ +[% USE date %] +[% BLOCK msg %] + [% FOREACH msg = msgs %] + [% msg %]
+ [% END %] +[% END %] +[% BLOCK files_list %] + +[% END %] + + + + + + Log Svn + + + +
+ [% FOREACH r = revisions -%] + [% IF r.msg.size () > 0 %] +
+
[% date.format (r.date, 'le %D à %H:%S') %]
+
Révision : [% r.rev %]
+
+

Auteur :

+

[% r.author %]

+
+
+

Message :

+

[% PROCESS msg msgs = r.msg %]

+
+ [% IF r.exists ('upd') %] +
+

Fichiers modifiés :

+ [% PROCESS files_list files = r.upd %] +
+ [% END %] + [% IF r.exists ('add') %] +
+

Fichiers ajoutés :

+ [% PROCESS files_list files = r.add %] +
+ [% END %] + [% IF r.exists ('del') %] +
+

Fichiers supprimés :

+ [% PROCESS files_list files = r.del %] +
+ [% END %] +
+ [% END %] + [% END -%] +
+ diff --git a/d/sys/lampion/local/sbin/svnlog b/d/sys/lampion/local/sbin/svnlog new file mode 100755 index 0000000..51af104 --- /dev/null +++ b/d/sys/lampion/local/sbin/svnlog @@ -0,0 +1,74 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +use Template; +use Getopt::Long qw(:config no_ignore_case); + +my $repos; +my $template; +my $n_old_revision = 10; +my $svnlook = 'svnlook'; + +sub parse_revision +{ + my ($r, $rev) = @_; + # General Information + my @cmd = `$svnlook --revision $r info $repos`; + map { chomp; } @cmd; + $$rev{rev} = $r; + $$rev{author} = shift @cmd; + $$rev{date} = shift @cmd; + shift @cmd; # log message size + pop @cmd while (@cmd && $cmd[-1] eq ''); # remove empty lines + $$rev{msg} = \@cmd; + # Changed + open OUT, "$svnlook --revision $r changed $repos|"; + while () + { + if (/^([A-Z])\s+(.+)$/) + { + push @{$$rev{add}}, $2 and next if $1 eq 'A'; + push @{$$rev{upd}}, $2 and next if $1 eq 'U'; + push @{$$rev{del}}, $2 and next if $1 eq 'D'; + } + } +} + +sub usage +{ + print "Usage: $0 [ -n number of revisions to show ] -t template dir -r reposotory\n"; + exit 0; +} + +sub config +{ + my $help; + GetOptions ("h" => \$help, + "t=s" => \$template, + "n=i" => \$n_old_revision, + "r=s" => \$repos + ); + die usage () if ((!defined $template and !defined $repos) or defined $help); +} + +{ + # Collect data + config (); + my $cur_rev =`$svnlook youngest $repos`; + chomp $cur_rev; + my $last_rev = $cur_rev - $n_old_revision; + $last_rev = 0 if ($last_rev < 0); + my @revisions; + for (my $i = $cur_rev; $i > $last_rev; $i --) + { + my %revision; + parse_revision ($i, \%revision); + push @revisions, \%revision; + } + # Print it + my $tt = new Template ({ INCLUDE_PATH => $template }); + $tt->process ('html.tt', { revisions => \@revisions }) + or die $tt->error; +} diff --git a/d/sys/lampion/www/robot/svnlog.css b/d/sys/lampion/www/robot/svnlog.css new file mode 100644 index 0000000..0523318 --- /dev/null +++ b/d/sys/lampion/www/robot/svnlog.css @@ -0,0 +1,43 @@ +body { + background : #cccccc; + padding : 1em; + margin : 0; +} + +#page { + border : 1px dashed #000000; + background : #ffffff; + padding : 1em; +} + +.ci { + border : 1px solid #003366; + background : #99ccee; + padding : 0em 0; + margin : 1em 0; +} +.ci .date { + float : right; + color : darkred; + margin : 0 1em 0 0; + font-weight : bold; + +} +.ci .rev { + padding : 0 0 0 1em; + background : #6699cc; + font-weight : bold; +} +.ci .author, .ci .log { + padding : 0 1em; +} +.ci h3 { + font-size : 11pt; + text-decoration : underline; + padding: 0; + margin: 0.2em; +} +.ci .author p, .ci .log p, .ci .log li{ + /*font-family : 'monospace';*/ + margin : 0 0 0 1em; +} -- cgit v1.2.3