Do not UTF8-escape "/" in Git's diffurl: cgit does not support this.

master
intrigeri 2013-12-31 01:27:21 +00:00
parent 5351cdd0f0
commit d52774dd45
2 changed files with 27 additions and 2 deletions

View File

@ -660,7 +660,9 @@ sub rcs_recentchanges ($) {
my @pages;
foreach my $detail (@{ $ci->{'details'} }) {
my $file = $detail->{'file'};
my $efile = uri_escape_utf8($file);
my $efile = join('/',
map { uri_escape_utf8($_) } split('/', $file)
);
my $diffurl = defined $config{'diffurl'} ? $config{'diffurl'} : "";
$diffurl =~ s/\[\[file\]\]/$efile/go;

25
t/git.t
View File

@ -16,13 +16,14 @@ BEGIN {
die $@;
}
}
use Test::More tests => 18;
use Test::More tests => 22;
BEGIN { use_ok("IkiWiki"); }
%config=IkiWiki::defaultconfig();
$config{rcs} = "git";
$config{srcdir} = "$dir/src";
$config{diffurl} = '/nonexistent/cgit/plain/[[file]]';
IkiWiki::loadplugins();
IkiWiki::checkconfig();
@ -94,4 +95,26 @@ is($changes[0]{pages}[0]{"page"}, "newdir/test5");
IkiWiki::rcs_remove("newdir/test5.mdwn");
IkiWiki::rcs_commit_staged(message => "Remove the 5th page");
# diffurl escaping
ok(mkdir($config{srcdir}."/diffurl_dir"));
my $test3 = readfile("t/test1.mdwn");
writefile('test3.mdwn', $config{srcdir}."/diffurl_dir", $test3);
IkiWiki::rcs_add("diffurl_dir/test3.mdwn");
IkiWiki::rcs_commit(
file => "diffurl_dir/test3.mdwn",
message => "Added a page in diffurl_dir",
token => "moo",
);
@changes = IkiWiki::rcs_recentchanges(5);
is($#changes, 4);
is($changes[0]{pages}[0]{"page"}, "diffurl_dir/test3");
unlike(
$changes[0]{pages}[0]{"diffurl"},
qr{%2F}m,
q{path separators are preserved when UTF-8scaping filename}
);
system "rm -rf $dir";