2010-03-11 43 views
2

我創建了一個更新掛鉤,以便我們的中央git存儲庫可以對每個提交中的每個文件進行一些簡單的完整性檢查。但是,我不知道如何讓git在「推」中咳嗽所有提交的名稱。git update hook:查找提交的所有rev

無論客戶端推送了多少提交,更新掛鉤只被調用一次(按設計)。例如,假設HEAD是e2706ec,我創建兩個提交:

$ echo 'date' >>foo && git commit -am'Touched foo' 
[master e5c9682] Touched foo 
1 files changed, 1 insertions(+), 0 deletions(-) 
$ echo 'date' >>bar && git commit -am'Touched bar' 
[master bdc1fd1] Touched bar 
1 files changed, 1 insertions(+), 0 deletions(-) 

然後我的代碼推到中央存儲庫:

$ git push 

的git的/鉤/更新腳本被調用一次與這些參數:

  • 參/頭/主
  • e2706ec31e51b9bbd4010e79fd7186089c59690e
  • bdc1fd17e8209bbb987b5358a0b49b20d9589103

GIT中傳遞給更新鉤ref_name,old_rev,和new_rev。它沒有傳遞的是old_rev和new_rev之間的任何轉換的名稱(在本例中爲e5c9682)。

鑑於old_rev和new_rev,獲取客戶端試圖推送的每個rev的git拼寫是什麼?

回答

4

git rev-list ^old_rev new_rev

這是這個名單兩者之間的所有提交提交

+1

是的,這是正確的。 http://progit.org/book/ch7-4.html給出了一些更具體的例子。 – swampsjohn 2010-03-11 22:39:50

+0

這樣做。謝謝! – 2010-03-12 01:06:00