X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/d69488a9df6ae9537402256931ce9ea93f445d3d..453724f7dd9d79f0922c7ead2dd8dc833fb8aedd:/IkiWiki/Rcs/svn.pm

diff --git a/IkiWiki/Rcs/svn.pm b/IkiWiki/Rcs/svn.pm
index 87fd12fad..761a40a27 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");
 			}
 		}
@@ -177,7 +188,8 @@ sub rcs_recentchanges ($) { #{{{
 		}
 
 		foreach (keys %{$logentry->{paths}}) {
-			next unless /^\/\Q$config{svnpath}\E\/([^ ]+)(?:$|\s)/;
+			next unless ! length $config{svnpath} || 
+			            /^\/\Q$config{svnpath}\E\/([^ ]+)(?:$|\s)/;
 			my $file=$1;
 			my $diffurl=$config{diffurl};
 			$diffurl=~s/\[\[file\]\]/$file/g;
@@ -219,7 +231,8 @@ 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\/(.*)/) {
+		if (! length $config{svnpath} || 
+		    $change =~ /^[A-Z]+\s+\Q$config{svnpath}\E\/(.*)/) {
 			push @changed_pages, $1;
 		}
 	}