我有應用程序我想從mercurial打印出(在「關於」框中)其版本/版本。假設它是修訂版deadbeef
,所以它會知道這一點。在CVS的舊時代可以使用類似$Revision$
的東西來自動替換。應用程序在mercurial repository中訪問它自己的版本
Mercurial的最佳做法是什麼?
我有應用程序我想從mercurial打印出(在「關於」框中)其版本/版本。假設它是修訂版deadbeef
,所以它會知道這一點。在CVS的舊時代可以使用類似$Revision$
的東西來自動替換。應用程序在mercurial repository中訪問它自己的版本
Mercurial的最佳做法是什麼?
Mercurial的Keyword Extension可能是你想要的。它幾乎完全支持$Revision$
格式。
你可以用它來獲取當前版本中水銀:
hg id -i
最好的辦法可能是使用預提交掛鉤,以取代一個指定的文件與hg log -r tip
輸出,可能與--template
對Arg的格式它以特定的方式。
不幸的是,有一個雞和雞蛋的問題。修訂版是提交數據的校驗和,但校驗和在提交發生後纔可用。一種選擇可能是實際掛鉤提交而不是預先提交,並將版本信息提交到單獨的更改集中。
所以,因爲你說的雞蛋問題,我實際上不能使用pre-commit鉤子? – zaharpopov
這取決於您想要放入文件的內容。如果您需要實際的修訂版ID,那麼不需要,預先提交時不知道機上變更集的ID。你必須使用提交鉤子並進行第二次提交。 – SingleNegationElimination
我通過將我的(C++)代碼設置爲#包含Mercurial忽略的文件來解決雞/雞蛋問題。構建的預編譯步驟會生成文件(我使用'hg id',但理論相同)...因爲它被Mercurial忽略,它不會影響更改集。只是一個想法。 – icabod
在哪裏,確切地說,這是「約」框?在應用程序的GUI中? –
@Matt:假設是,或者是web應用程序,或者只是命令行程序中的打印輸出,這有什麼關係嗎? – zaharpopov