X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/951522ebc3fdd129f8f696fe1104546845ead4cb..7f4825928325021a66e400c2e84bac9c52dd99f9:/IkiWiki/Rcs/svn.pm diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm index 848dfac3a..987469ba0 100644 --- a/IkiWiki/Rcs/svn.pm +++ b/IkiWiki/Rcs/svn.pm @@ -5,8 +5,20 @@ use strict; 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()); @@ -85,9 +97,8 @@ sub rcs_commit ($$$;$$) { #{{{ if (defined $rev && defined $oldrev && $rev != $oldrev) { # Merge their changes into the file that we've # changed. - chdir($config{srcdir}); # svn merge wants to be here if (system("svn", "merge", "--quiet", "-r$oldrev:$rev", - "$config{srcdir}/$file") != 0) { + "$config{srcdir}/$file", "$config{srcdir}/$file") != 0) { warn("svn merge -r$oldrev:$rev failed\n"); } } @@ -95,7 +106,7 @@ sub rcs_commit ($$$;$$) { #{{{ if (system("svn", "commit", "--quiet", "--encoding", "UTF-8", "-m", possibly_foolish_untaint($message), - "$config{srcdir}") != 0) { + $config{srcdir}) != 0) { my $conflict=readfile("$config{srcdir}/$file"); if (system("svn", "revert", "--quiet", "$config{srcdir}/$file") != 0) { warn("svn revert failed\n"); @@ -176,13 +187,17 @@ sub rcs_recentchanges ($) { #{{{ $committype="svn"; } - foreach (keys %{$logentry->{paths}}) { - next unless /^\/\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, @@ -203,7 +218,7 @@ sub rcs_recentchanges ($) { #{{{ sub rcs_notify () { #{{{ if (! exists $ENV{REV}) { - error("REV is not set, not running from svn post-commit hook, cannot send notifications"); + error(gettext("REV is not set, not running from svn post-commit hook, cannot send notifications")); } my $rev=int(possibly_foolish_untaint($ENV{REV})); @@ -219,8 +234,13 @@ sub rcs_notify () { #{{{ my @changed_pages; foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) { chomp $change; - if ($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; } }