#!/usr/bin/perl use warnings; use strict; my $pattern = shift; push @ARGV, "." unless (@ARGV); for my $target (@ARGV) { open(my $svnlog_fh, '-|', 'svn', 'log', $target) or die "cannot invoke svn log $target: $!"; my $atstart; while (<$svnlog_fh>) { if (/^------------------------------------------------------------------------$/) { $atstart = 1; next; } if ($atstart && /^r(\d+) \| /) { my $revline = $_; chomp $revline; my $revision = $1; open(my $svndiff_fh, '-|', 'svn', 'diff', "-c$revision", $target) or die "cannot invoke svn diff -c$revision $target: $!"; local $/ = undef; my $diff = <$svndiff_fh>; if ($diff =~ m/$pattern/) { print "\n=== $revline ===\n$diff\n======\n\n"; } } $atstart = 0; } } # vim: tw=0