2012-03-29 72 views
0

我正在寫一個腳本,執行二進制搜索來指定破損測試的責任。我正在使用git rev-list --bisect如何讓git rev-list --bisect跳過特定的提交?

我想排除構建被破壞的具體提交。 git bisect有一個選項可以做到這一點,git bisect skip BROKENCOMMIT。但是,我找不到使用git rev-list --bisect做同樣事情的等效方法。有一個嗎?

謝謝!

+0

git rev-list提供了基於作者,提交者,日期和描述排除提交的選項。爲什麼哦爲什麼它沒有一個選項來排除基於散列的提交? – dnw 2012-03-30 14:54:42

+0

我結束了剛剛運行git rev-list,獲取提交的完整列表,然後手動執行所有其他操作。 – dnw 2012-03-31 02:11:37

回答

0

不幸的是,沒有辦法告訴git rev-list --bisect跳過某些提交。

git bisect通過創建名爲refs/bisect/skip-*的引用實現跳過。好的和壞的承諾存儲在refs/bisect/badrefs/bisect/good-*。該git rev-list --bisect命令看起來refs/bisect/badrefs/bisect/good-*,但由於某種神祕原因不注意refs/bisect/skip-*。這似乎是Git郵件列表的一個好建議。

相反的rev-list --bisect,你可以使用git bisect start --no-checkout,使用git bisect skip添加要跳過的提交,然後使用BISECT_HEAD參考。這種方法的一個缺點是git bisect不允許你指定參考名稱空間,所以如果有一個現有的平分正在進行,你會覆蓋它。