3 回答

TA貢獻1875條經驗 獲得超3個贊
簡介:在產品中嵌入版本信息的推薦方法是使用構建系統 ; 請參閱下面的詳細信息和替代方法。
在Git中(我認為通常也在其他具有原子提交的VCS系統中)沒有像單個文件的版本那樣的東西。
Git確實支持$Id:$
關鍵字的按需擴展,但是:
僅在要求時完成。您必須指定(可能使用globbing模式)文件(或一組文件)具有
ident
屬性集(在樹中的'.gitattributes'文件中,或在'.git / info / attributes'中用于本地存儲庫設置)。它擴展到文件內容的SHA-1(或更準確地說
$Id:<sha-1 of blob>$
)。這種選擇的原因是Git不會觸摸在分支切換或倒帶期間沒有改變的文件; 如果'$ Id:$'擴展到修訂信息,則需要更新每個版本控制的文件,例如在切換分支時。
Git支持相當多的$Format:...$
占位符,這些占位符擴展為提交信息(例如,$Format:%H$
由提交哈希替換)但是:
只有在輸出文件中運行git archive時才會進行擴展。
它是根據請求完成的,通過
export-subst
屬性控制。
嵌入版本信息的推薦方法是通過構建系統(在構建階段)進行; 例如,參見Git web文件界面中Makefile使用的Git Makefile和GIT-VERSION-GEN腳本,用于git.git存儲庫。
但是,您可以(ab)使用干凈/涂抹過濾器驅動程序(via filter
屬性)來獲得類似CVS的關鍵字擴展,在結帳時擴展關鍵字,并在將內容輸入存儲庫時清除它們。

TA貢獻1811條經驗 獲得超4個贊
您可以通過ident
在.gitattributes
文件中添加您希望此功能所遵循的文件的模式來執行此操作。這將在結帳時將$ Id $替換為$ Id:<40位SHA> $。請注意,它不會像CVS / SVN那樣為您提供文件的修訂號。
例:
$ echo '*.txt ident' >> .gitattributes$ echo '$Id$' > test.txt$ git commit -a -m "test"$ rm test.txt$ git checkout -- test.txt$ cat test.txt

TA貢獻1853條經驗 獲得超9個贊
Git的ident不會執行$ Id $在其他版本控制系統中的功能。作為kludge,使用RCS和git:RCS進行單個文件修訂,并使用git來檢查項目整體。正如我所說,這是一個kludge,但它確實有意義(有時為某些事情)。
- 3 回答
- 0 關注
- 592 瀏覽
添加回答
舉報