git bisect
は役立つデバッグツールです。コンテキストとしては、git bisect
は、コードベースにバグが導入された特定のコミットを追跡するために使用できる git コマンドです。
コードが正しく機能するコミットとバグのあるコミットを見つければ、バグのあるコミットを手作業で追跡する必要はありません。git bisect
コマンドは、バイナリ検索によって問題のあるコミットを見つけるのに役立ちます。たとえば、Git のドキュメントには、git bisect
を使用する 2 つの方法を示す 便利な git bisect
ガイド があります。
git bisect
がバンドラーを使用するプロジェクトで動作するために必要な、明白ではない点がいくつかあります。
Gemfile.lock
は git リポジトリに存在する必要があります。これにより、コミットのたびに毎回同じ依存関係がロードされます。bundle install
を実行する必要があります。これにより、依存関係が正しくインストールされ、ロードできるようになります。git reset
を実行する必要があります。bundle install
またはテストの実行によりファイルシステムを変更する可能性があり、それによって次のコミットの git checkout
がリセットされなければテストできません。これが、レイクタスク spec
を実行する最小限のサンプルスクリプトです。
#!/usr/bin/env bash
bundle install
bin/rake spec
status=$?
git reset --hard HEAD
exit $status
また、rubygems/bundler#3726 のディスカッションもご覧ください。