アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

犯罪的なコミットエンドランを簡単に防ぐ

komagataです。

犯罪的な戦術 - p0t

上記の様な戦術を簡単に防ぐ方法を考えてみました。

リポジトリsubversionなのでpost-commitのhookを使ってテストを実行し、失敗していたら嫌なメールを送るという方法です。

対象のリポジトリ内のhookファイルに(大抵は/var/lib/svn/#{repost}/post-commit)を以下の様にします。

#!/usr/bin/env ruby

repos, rev = ARGV[0], ARGV[1]
author = `svnlook author #{repos}`
cmd = "cd /var/www/staging/ossuary/current && rake db:migrate:reset && script/spec spec -f progress"
unless system(cmd)
  `mail -s '[ossuary] #{author} made a commit-and-run in r#{rev}' error@actindi.net`
end

[ossuary] komagata made a commit-and-run in rev256 - komagata@gmail.com - Gmail

「komagataはリビジョン256でコミットエンドランを決めた。」

(´・ω・`)・・・。