3 回答

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

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以通過(guò)ident
在.gitattributes
文件中添加您希望此功能所遵循的文件的模式來(lái)執(zhí)行此操作。這將在結(jié)帳時(shí)將$ Id $替換為$ Id:<40位SHA> $。請(qǐng)注意,它不會(huì)像CVS / SVN那樣為您提供文件的修訂號(hào)。
例:
$ echo '*.txt ident' >> .gitattributes$ echo '$Id$' > test.txt$ git commit -a -m "test"$ rm test.txt$ git checkout -- test.txt$ cat test.txt
鏈接到gitattributes(5)手冊(cè)頁(yè)

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
Git的ident不會(huì)執(zhí)行$ Id $在其他版本控制系統(tǒng)中的功能。作為kludge,使用RCS和git:RCS進(jìn)行單個(gè)文件修訂,并使用git來(lái)檢查項(xiàng)目整體。正如我所說(shuō),這是一個(gè)kludge,但它確實(shí)有意義(有時(shí)為某些事情)。
- 3 回答
- 0 關(guān)注
- 589 瀏覽
添加回答
舉報(bào)