#git #bisect #robust #error #search #binary-search #during

app robust-git-bisect

Robust Git Bisect 提供了 git bisect 的替代方案,它能够抵抗搜索过程中的错误。

2 个版本

0.1.1 2020 年 10 月 24 日
0.1.0 2020 年 10 月 24 日

#1936开发工具

Apache-2.0

120KB
2.5K SLoC

Robust Git Bisect

Robust Git Bisect 提供了 git bisect 的替代方案,它能够抵抗搜索过程中的错误。换句话说,如果比较函数有时返回错误的结果,这个项目中的搜索仍然会收敛到正确的解决方案。

这是从 Karp 和 Kleinberg 的论文 "Noisy binary search and its applications" 中的乘法权重算法改编而来,该论文可在 https://www.cs.cornell.edu/~rdk/papers/karpr2.pdf 找到,经过调整以使其确定,然后扩展到支持有向无环图。

用法

要使用 git bisect 替代方案,使用 cargo install robust-git-bisect 安装,然后 ~/.cargo/bin/robust-git-bisect $start_commit $end_commit $command_to_test_commit

如果您在寻找库版本,请参阅基于此的 robust-binary-search crate。

性能

robust-git-bisect 与 git bisect 相比,性能有所提升(在更少的迭代次数中具有更高的准确性)

方法 迭代次数 准确性
robust-git-bisect 以 0.99 为目标 29.6558 99.5392%
robust-git-bisect 以 0.9 为目标 26.1828 98.8950%
git bisect 16.1907 31.7972%
git bisect 重复测试 35.0465 86.6359%
git bisect 重复 72.3674 86.1751%

此测试在从 e83c516331 到 54e85e7af1 的 git 仓库上运行,模拟 9c3592cf3c 为坏提交,测试在 5% 的时间内返回错误结果。有关详细信息,请参阅 benchmark.rs。

依赖关系

~3–11MB
~97K SLoC