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 run
ning 它!
对于这种情况,编写测试脚本时应在每个步骤中添加您需要的内容。 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
假设我之前已经为遗留系统设置了一个 super-swish 测试框架。即特征 A 在特征 A 的测试之前 long 存在。特征 B、C 和 D 在我们没有意识到的情况下出现,在某个时候破坏了特征 A 的测试。
我们想找出是哪个功能做到了这一点。
现在我想运行:
git bisect <bad> <good>
git run ./swish_test_suite.sh
问题是测试功能 A 的代码文件位于 <bad>
和 <good>
之间。我试过只是手动提取代码,但随后各种配置和测试数据的路径中断(脆弱的代码?)。
有没有办法告诉 git bisect
忽略文件夹?我可以想象有时会出现可怕的错误,但我猜这可能比其他选择更容易。
这里没有解决
这个 git bisect with feature branches / later commits are needed to build 也有点不同,因为我没有使用补丁或 feature 分支(我应该吗?)而且解决方案似乎只是为了手动 运行ning 它,而不是 git bisect run
ning 它!
对于这种情况,编写测试脚本时应在每个步骤中添加您需要的内容。 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