2012-04-15 110 views
7

我開發驗證和掉毛實用與各種整合提交掛鉤,包括Git的一個Git的pre-commit鉤子:

https://github.com/miohtama/vvv

目前驗證器和棉短絨是針對整個運行修改過的文件越來越名單項目代碼庫在每個提交。但是,僅僅針對更改的文件運行它們會更加優化。對於這一點,我需要知道在我的Git預提交鉤(在Python)

https://github.com/miohtama/vvv/blob/master/vvv/hooks/git.py

我有什麼選擇提取修改過的文件列表(在Python,如果該事項)修改過的文件列表?

回答

5

的pre-commit鉤子是一個有點痛,如果你真的想工作的事情「正確的」,因爲在工作中樹什麼的並不一定一致,那麼將被提交:

$ echo morestuff >> file1; echo morestuff >> file2 
$ git add file1 # but not file2 
$ git commit -m 'modified two files but check in just one' 

您可以使用git diff-index --cached HEAD獲取「要檢入的內容」的列表。另見例如http://newartisans.com/2009/02/building-a-better-pre-commit-hook-for-git/

+0

對於文章鏈接:相當的痛苦,以保持存儲庫的第二個副本只是爲了檢查什麼文件已經改變:( – 2012-04-15 18:26:08

+0

你不需要第二個副本的回購,但你可以(取決於你),需要第二個工作樹,基本上有兩種選擇:在其他地方檢查索引,以便得到一個與正在檢查的工作樹匹配的工作樹;或者,驗證當前工作樹是否是「乾淨的」 「,以便您可以使用當前目錄(預提交掛鉤在工作樹中運行)。 – torek 2012-04-15 20:30:37

+0

目前爲止完美工作。以下是完整的解決方案https://github.com/miohtama/vvv/blob/ master/vvv/hooks/git.py – 2012-05-12 00:57:40