2009-02-25 13:19:39 +01:00
|
|
|
The bzr plugin does not seem to define the rcs_diff subroutine.
|
|
|
|
I got the follow error after enabling recentchangesdiff:
|
|
|
|
|
|
|
|
"Undefined subroutine &IkiWiki::Plugin::bzr::rcs_diff called at /usr/share/perl5/IkiWiki.pm line 1590."
|
|
|
|
|
|
|
|
Grepping to verify absence of rcs_diff:
|
|
|
|
|
|
|
|
$ grep rcs_diff /usr/share/perl5/IkiWiki/Plugin/{git,bzr}.pm
|
|
|
|
/usr/share/perl5/IkiWiki/Plugin/git.pm: hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
|
|
|
/usr/share/perl5/IkiWiki/Plugin/git.pm:sub rcs_diff ($) {
|
|
|
|
/usr/share/perl5/IkiWiki/Plugin/bzr.pm: hook(type => "rcs", id => "rcs_diff", call => \&rcs_diff);
|
|
|
|
|
2009-02-25 23:15:25 +01:00
|
|
|
> I've added the minimal stub needed to avoid the crash, but for
|
|
|
|
> recentchangesdiff to work, someone needs to implement `rcs_diff` for bzr.
|
|
|
|
> This should be trivial if you know and use bzr. The function
|
|
|
|
> is passed as a parameter the revno of interest and just needs
|
|
|
|
> to ask bzr for the diff between that and the previous version. --[[Joey]]
|
2009-02-26 08:10:15 +01:00
|
|
|
|
|
|
|
>> I'll see if I can make a patch. The bzr command to get the revision would
|
|
|
|
>> look like this: bzr diff -r revno:$PREV:/path/to/src..revno:$REVNO:/path/to/src
|
|
|
|
>> (where $PREV would be $REVNO minus one). --liw
|
2009-02-26 09:07:29 +01:00
|
|
|
|
|
|
|
>> Sorry, that was not entirely correct, for some reason. I'll add a patch below that
|
|
|
|
>> seems to work. I am unfortunately not ready to set up a git repository that you
|
|
|
|
>> can pull from. --liw
|
|
|
|
|
|
|
|
diff --git a/IkiWiki/Plugin/.bzr.pm.swp b/IkiWiki/Plugin/.bzr.pm.swp
|
|
|
|
new file mode 100644
|
|
|
|
index 0000000..712120c
|
|
|
|
Binary files /dev/null and b/IkiWiki/Plugin/.bzr.pm.swp differ
|
|
|
|
diff --git a/IkiWiki/Plugin/bzr.pm b/IkiWiki/Plugin/bzr.pm
|
|
|
|
index 783623d..f1d5854 100644
|
|
|
|
--- a/IkiWiki/Plugin/bzr.pm
|
|
|
|
+++ b/IkiWiki/Plugin/bzr.pm
|
|
|
|
@@ -256,7 +256,25 @@ sub rcs_recentchanges ($) {
|
|
|
|
}
|
|
|
|
|
|
|
|
sub rcs_diff ($) {
|
|
|
|
- # TODO
|
|
|
|
+ my $taintedrev=shift;
|
|
|
|
+ my ($rev) = $taintedrev =~ /^(\d+(\.\d+)*)$/; # untaint
|
|
|
|
+ print STDERR "taintedrev: $taintedrev\nrev: $rev\n";
|
|
|
|
+
|
|
|
|
+ my $prevspec = "before:" . $rev;
|
|
|
|
+ my $revspec = "revno:" . $rev;
|
|
|
|
+ my @cmdline = ("bzr", "diff", "--old", $config{srcdir},
|
|
|
|
+ "--new", $config{srcdir},
|
|
|
|
+ "-r", $prevspec . ".." . $revspec);
|
|
|
|
+ print STDERR "cmdline: @cmdline\n";
|
|
|
|
+ open (my $out, "@cmdline |");
|
|
|
|
+
|
|
|
|
+ my @lines = <$out>;
|
|
|
|
+ if (wantarray) {
|
|
|
|
+ return @lines;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return join("", @lines);
|
|
|
|
+ }
|
|
|
|
}
|
|
|
|
|
|
|
|
sub rcs_getctime ($) {
|