diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-11 20:30:14 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-11 20:30:14 -0400 |
commit | 7ba0f7d297e7d3e833756016b635ffa0cc78200e (patch) | |
tree | a203100486e697bb713e545b00c125bc21722c4b /IkiWiki | |
parent | 6dd49d0df7ac97b2a74517f18fcb24881c940cad (diff) | |
download | ikiwiki-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')
-rw-r--r-- | IkiWiki/Plugin/monotone.pm | 13 |
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; |