#git #bisect #search #tool #debugging #git-commit #git-checkout

app risect

一个简单的二分查找工具

1 个不稳定发布

0.1.0-alpha.12020年5月30日

#665测试

MIT 许可证

70KB
134 代码行

Risect

example

Risect是一个二分查找工具,比git bisect更友好、更通用。

git bisect 相比

  • git bisect 的命令集合难以记忆
  • git bisect 需要努力查看其stdout输出
  • git bisect 无法搜索依赖项的提交

用法

您可以使用两种方式使用Risect。

  1. 将搜索空间通过stdin管道传输
  2. 使用内置设置(推荐)

例如,要模拟 git bisect,您可以直接使用 git rev-list--git 标志。

1. git rev-list master~5 .. master | risect -- sh -c "git checkout {} && ./test.sh"
2. risect --git master~5 master --  sh -c "git checkout {} && ./test.sh"

第二种方法提供了更多的元数据,除了 {},如 {author-name}{author-email}。这些可以在测试命令和报告格式中使用。

配置(待办事项)

  • --verbose
  • --parallel <n> 执行 (n+1)-元搜索
  • --interactive

内置类型(待办事项)

Git

risect --git --from HEAD~5 --to HEAD -- ./test.sh {}  # all commit hash list is determined before first run
risect --git --from HEAD~5 --to HEAD --path ./submodule -- ./test.sh {}  # git bisect on submodule
risect --git --from-date 2020-05-02 --to bbbb -- ./test.sh {}  # commits since --from-date
risect --git --from-date 2020-05-02 --n 5 -- ./test.sh {}  # 5 commits since --from-date

日期

risect --date 2020-05-05 2020-05-20 -- ./test.sh {}

数字

seq 0 1.0 0.2 | risect -- ./test.sh --threshold={}

自定义

risect --custom "seq 0 1.0 0.2" -- ./test.sh --threshold={}

报告(待办事项)

实时进度1

        input: aaaaaa ... bbbbbb (50 candidates)
    remaining: aadaaa ... bbebbb (20 candidates)
 last success: dddddd
first failure: eeeeee

实时进度2

[ ] 1
[ ] 2
[ ] 3
[ ] 4
[x] 5  <- last failure
[ ] 6
[?] 7  <- running
[ ] 8
[ ] 9
[ ] 10
..
[ ] 199
[v] 200  <- first success

条形图

|...o...o...oo.....?...x..x...|

依赖关系

~1.5–8.5MB
~57K SLoC