過去のリビジョンを全て検索したい
ある日気がついたら、ソースコードから 関数 XXXX がなくなっていた!
というような場合、いつどうしてその関数が無くなったのかを調べたいですよね。
Subversionに全ての過去のソースは格納されてますが、それに対する全文検索のような機能はなさそうです。
そこで、ある1つのソースコードの全リビジョンを取り出すプログラムを作ってみました。
#!/usr/bin/env ruby url = ARGV[0] logs = IO.readlines("|svn log #{url}").select {|s| s =~ /^r\d+ /} logs.reverse.each {|log| log =~ /^r(\d+) / rev = $1 STDERR.puts log puts '=' * 80 + "\n" puts log + "\n" puts IO.read("|svn cat -r #{rev} #{url}") }
引数で指定したURLの全リビジョンのソースコードを古い順に標準出力に出力します。