0

以前、レガシー システム用のスーパー スウィッシュ テスト フレームワークをセットアップしたとします。つまり、機能 A は、機能 A のテストよりずっと前から存在していました。機能 B、C、および D が登場し、気付かないうちに、ある時点で機能 A のテストが中断されます。

どの機能がそれを行ったのかを知りたいです。

今私は実行したい:

git bisect <bad> <good>
git run ./swish_test_suite.sh

問題は、機能 A をテストするコード ファイルが と の間<bad>にあること<good>です。コードを手動で抽出しようとしましたが、その後、さまざまな構成とテスト データへのパス (壊れやすいコードですか?) が発生しました。

git bisectフォルダを無視するように指示する方法はありますか? ひどく間違っていることもあると想像できますが、代替案よりも簡単かもしれないと思います。

ここでは解決されませんGit bisect を実行するときにディレクトリを無視するにはどうすればよいですか? 解決策はリポジトリからそれらを削除することですが、ビルドフォルダーをカバーしているため、テストをコミットしたままにしておきたいです!

この機能ブランチを使用した git bisect / later commits are needed to buildも少し異なります。パッチや機能ブランチを使用していないためです (使用する必要がありますか?) git bisect run

4

1 に答える 1

1

このような場合、各ステップで必要なものを追加するような方法でテスト スクリプトを記述します。マニュアルには、git help bisect必要に応じて微調整できる例があります。つまり、その例では、git merge hotfix必要なテスト ファイルを取得するために必要なことは何でも実行します。状況によっては、マージが探しているものではない場合がありますが、どこかからテストをチェリーピックするか、事前に (bisect 操作の前に) 他のディレクトリにコピーし、cp.

   ·   Automatically bisect with temporary modifications (hot-fix):

           $ cat ~/test.sh
           #!/bin/sh

           # tweak the working tree by merging the hot-fix branch
           # and then attempt a build
           if      git merge --no-commit hot-fix &&
                   make
           then
                   # run project specific test and report its status
                   ~/check_test_case.sh
                   status=$?
           else
                   # tell the caller this is untestable
                   status=125
           fi

           # undo the tweak to allow clean flipping to the next commit
           git reset --hard

           # return control
           exit $status
于 2016-08-03T09:11:58.760 に答える