2015-06-12 28 views
1

我剛剛注意到git archive也運行我的過濾器.gitattributes。這是記錄的行爲? (我沒有看到它在man pagegit-archive命令是否也運行過濾器?

詳細

正如我寫了一個過濾器,通過插入*.tex暈染練習文件從git describe --tags HEAD信息(無這段代碼是不是在所有在形式

\setGitVersion{<tag>} 

有用),並通過改變清潔,要

\setGitVersion{} 

(基本上是編碼我自己的關鍵字替換練習)。但我只是注意到,如果我在存儲庫上運行git archive,則存檔文件將包含*.tex文件的污跡版本,而不是純文本版本。

:因爲這無論犯我指定的存檔,顯示的標籤總是從git describe --tags HEAD的信息,我可以斷定,Git是從回購取文件,並通過我的(碎)過濾器在發送在歸檔之前。

問題

是對預期的行爲?如果是這樣,它是否記錄在某個地方,我可以指望它在未來的行爲如何(在這種情況下,我需要更仔細地使用過濾器)。如果沒有,這是一個錯誤?

回答

0

是的,這是預期的行爲。歸檔執行存儲在gitattributes中的過濾器。

這不是特別好記錄,但有一個部分在gitattributes創建檔案。

如果爲文件設置了屬性export-subst,那麼在將該文件添加到存檔時,Git將展開多個佔位符。擴展取決於提交ID的可用性,即,如果git-archive[1]已被賦予樹而不是提交或標籤,則不會進行替換。佔位符與選項--pretty=formatgit-log[1]的佔位符相同,只不過它們需要在文件中像這樣打包:$Format:PLACEHOLDERS$。例如。字符串$Format:%H$將被提交哈希代替。

我不希望這種行爲在將來消失,因爲它是相關的且經常必要的功能。