Docs header transparent bg

git bisect の使用方法

git bisect は役立つデバッグツールです。コンテキストとしては、git bisect は、コードベースにバグが導入された特定のコミットを追跡するために使用できる git コマンドです。

コードが正しく機能するコミットとバグのあるコミットを見つければ、バグのあるコミットを手作業で追跡する必要はありません。git bisect コマンドは、バイナリ検索によって問題のあるコミットを見つけるのに役立ちます。たとえば、Git のドキュメントには、git bisect を使用する 2 つの方法を示す 便利な git bisect ガイド があります。

バンドラーを使用するプロジェクトで git bisect を行う方法

git bisect がバンドラーを使用するプロジェクトで動作するために必要な、明白ではない点がいくつかあります。

  1. Gemfile.lock は git リポジトリに存在する必要があります。これにより、コミットのたびに毎回同じ依存関係がロードされます。
  2. バイセクト中の各手順では、まず bundle install を実行する必要があります。これにより、依存関係が正しくインストールされ、ロードできるようになります。
  3. コミットが正常か異常かを判断した後、各手順で 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 のディスカッションもご覧ください。

GitHub でこのドキュメントを編集する。誤りに気付いた場合や、欠けている情報があると思われる場合。