2011-06-24 43 views
3

我有應用程序我想從mercurial打印出(在「關於」框中)其版本/版本。假設它是修訂版deadbeef,所以它會知道這一點。在CVS的舊時代可以使用類似$Revision$的東西來自動替換。應用程序在mercurial repository中訪問它自己的版本

Mercurial的最佳做法是什麼?

+0

在哪裏,確切地說,這是「約」框?在應用程序的GUI中? –

+0

@Matt:假設是,或者是web應用程序,或者只是命令行程序中的打印輸出,這有什麼關係嗎? – zaharpopov

回答

1

Mercurial的Keyword Extension可能是你想要的。它幾乎完全支持$Revision$格式。

2

你可以用它來獲取當前版本中水銀:

hg id -i 
5

最好的辦法可能是使用預提交掛鉤,以取代一個指定的文件與hg log -r tip輸出,可能與--template對Arg的格式它以特定的方式。

不幸的是,有一個雞和雞蛋的問題。修訂版是提交數據的校驗和,但校驗和在提交發生後纔可用。一種選擇可能是實際掛鉤提交而不是預先提交,並將版本信息提交到單獨的更改集中。

+0

所以,因爲你說的雞蛋問題,我實際上不能使用pre-commit鉤子? – zaharpopov

+0

這取決於您想要放入文件的內容。如果您需要實際的修訂版ID,那麼不需要,預先提交時不知道機上變更集的ID。你必須使用提交鉤子並進行第二次提交。 – SingleNegationElimination

+2

我通過將我的(C++)代碼設置爲#包含Mercurial忽略的文件來解決雞/雞蛋問題。構建的預編譯步驟會生成文件(我使用'hg id',但理論相同)...因爲它被Mercurial忽略,它不會影響更改集。只是一個想法。 – icabod

相關問題