aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMakefile.PL2
-rw-r--r--doc/ikiwiki.setup3
-rw-r--r--doc/todo.mdwn5
-rw-r--r--doc/usage.mdwn13
-rwxr-xr-xikiwiki21
-rwxr-xr-xmdwn2man3
-rw-r--r--templates/recentchanges.tmpl3
7 files changed, 34 insertions, 16 deletions
diff --git a/Makefile.PL b/Makefile.PL
index 5ca5e1259..e5d05dea4 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -25,7 +25,7 @@ extra_install:
cp templates/* $(PREFIX)/share/ikiwiki/templates
install -d $(PREFIX)/share/ikiwiki/basewiki
- cp basewiki/* $(PREFIX)/share/ikiwiki/basewiki
+ cp -a basewiki/* $(PREFIX)/share/ikiwiki/basewiki
}
}
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
index 7167e6e57..d0a2829a1 100644
--- a/doc/ikiwiki.setup
+++ b/doc/ikiwiki.setup
@@ -15,7 +15,8 @@ use IkiWiki::Setup::Standard {
url => "http://myhost/wiki",
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.
svn => 1,
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index 3e2374a4f..39d4604d7 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -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
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
Possibly add "next 100" link to it, but OTOH, you can just use svn log if
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index 75e3aa246..debe04e1f 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -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.
-* --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
diff --git a/ikiwiki b/ikiwiki
index 167b9d43a..54589ec2e 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -13,7 +13,7 @@ my (%links, %oldlinks, %oldpagemtime, %renderedfiles, %pagesources);
# Holds global config settings, also used by some modules.
our %config=( #{{{
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_.:\/+]+$)/,
verbose => 0,
wikiname => "wiki",
@@ -23,6 +23,7 @@ our %config=( #{{{
url => '',
cgiurl => '',
historyurl => '',
+ diffurl => '',
anonok => 0,
rebuild => 0,
wrapper => undef,
@@ -46,6 +47,7 @@ GetOptions( #{{{
"url=s" => \$config{url},
"cgiurl=s" => \$config{cgiurl},
"historyurl=s" => \$config{historyurl},
+ "diffurl=s" => \$config{diffurl},
"exclude=s@" => sub {
$config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
},
@@ -344,7 +346,7 @@ sub finalize ($$$) { #{{{
if (length $config{historyurl}) {
my $u=$config{historyurl};
- $u=~s/\[\[\]\]/$pagesources{$page}/g;
+ $u=~s/\[\[file\]\]/$pagesources{$page}/g;
$template->param(historyurl => $u);
}
@@ -571,8 +573,15 @@ sub rcs_recentchanges ($) { #{{{
$when=concise(ago(time - str2time($3)));
}
elsif ($state eq 'header' && /^\s+[A-Z]\s+\Q$svn_base\E\/([^ ]+)(?:$|\s)/) {
- push @pages, { link => htmllink("", pagename($1), 1) }
- if length $1;
+ my $file=$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' && /^$/) {
$state='body';
@@ -592,7 +601,8 @@ sub rcs_recentchanges ($) { #{{{
user => htmllink("", $user, 1),
committype => $committype,
when => $when, message => [@message],
- pages => [@pages] } if @pages;
+ pages => [@pages],
+ } if @pages;
return @ret if @ret >= $num;
$state='header';
@@ -765,6 +775,7 @@ sub gen_wrapper (@) { #{{{
push @params, "--url=$config{url}" if length $config{url};
push @params, "--cgiurl=$config{cgiurl}" if length $config{cgiurl};
push @params, "--historyurl=$config{historyurl}" if length $config{historyurl};
+ push @params, "--diffurl=$config{diffurl}" if length $config{diffurl};
push @params, "--anonok" if $config{anonok};
my $params=join(" ", @params);
my $call='';
diff --git a/mdwn2man b/mdwn2man
index 13b1b84a8..57c41c865 100755
--- a/mdwn2man
+++ b/mdwn2man
@@ -4,12 +4,11 @@
print ".TH ikiwiki 1\n";
while (<>) {
+ s{(\\?)\[\[([^\s\]]+)\]\]}{$1 ? "[[$2]]" : $2}eg;
s/^#\s/.SH /;
s/^\s+//;
s/^Warning:.*//g;
s/^$/.PP\n/;
- s/\[\[//g;
- s/\]\]//g;
s/\`//g;
s/^\*\s+(.*)/.IP "$1"/;
next if $_ eq ".PP\n" && $skippara;
diff --git a/templates/recentchanges.tmpl b/templates/recentchanges.tmpl
index 3dc9fc1be..b42975e95 100644
--- a/templates/recentchanges.tmpl
+++ b/templates/recentchanges.tmpl
@@ -13,6 +13,9 @@
<li> <!-- <TMPL_VAR NAME="REV"> -->
<TMPL_LOOP NAME="PAGES">
<TMPL_VAR NAME="LINK">
+ <TMPL_IF NAME="DIFFURL">
+ (<a href="<TMPL_VAR NAME="DIFFURL">">diff</a>)
+ </TMPL_IF>
</TMPL_LOOP>
<br>
<!-- <TMPL_VAR NAME="COMMITTYPE"> -->