diff options
author | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-02 14:11:15 -0500 |
---|---|---|
committer | Amitai Schlair <schmonz-web-ikiwiki@schmonz.com> | 2013-02-02 14:11:15 -0500 |
commit | 91b477c08789142667aad8e3c737e9b9a4d4ce64 (patch) | |
tree | ecdac70b4f36ff48c6b34c006172fde4c45738fa | |
parent | 0f3f809a45f25e6a32ff505c5d8d3da43be77abb (diff) | |
download | ikiwiki-91b477c08789142667aad8e3c737e9b9a4d4ce64.tar ikiwiki-91b477c08789142667aad8e3c737e9b9a4d4ce64.tar.gz |
Fix diffurl links (cvsweb expects unescaped '/').
-rw-r--r-- | IkiWiki/Plugin/cvs.pm | 4 | ||||
-rwxr-xr-x | t/cvs.t | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index bccab3159..841aec914 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -314,7 +314,9 @@ sub rcs_recentchanges ($) { $oldrev =~ s/INITIAL/0/; $newrev =~ s/\(DEAD\)//; my $diffurl = defined $config{diffurl} ? $config{diffurl} : ""; - my $epage = uri_escape_utf8($page); + my $epage = join('/', + map { uri_escape_utf8($_) } split('/', $page) + ); $diffurl=~s/\[\[file\]\]/$epage/g; $diffurl=~s/\[\[r1\]\]/$oldrev/g; $diffurl=~s/\[\[r2\]\]/$newrev/g; @@ -388,6 +388,12 @@ sub test_rcs_diff { @changes = IkiWiki::rcs_recentchanges(3); is_total_number_of_changes(\@changes, 1); + unlike( + $changes[0]->{pages}->[0]->{diffurl}, + qr/%2F/m, + q{path separators are preserved when UTF-8scaping filename}, + ); + my $changeset = 1; my $maxlines = undef; @@ -573,6 +579,7 @@ sub _generate_test_config { $config{cvsrepo} = "$dir/repo"; $config{cvspath} = "ikiwiki"; use Cwd; $config{templatedir} = getcwd() . '/templates'; + $config{diffurl} = "/nonexistent/cvsweb/[[file]]"; IkiWiki::loadplugins(); IkiWiki::checkconfig(); } |