X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/d110235130d10e468fb7ef1a647831c866e954f1..457d330758ffe0935837ed38a93608c519a62403:/doc/bugs/bzr_plugin_does_not_define_rcs__95__diff.mdwn diff --git a/doc/bugs/bzr_plugin_does_not_define_rcs__95__diff.mdwn b/doc/bugs/bzr_plugin_does_not_define_rcs__95__diff.mdwn index e57924131..110f769c7 100644 --- a/doc/bugs/bzr_plugin_does_not_define_rcs__95__diff.mdwn +++ b/doc/bugs/bzr_plugin_does_not_define_rcs__95__diff.mdwn @@ -10,3 +10,52 @@ Grepping to verify absence of 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); +> 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]] + +>> 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 + +>> 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 ($) {