2014-02-24 86 views
1

我正在使用關鍵字擴展,如書中Pro Git所述。然而,在提交後需要做的,例如,提交後git關鍵字擴展

rm file 
git checkout file 

有在工作文件正確的關鍵字擴展(因爲塗抹只結賬後適用)。

如何在提交後自動進行關鍵字擴展?

當然,我可以使用鉤子去除/重新簽出,但這似乎不是一個好的解決方案。此外,我將不得不手動檢查,提交哪個文件。

有沒有更優雅的方式?例如,我可以在提交後自動運行過濾器的污跡嗎?

回答

2

如何在提交後自動進行關鍵字擴展?

你不這樣做,這就是爲什麼Git沒有「真正」支持關鍵字擴展,正如我在「Git equivalent of subversion's $URL$ keyword expansion」中詳細說明的那樣。

另一種方法(列在「Git hook, modify commit files」中)是使用git notes將元數據附加到提交(不修改其SHA1)。

+0

我理解上沒有關鍵字擴展Git的理念。我使用「git svn」(用於編寫tex文檔)。直接使用subversion時我有關鍵字擴展;它用於將修訂號添加到打印出來的PDF中以供參考。因此,我也希望在我的git世界中擁有它。 –

+0

@DanielKrenn我明白了。我會推薦'git notes'來添加*你想提交的任何*信息。 – VonC

0

我相信一個post-commit掛鉤確實可以解決您的問題。

添加下面的post-commit鉤子:

#!/bin/sh 
    BRANCH=$(git branch | awk 'sub(/^\*[[:space:]]+/,""){print;exit}') 
    git show --name-only -z --format= | 
      xargs -r0 git reset "${BRANCH:-master}" --