git bisect 是否可以忽略文件夹,例如测试文件夹?

Can git bisect ignore folders, for instance test folders?

假设我之前已经为遗留系统设置了一个 super-swish 测试框架。即特征 A 在特征 A 的测试之前 long 存在。特征 B、C 和 D 在我们没有意识到的情况下出现,在某个时候破坏了特征 A 的测试。

我们想找出是哪个功能做到了这一点。

现在我想运行:

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

问题是测试功能 A 的代码文件位于 <bad><good> 之间。我试过只是手动提取代码,但随后各种配置和测试数据的路径中断(脆弱的代码?)。

有没有办法告诉 git bisect 忽略文件夹?我可以想象有时会出现可怕的错误,但我猜这可能比其他选择更容易。

这里没有解决 因为它涵盖了构建文件夹,解决方案是将它们从 repo 中删除,但是 我想保持我的测试提交!

这个 git bisect with feature branches / later commits are needed to build 也有点不同,因为我没有使用补丁或 feature 分支(我应该吗?)而且解决方案似乎只是为了手动 运行ning 它,而不是 git bisect running 它!

对于这种情况,编写测试脚本时应在每个步骤中添加您需要的内容。 git help bisect 手册有一个示例,您可以根据需要进行调整。也就是说,在那个例子做 git merge hotfix 的地方,做任何你需要的事情来获得你需要的测试文件。根据具体情况,合并可能不是您想要的,但您可以从某个地方挑选测试,或者只是事先将它们复制到其他目录(在平分操作之前)并使用 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