2012-05-12 6 views
4

バージョン番号、著者、編集日などの情報をソースコードファイルの上にいくつかのバージョン情報を埋め込みたいと思います。バージョン情報をMercurialでソースコードに埋め込む方法

Mercurialでこれを行う簡単な方法はありますか?

+1

ファイル作成時に主に修正されますか?あなたがファイルを編集する最後の人であることを望んでいない限り。しかし、それはあいまいである。一般に、DVCS(およびClearCaseなどの一部の中央化されたVCS)は、バージョンメタデータをファイルに入れないようにします。したがって、たとえば、ファイルに埋め込まれたファイルに影響を与えた最後のコミット番号や、それが発生した日付を簡単に取得することはできません。私はその能力を大切にしており、私のリリースシステムはその周りに設定されているので、まだ古風なVCS(より正確にはRCS)を使用しています。私はGitやMercurialやSVNに切り替えていません。 –

+2

また私の[ディスカッション](http://stackoverflow.com/questions/645008/what-are-the-basic-clearcase-concepts-every-developer-should-know/645424#645424)を参照してください(または、 )「埋め込まれたバージョン番号 - 良いか悪い」について –

+0

[ファイル履歴:ソース内にあるか、scmで処理できるようにするか?](http://stackoverflow.com/questions/929824/file-history-in-the-source-or-let-scm-handle-it ) – ChrisF

答えて

3

コメントやその他の答えに言及すると、CVSのように自動拡張されたタグに依存することはお勧めできません。特に、いつでも必要なメタ情報を抽出し、後でほぼすべての細分性を抽出できるためです。

しかし、あなたが本当に必要な場合(上司がそう言っているからです)、あなたが得ることができる最も近いものは、水銀で束ねられたkeyword extensionを利用することです。

+1

キーワードエクステンションについての「必要がない理由」のページは次のとおりです。http://mercurial.selenic.com/wiki/KeywordPlan#head-2007fad6f31bf6f1f1b5c3d5b02e5c6225de3ec5 Mercurialの主著者によるコメントから、誰が積極的に延長に反対している。 –

4

これはStackoverflowで多くの質問を受けています。短い答えは、あなたがそれを行うべきではないということです。

悪夢をマージするたびに変更されるファイルはありません。

より良いオプションは次のとおりです。

  • あなたは
その時に構築/スクリプトの実行$(HG ID)を展開し、ビルドにそれを入れている update
  • 上のファイルにバージョン文字列を書きます

    私を信頼してください、ファイル内のリビジョン文字列はCVS/SVNの考え方です。これはgit/Mercurialの世界には存在しません。

  • +0

    私はそれに同意します。そしてSVNでさえ、明示的にプロパティを介して有効にする必要があります。どのファイルが 'cvs add -kb'を使って"バイナリ "であるか、あるいはrepo設定で明示的に教えなければならないCVSとはかなり違っています。 – 0xC0000022L

    +1

    CVSとsvnの両方で、作業ディレクトリ内のいくつかのファイルを異なるバージョンでチェックアウトすることができます。私は 'cvs co -r 1.1 a_specific_file'を行うことができるので、cvs(とsvn)では"このバージョンは何なのですか "という意味があります。 Mercurialとgitでは、あるバージョンではいくつかのファイルを、別のバージョンでは他のバージョンのファイルを持つことはできません(状態をコミット/クリーンアップすることはまだありません)ので、 'hg id'は常に_every_ファイルの内容を知るのに十分です。ビルド/デプロイメントシステムをソースファイルを汚染するのではなく、よりスマートにするだけです。 –

    +0

    バージョンを更新時のファイルにどのように追加しますか?それを自動化する方法はありますか?私はSourceTreeを使用しています。 – felwithe

    1

    はい、可能ですが、有効にする必要があります。あなたが求めているのは、基本的にはkeyword extensionです。実際に展開されたキーワードをリビジョン履歴の一部にすることは望ましくないため、最初にこれを有効にするときは注意してください(kwshrinkについては、kwexpandを参照してください)。

    1

    好きな方法はhgversioninfo pluginです。 "hg commit"、 "hg update"などですぐにversion.pyファイルを生成します。

    関連する問題