--- /dev/null
+#!/usr/bin/env ruby
+
+file, rev, author, state = nil, nil, nil, :F
+mia_committers = ARGV
+IO.popen('cvs log') do |io|
+  io.each_line do |line|
+    line.chomp!
+    case line
+    when /\A-+\z/
+      state = :R
+      if rev && author && mia_committers.include?(author)
+        prev_rev = rev.sub(/\d+\z/) {|s| (s.to_i - 1).to_s}
+        puts("cvs diff -r #{prev_rev} -r #{rev} #{File.basename(file)}")
+      end
+      rev, author = nil, nil
+    when /\A=+\z/
+      state = :F
+      file, rev, author = nil, nil, nil
+    when /\ARCS file:\s+(.+),v\z/
+      file = $1 if state == :F
+    when /\Arevision\s+([0-9.]+)\z/
+      rev = $1 if state == :R
+    when /\Adate:\s+(?:.+?);\s+author:\s+(.+?);/
+      author = $1 if state == :R
+    end
+  end
+end