use IkiWiki;
use POSIX qw(setlocale LC_CTYPE);
+package IkiWiki::Rcs::svn;
+
+sub import { #{{{
+ if (exists $IkiWiki::config{svnpath}) {
+ # code depends on the path not having extraneous slashes
+ $IkiWiki::config{svnpath}=~tr#/#/#s;
+ $IkiWiki::config{svnpath}=~s/\/$//;
+ $IkiWiki::config{svnpath}=~s/^\///;
+ }
+} #}}}
+
+
package IkiWiki;
-
+
# svn needs LC_CTYPE set to a UTF-8 locale, so try to find one. Any will do.
sub find_lc_ctype() {
my $current = setlocale(LC_CTYPE());
$committype="svn";
}
- foreach (keys %{$logentry->{paths}}) {
- next unless ! length $config{svnpath} ||
- /^\/\Q$config{svnpath}\E\/([^ ]+)(?:$|\s)/;
- my $file=$1;
+ foreach my $file (keys %{$logentry->{paths}}) {
+ if (length $config{svnpath}) {
+ next unless $file=~/^\/\Q$config{svnpath}\E\/([^ ]+)(?:$|\s)/;
+ $file=$1;
+ }
+
my $diffurl=$config{diffurl};
$diffurl=~s/\[\[file\]\]/$file/g;
$diffurl=~s/\[\[r1\]\]/$rev - 1/eg;
$diffurl=~s/\[\[r2\]\]/$rev/g;
+
push @pages, {
page => pagename($file),
diffurl => $diffurl,
} if length $file;
}
- push @ret, { rev => $rev,
+ push @ret, {
+ rev => $rev,
user => $user,
committype => $committype,
when => $when,
my @changed_pages;
foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) {
chomp $change;
- if (! length $config{svnpath} ||
- $change =~ /^[A-Z]+\s+\Q$config{svnpath}\E\/(.*)/) {
- push @changed_pages, $1;
+ if (length $config{svnpath}) {
+ if ($change =~ /^[A-Z]+\s+\Q$config{svnpath}\E\/(.*)/) {
+ push @changed_pages, $1;
+ }
+ }
+ else {
+ push @changed_pages, $change;
}
}