log フィルタで、二重決済の原因コミットに5分で着いた話

ある朝、「先週から一部のユーザーで決済が二重に実行される」という報告が入った。コードベースは巨大で、決済まわりだけでも数百ファイル。エラーも出ていない。どこから手をつければいいのか、見当もつかなかった。
そこで、ファイルを開く前に履歴へ質問することにした。決済処理の関数名で git log -S "chargeUser" を実行すると、その呼び出しが変わったコミットがたった1件ヒット。git log --author とコミットメッセージをたどると、先週ネットワーク不安定対策で入れたリトライ処理が、決済を二重に呼んでいたとわかった。いつ・誰が・なぜ、までが一気につながった。
巨大なコードを総当たりで grep するより、-S でコードの変化を、-- ファイル でファイルを、--author で人を絞り込むほうが、桁違いに速い。履歴は「読む」だけでなく「質問する」ものだ。いつ・誰が・なぜ入れたのかが分かれば、直し方も自然と見えてくる。
