2011-06-24 6 views
3

私はアプリケーションを持っています。水銀からのリビジョン/バージョンを印刷したいと思います。それが改正deadbeefであることを知っているとします。 CVSの古い時代には、$Revision$のようなものを使って自動的に置き換えることができました。アプリケーションは、独自のバージョンの水銀リポジトリにアクセスします。

これはMercurialのベストプラクティスですか?

+0

正確には、この「約」ボックスですか?アプリケーションのGUIで? –

+0

@Matt:yesとか、web appかもしれないとか、あるいはコマンドラインプログラムでのプリントアウトだけが問題なのでしょうか? – zaharpopov

答えて

1

MercurialのKeyword Extensionはおそらくあなたが望むものです。それはほぼ正確に$Revision$フォーマットをサポートします。

2

あなたは水銀で現在のリビジョンを取得するためにこれを使用することができます:

hg id -i 
5

最善のアプローチは、おそらくフォーマットに--template引数で、hg log -r tipの出力で指定されたファイルを置き換えるためにプリコミットを使用フックし、おそらくですそれは特定の方法で。

残念ながら、鶏と卵の問題が少しあります。リビジョンはコミットされたデータのチェックサムですが、コミットが行われるまでチェックサムは使用できません。 1つのオプションは、実際にプリコミットの代わりにコミットをフックし、バージョン情報を別のチェンジセットにコミットすることです。

+0

あなたは鶏卵問題のために、私は実際にプリコミットフックを使用することはできませんか? – zaharpopov

+0

それはファイルに何を入れたいかによって異なります。実際のリビジョンIDが必要な場合は、noです。機内チェンジセットのIDは、プリコミット時にはわかりません。代わりにコミットフックを使用して、2回目のコミットを行う必要があります。 – SingleNegationElimination

+2

私は、Mercurialによって無視されるファイルを#includeするために私の(C++)コードを設定することによって、鶏卵問題を解決しました。ビルドのプリコンパイルのステップでファイルが生成されますが(私は 'hg id'を使用しましたが、理論は同じです)... Mercurialでは無視されるので、チェンジセットには影響しません。ちょっとした考え。 – icabod