summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/monotone.pm13
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/monotone_backend_does_not_support_srcdir_in_subdir.mdwn2
3 files changed, 16 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/monotone.pm b/IkiWiki/Plugin/monotone.pm
index 95fbcee76..75bf2f458 100644
--- a/IkiWiki/Plugin/monotone.pm
+++ b/IkiWiki/Plugin/monotone.pm
@@ -252,9 +252,20 @@ sub get_changed_files ($$) {
my @ret;
my %seen = ();
-
+
+ # we need to strip off the relative path to the source dir
+ # because monotone outputs all file paths absolute according
+ # to the workspace root
+ my $rel_src_dir = $config{'srcdir'};
+ $rel_src_dir =~ s/^\Q$config{'mtnrootdir'}\E\/?//;
+ $rel_src_dir .= "/" if length $rel_src_dir;
+
while ($changes =~ m/\s*(add_file|patch|delete|rename)\s"(.*?)(?<!\\)"\n/sg) {
my $file = $2;
+ # ignore all file changes outside the source dir
+ next unless $file =~ m/^\Q$rel_src_dir\E/;
+ $file =~ s/^\Q$rel_src_dir\E//;
+
# don't add the same file multiple times
if (! $seen{$file}) {
push @ret, $file;
diff --git a/debian/changelog b/debian/changelog
index 6d333a843..12cc90b11 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,8 @@ ikiwiki (3.20100927) UNRELEASED; urgency=low
* actiontabs: More consistent styling of Hn tags.
* websetup: Fix saving of advanced mode changes.
* websetup: Fix defaults of checkboxes in advanced mode.
+ * monotone: Fix recentchanges page when the srcdir is not at the top
+ of the monotone workspace. Thanks, tommyd.
-- Joey Hess <joeyh@debian.org> Wed, 29 Sep 2010 11:58:23 -0400
diff --git a/doc/bugs/monotone_backend_does_not_support_srcdir_in_subdir.mdwn b/doc/bugs/monotone_backend_does_not_support_srcdir_in_subdir.mdwn
index 9e1924472..35f624f78 100644
--- a/doc/bugs/monotone_backend_does_not_support_srcdir_in_subdir.mdwn
+++ b/doc/bugs/monotone_backend_does_not_support_srcdir_in_subdir.mdwn
@@ -1,3 +1,5 @@
The [[rcs/monotone]] backend does not currently support putting the ikiwiki srcdir
in a subdirectory of the repository. It must be at the top. Git has
special code to handle this case. --[[Joey]]
+
+[[done]]