add --diffurl, if set RecentChanges has links to svn diffs

master
joey 2006-03-21 01:18:01 +00:00
parent b7c86dda2f
commit 773731743d
7 changed files with 34 additions and 16 deletions

View File

@ -25,7 +25,7 @@ extra_install:
cp templates/* $(PREFIX)/share/ikiwiki/templates cp templates/* $(PREFIX)/share/ikiwiki/templates
install -d $(PREFIX)/share/ikiwiki/basewiki install -d $(PREFIX)/share/ikiwiki/basewiki
cp basewiki/* $(PREFIX)/share/ikiwiki/basewiki cp -a basewiki/* $(PREFIX)/share/ikiwiki/basewiki
} }
} }

View File

@ -15,7 +15,8 @@ use IkiWiki::Setup::Standard {
url => "http://myhost/wiki", url => "http://myhost/wiki",
cgiurl => "http://myhost/ikiwiki.cgi", cgiurl => "http://myhost/ikiwiki.cgi",
#historyurl => "http://svn.myhost/trunk/[[]]", #historyurl => "http://svn.myhost/trunk/[[file]]",
#diffurl => "http://svn.someurl/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]",
# Whether to integrate with svn. # Whether to integrate with svn.
svn => 1, svn => 1,

View File

@ -87,11 +87,6 @@ design goals for ikiwiki: keeping as much markup as possible out of the
wiki and not adding nonstandard markup. And it's not significantly hard to wiki and not adding nonstandard markup. And it's not significantly hard to
type "--\[[Joey]]", and as to the date, we do have page history. type "--\[[Joey]]", and as to the date, we do have page history.
## recentchanges links to commit diffs
Would take a bit more viewcvs integration, let the be a "[diff]" link in
recentchanges that goes to the diff for any listed change.
## recentchanges more than 100 ## recentchanges more than 100
Possibly add "next 100" link to it, but OTOH, you can just use svn log if Possibly add "next 100" link to it, but OTOH, you can just use svn log if

View File

@ -76,9 +76,18 @@ flags such as --verbose can be negated with --no-verbose.
Specifies the url to the ikiwiki [[CGI]] script [[wrapper]]. Required when building the wiki for links to the cgi script to be generated. Specifies the url to the ikiwiki [[CGI]] script [[wrapper]]. Required when building the wiki for links to the cgi script to be generated.
* --historyurl http://svn.someurl/trunk/[[]]?root=wiki * --historyurl http://svn.someurl/trunk/\[[file]]?root=wiki
Specifies the url to link to for page history browsing. In the url, "[[]]" is replaced with the page to browse. It's common to use [[ViewCVS]] for this. Specifies the url to link to for page history browsing. In the url,
"\[[file]]" is replaced with the file to browse. It's common to use
[[ViewCVS]] for this.
* --diffurl http://svn.someurl/trunk/\[[file]]?root=wiki&r1=\[[r1]]&r2=\[[r2]]
Specifies the url to link to for a diff of changes to a page. In the url,
"\[[file]]" is replaced with the file to browse, "\[[r1]]" is the old
revision of the page, and "\[[r2]]" is the new revision. It's common to use
[[ViewCVS]] for this.
* --exclude regexp * --exclude regexp

21
ikiwiki
View File

@ -13,7 +13,7 @@ my (%links, %oldlinks, %oldpagemtime, %renderedfiles, %pagesources);
# Holds global config settings, also used by some modules. # Holds global config settings, also used by some modules.
our %config=( #{{{ our %config=( #{{{
wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$)}, wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$)},
wiki_link_regexp => qr/\[\[([^\s]+)\]\]/, wiki_link_regexp => qr/\[\[([^\s\]]+)\]\]/,
wiki_file_regexp => qr/(^[-A-Za-z0-9_.:\/+]+$)/, wiki_file_regexp => qr/(^[-A-Za-z0-9_.:\/+]+$)/,
verbose => 0, verbose => 0,
wikiname => "wiki", wikiname => "wiki",
@ -23,6 +23,7 @@ our %config=( #{{{
url => '', url => '',
cgiurl => '', cgiurl => '',
historyurl => '', historyurl => '',
diffurl => '',
anonok => 0, anonok => 0,
rebuild => 0, rebuild => 0,
wrapper => undef, wrapper => undef,
@ -46,6 +47,7 @@ GetOptions( #{{{
"url=s" => \$config{url}, "url=s" => \$config{url},
"cgiurl=s" => \$config{cgiurl}, "cgiurl=s" => \$config{cgiurl},
"historyurl=s" => \$config{historyurl}, "historyurl=s" => \$config{historyurl},
"diffurl=s" => \$config{diffurl},
"exclude=s@" => sub { "exclude=s@" => sub {
$config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/; $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
}, },
@ -344,7 +346,7 @@ sub finalize ($$$) { #{{{
if (length $config{historyurl}) { if (length $config{historyurl}) {
my $u=$config{historyurl}; my $u=$config{historyurl};
$u=~s/\[\[\]\]/$pagesources{$page}/g; $u=~s/\[\[file\]\]/$pagesources{$page}/g;
$template->param(historyurl => $u); $template->param(historyurl => $u);
} }
@ -571,8 +573,15 @@ sub rcs_recentchanges ($) { #{{{
$when=concise(ago(time - str2time($3))); $when=concise(ago(time - str2time($3)));
} }
elsif ($state eq 'header' && /^\s+[A-Z]\s+\Q$svn_base\E\/([^ ]+)(?:$|\s)/) { elsif ($state eq 'header' && /^\s+[A-Z]\s+\Q$svn_base\E\/([^ ]+)(?:$|\s)/) {
push @pages, { link => htmllink("", pagename($1), 1) } my $file=$1;
if length $1; my $diffurl=$config{diffurl};
$diffurl=~s/\[\[file\]\]/$file/g;
$diffurl=~s/\[\[r1\]\]/$rev - 1/eg;
$diffurl=~s/\[\[r2\]\]/$rev/g;
push @pages, {
link => htmllink("", pagename($file), 1),
diffurl => $diffurl,
} if length $file;
} }
elsif ($state eq 'header' && /^$/) { elsif ($state eq 'header' && /^$/) {
$state='body'; $state='body';
@ -592,7 +601,8 @@ sub rcs_recentchanges ($) { #{{{
user => htmllink("", $user, 1), user => htmllink("", $user, 1),
committype => $committype, committype => $committype,
when => $when, message => [@message], when => $when, message => [@message],
pages => [@pages] } if @pages; pages => [@pages],
} if @pages;
return @ret if @ret >= $num; return @ret if @ret >= $num;
$state='header'; $state='header';
@ -765,6 +775,7 @@ sub gen_wrapper (@) { #{{{
push @params, "--url=$config{url}" if length $config{url}; push @params, "--url=$config{url}" if length $config{url};
push @params, "--cgiurl=$config{cgiurl}" if length $config{cgiurl}; push @params, "--cgiurl=$config{cgiurl}" if length $config{cgiurl};
push @params, "--historyurl=$config{historyurl}" if length $config{historyurl}; push @params, "--historyurl=$config{historyurl}" if length $config{historyurl};
push @params, "--diffurl=$config{diffurl}" if length $config{diffurl};
push @params, "--anonok" if $config{anonok}; push @params, "--anonok" if $config{anonok};
my $params=join(" ", @params); my $params=join(" ", @params);
my $call=''; my $call='';

View File

@ -4,12 +4,11 @@
print ".TH ikiwiki 1\n"; print ".TH ikiwiki 1\n";
while (<>) { while (<>) {
s{(\\?)\[\[([^\s\]]+)\]\]}{$1 ? "[[$2]]" : $2}eg;
s/^#\s/.SH /; s/^#\s/.SH /;
s/^\s+//; s/^\s+//;
s/^Warning:.*//g; s/^Warning:.*//g;
s/^$/.PP\n/; s/^$/.PP\n/;
s/\[\[//g;
s/\]\]//g;
s/\`//g; s/\`//g;
s/^\*\s+(.*)/.IP "$1"/; s/^\*\s+(.*)/.IP "$1"/;
next if $_ eq ".PP\n" && $skippara; next if $_ eq ".PP\n" && $skippara;

View File

@ -13,6 +13,9 @@
<li> <!-- <TMPL_VAR NAME="REV"> --> <li> <!-- <TMPL_VAR NAME="REV"> -->
<TMPL_LOOP NAME="PAGES"> <TMPL_LOOP NAME="PAGES">
<TMPL_VAR NAME="LINK"> <TMPL_VAR NAME="LINK">
<TMPL_IF NAME="DIFFURL">
(<a href="<TMPL_VAR NAME="DIFFURL">">diff</a>)
</TMPL_IF>
</TMPL_LOOP> </TMPL_LOOP>
<br> <br>
<!-- <TMPL_VAR NAME="COMMITTYPE"> --> <!-- <TMPL_VAR NAME="COMMITTYPE"> -->