我怀疑我的存储库中最后150个提交中的一些已经损坏--也就是说,如果我签出这些提交中的一个,代码将无法编译。我想我可以使用git-filter-branch来测试它,但是我被参数弄糊涂了。我想出了这个:
git filter-branch -f --commit-filter 'git提交树"$@";cd ../..;make defconfig;make‘HEAD^..
但是我得到了下面的输出:
$ git filter-branch -f --commit-filter 'git commit-tree "$@"; cd ../..; make defconfig; make' HEAD^..
Rewrite 4c3b2950f53717ba22280a76c211c9eab3135348 (1/1)arch/arm64/kernel/setup.c: In function 'arm64_spcr_setup':
arch/arm64/kernel/setup.c:615:3: error: implicit declaration of function 'acpi_setup_spcr' [-Werror=implicit-function-declaration]
acpi_setup_spcr();
^
cc1: some warnings being treated as errors
make[1]: *** [arch/arm64/kernel/setup.o] Error 1
make: *** [arch/arm64/kernel] Error 2
could not write rewritten commit这对我来说毫无意义。编译错误与我的repo中的最后两个提交不匹配,“无法写入重写提交”是什么意思?我显然在做一些完全错误的事情,但我不知道是什么。
发布于 2015-10-01 07:04:16
此seems...dirty.
您所要做的就是一次一个地检查提交,编译它们,并针对它们运行测试,对吗?
相反,您可以检查这些提交,从1开始,直到您想要返回的次数,运行测试,并将测试结果报告到文件中。
这将帮助您入门
for i in $(seq 1 150);
do
git checkout HEAD~$i;
make defconfig && make;
git checkout master;
done可能有一种更优雅的方法来实现这一点,但原则如下:
一种稍微优雅一点的方法是,只在完成后才将分支移回:
COUNT=0
while [ $COUNT -lt 150 ];
do
git checkout HEAD~1;
make defconfig && make;
let $COUNT=$COUNT + 1;
done
git checkout master;https://stackoverflow.com/questions/32876726
复制相似问题