2011-12-08 74 views
1

我有一個巨大的Mercurial Repository,其中包含名爲「.version」的gerated文件。每次提交或更新完成時,都會使用掛鉤自動生成此文件。在hg檔案中自動包含生成的文件

但是這個文件中生成和NOT版本(這總是導致與其他項目開發商衝突),我希望它永遠當我做了

hg archive 

幫助頁面有關汞存檔告訴打包有一個選項

hg archive -I .version 

但是有沒有辦法自動執行這個包含?

我在關於hgrc文件的手冊頁中找不到與此相關的選項。

有什麼建議嗎?

+1

它聽起來像你正在嘗試使用hg進行部署而不是版本控制?也許你應該將你的鉤子移動到部署腳本上呢? –

+0

什麼是.version,你不能版本? –

+0

將**。**版本**作爲項目文件總是遇到合併衝突,因爲除了我之外的人推送提交到主存儲庫時,因爲.version將始終更新爲版本號,如** 2.3.0_ ** 。 –

回答

0

運行-I自動您可以設置一個別名在您的hgrc

[alias] 
archive = archive -I .version 

,但是我不認爲-I做什麼,你認爲它。我對它的理解是,它將存檔的內容限制爲只與回購中符合格式「.version」的內容,因爲您在回購中沒有它。

如果您想在.version中使用正在歸檔的修訂版本的版本信息,那麼您當前的鉤子應該更改爲post-archive鉤子?

+0

嗨,這是行不通的。我試着創建一個別名「archive =!$ HG archive -I .version $ HG_ARGS」,但它運行在一個未定義的操作中,我無法進一步詳細說明。 –

+0

不,它通常會** NOT **與-I .version一起工作...... :( –

+0

您不應該需要$ HG或$ HG_ARGS?或者你是否試圖將其作爲shell別名而不是hg別名? –

1

歸檔命令並不是打包軟件的最終解決方案。它只是給你一個沒有歷史的zip文件或焦油球,就是這樣。

因此,請改用腳本來做到這一點。該腳本可以通過存檔得到一個乾淨的文件集的開始:

$ hg archive -r 1.0 foo-repo foo-1.0 

,然後運行鉤來生成版本的文件,必要的文件複製到該目錄,建立文件,等等。最後,只包你自己的目錄。

士氣是獲取文件的快照是打包軟件的最小部分。

+0

我應該運行哪個鉤子?對於郵件存檔沒有任何勾起,或者我錯了嗎? –

+0

您應該製作一個獨立腳本,您可以手動執行以發佈您的版本。沒有什麼奇特的:-)然而,如果你真的想把它作爲'hg archive'的一部分來做,那麼你可以添加一個'post-archive'鉤子。所有的命令都有這種形式的'pre-'和'post-'鉤子。 –