2013-02-27 127 views
2

我試圖實現一種方法,使用here描述的方法將數據提交到LaTex文檔中,包括gitgit post-commit掛鉤未執行

掛鉤看起來是這樣的:

$ cat post-commit 
#!/bin/sh 

cd ../.. 

git log -1 --format="format:\ 
       \\gdef\\GITAbrHash{%h}\ 
       \\gdef\\GITHash{%H}\ 
       \\gdef\\GITAuthorDate{%ad}\ 
       \\gdef\\GITAuthorName{%an}" >> git.tex 

當我做chmod a+x post-commit然後./post-commit,適當地生成的文件。但是,當我實際進行提交時,掛鉤不會執行。可能是什麼問題呢?

回答

3

我想問題是您cd ../..爲了導航到您的來源。

嘗試用pushd ../..代替cd ../..。調用git log後,還原目錄與popd


除了這樣:我懷疑,提交後鉤子是你想要的這裏:如果你做一個成功的承諾,git.tex會後,你改變有一個修改後的文件。

A 預提交鉤子將是一個更好的選擇:就在提交之前,鉤子被調用,修改git.tex,然後將其添加到提交中。

另一種選擇是有一個塗抹乾淨過濾器爲您git.tex文件(http://git-scm.com/book/en/Customizing-Git-Git-Attributes#Keyword-Expansion)。你會做這樣的事情一放,每次只是做一個

git add git.tex 

這將調用乾淨過濾器產生的git.tex內容。此內容將被髮送到回購。 污跡過濾器將在文件檢出時運行。它的職責是使文件空的,所以它只是

echo '' > git.tex 
+0

非常感謝答案,但事實並非如此;看我的編輯。 – Eekhoorn 2013-02-27 19:24:51

+1

你的編輯會更好地回答你自己的問題,而不是編輯你的問題。 – eckes 2013-02-28 08:07:09

0

的問題是,我因爲代碼在庫的根目錄下執行反正也沒必要做cd ../..。另一個錯誤是>> git.tex,當然應該是> git.tex