9月から今日までのデイリーの変更点をCVSサーバから取得したい
9月から今日まで、OpenBSD/sgiへどのような変更が加えられてきたのか調べたいと思ったので、1日毎にdiffを取ってみた。
9月から今日までの分全部のdiffだと大きすぎるので、デイリーでバラすというのが実現したかった事。
本当はシェルスクリプトで済ませたかったんだけど、日付の計算をシェルスクリプトでやるための便利なコマンドがあるか分からなかったのでRubyでゴリッと書いてしまった。
見れば分かる通り非常に汚いけれど、こういうのが少ない行数で、シェルスクリプトの代わりに出来るのがLLの強みだと思うので美しさとか汎用性とか言わないでくだしあ。
require 'date' START_DATE = Date.new(2009,9,1) BASEDIR = '/home/syuu/src/sys/arch' DIFFDIR = '/home/syuu/diffdir/' TARGET = 'sgi mips64' Dir.chdir(BASEDIR) date = START_DATE while date <= Date.today filename = DIFFDIR + date.strftime("%m_%d_%y") + "-" + (date + 1).strftime("%m_%d_%y") + ".diff" cmd = "cvs diff -D #{date.strftime("%m/%d/%y")} -D #{(date + 1).strftime("%m/%d/%y")} #{TARGET} > #{filename}" puts cmd `#{cmd}` File.delete(filename) if File.size(filename) == 0 date = date + 1 end
追伸
Rubyおいしいです(^q^