2010-11-17 50 views
7

試圖找出在Git提交後提交鉤子中花費了多長時間。在git post-commit hook中,如何獲取已更改文件的列表?

我有一個提交後的git鉤子,通過API提交關於提交的信息。我想要做的是弄清楚在提交上花了多長時間。大致。

我的假設是,通過查找所涉及文件的所有創建時間和修改時間的最小值並與最大創建時間和修改時間進行比較,可以計算出一個粗略的值。

我可以很容易地在Python腳本中做到這一點。如果有人告訴我這是文件「foo.txt」,「bar.txt」和「path/bla.txt」,我可以在基於這些文件的腳本中快速進行一些算術運算。

所以,在一個git post-commit hook中,我如何獲得已更改文件的列表?

+0

我忘了說,我實際上知道如何使用'--name-only'來獲取文件名,但是也包含了一些我不關心的提交信息。 – 2010-11-17 14:58:07

+0

我不確定我看到文件上的修改時間與提交所花費的時間有什麼關係。唯一真正與此相關的就是它的時間戳和次最近提交時間戳(如果你在幾個分支上工作,它可能不是它的父代)之間的差異。 – Cascabel 2010-11-17 16:45:23

回答

7

在圍繞git編寫腳本時,應該嘗試堅持plumbing commands - 它們的格式不太可能更改並且更易於解析。這裏是一個輸出,其在修改的路徑的名稱提交的命令:

git diff-tree -r --name-only --no-commit-id <tree-ish> 

這且不說,你不妨檢查指標,因爲它包含時間戳有關的文件時上演,這可能會給你一個額外的邊緣;但是,我不相信有一種方法可以訪問這些信息。

+0

謝謝。比我的git日誌方法工作得更好。 – 2010-11-19 11:09:43

0

一直在做一些研究,發現git log --name-only -n1是最好的方法。獲得最低分數並不困難。和最大。通過進行一些字符串匹配並使用Python os.stat模塊,從文件中取時間戳。

作爲一般的解決方案,它仍然不是很好,因爲文件的修改時間並不真實反映實際花費的時間。

+2

在你宣佈你找到最好的方法之前,通常等待別人回答是一個好主意; jleedev的答案避免了額外的信息。 – Cascabel 2010-11-17 16:44:14

相關問題