aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/monotone.pm
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2010-10-11 20:30:14 -0400
committerJoey Hess <joey@kitenet.net>2010-10-11 20:30:14 -0400
commit7ba0f7d297e7d3e833756016b635ffa0cc78200e (patch)
treea203100486e697bb713e545b00c125bc21722c4b /IkiWiki/Plugin/monotone.pm
parent6dd49d0df7ac97b2a74517f18fcb24881c940cad (diff)
downloadikiwiki-7ba0f7d297e7d3e833756016b635ffa0cc78200e.tar
ikiwiki-7ba0f7d297e7d3e833756016b635ffa0cc78200e.tar.gz
monotone: Fix recentchanges page when the srcdir is not at the top of the monotone workspace. Thanks, tommyd.
Diffstat (limited to 'IkiWiki/Plugin/monotone.pm')
-rw-r--r--IkiWiki/Plugin/monotone.pm13
1 files changed, 12 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;