2016-04-28 47 views
0

承諾我想運行一個腳本,將運行在提交測試,提前X承諾前進,並再次進行測試,重複操作,直至不能再進一步推進X Git中

如何採取某些提交我檢出並提前X提交? X可能是我想到的是10或100

的方法之一,是轉儲全部承諾哈希到列表,並跳轉名單上,但我不知道是否有gittier辦法做到這一點

+3

與'git-bisect'類似的聲音 – Jamesking56

+0

是的,但我想手動執行它不是爲了搜索bug,只是爲了靜態分析代碼。我沒有一個壞的或好的條件。 –

+0

如果你從分支的頂端開始,你可以倒退。請參閱http://stackoverflow.com/questions/16062358/referring-to-the-previous-next-commit-in-git您可以記住您在列表中遇到的提交,然後通過反向工作。請注意,提交可以同時擁有多個祖先和後繼,所以next和prev沒有很好的定義。 – masterxilo

回答

0

這裏是一個開始:

base=master 
cur=10 
step=3 
while (($cur >= 0)) 
do 
    git show ${base}~${cur} 
    ((cur -= $step)) 
done 

相反的git show你可能想籤和運行的東西。

0

因爲分支和合並不一定存在單一的「下一個」或「上一個」承諾,即使你犯AB「之間」:

    o - o - o 
       /   \ 
... - A - * - o    o - B 
       \   /
        o ------ o 

如果你是在節點*有是明顯的下一個/上一個提交,下一個是向右節點o,而前一個是節點A。但是在你向前移動之後,下一個「下一個」提交是什麼?我們是應該向上走向三節點線路還是向下走向二節點線路?

git bisect做了很多棘手的事情,以儘量減少測試節點的數量,同時也處理(或試圖處理)這些分支和合並的情況。

Mayvbe你不想測試一些二元條件。例如,假設你的靜態分析工具只是簡單地生成一堆指標,你想知道,例如,「每提交N次/分鐘/小時/天,度量A往往會有所增加,而度量B往往會下降,但在這個特殊時期,這種趨勢逆轉了。「在這種情況下,您需要爲「每N次提交」或「每N小時」或什麼都定義自己的度量標準,可能是通過運行git rev-list並使用原始提交ID從此開始。

一般來說,git rev-list是處理這一工具,而事實上,git bisect本身使用git rev-list--bisect(見the documentation的詳細信息;請注意,它存儲在refs/bisect命名空間名稱,以便它可以被反覆使用)。 rev-list命令有幾個額外的平分變體,您可能會覺得有用。