2011-12-08 4 views
1

私は巨大なMercurialリポジトリに ".version"という名のファイルを作成しました。このファイルは、コミットまたは更新が行われるたびにフックで自動的に生成されます。生成されたファイルをhgアーカイブに自動的にインクルードします

ただし、このファイルは(これは常に他のプロジェクトの開発者との競合の結果)が生成され、バージョン管理されていない、私はHGアーカイブについてヘルプページがあること伝え

hg archive 

を行う際には、必ずパッケージ化することにしたいです

hg archive -I .version 

ですが、自動的にこの組み込みを実行する方法はありますか?

hgrc-fileについてのmanページでこれに関するオプションが見つかりませんでした。

提案がありますか?私は-Iは、あなたはそれがない何を考えていないと思いますが、自動的にあなたのhgrcに

[alias] 
archive = archive -I .version 

をエイリアスを設定することができ-Iを実行するには

+1

hgをバージョンコントロールではなくデプロイメントに使用しようとしているようですね?おそらくあなたはフックをデプロイスクリプトに移すべきでしょうか? –

+0

バージョンには何がありますか? –

+0

**。**は、** 2.3.0_ のようなバージョン番号に常に更新されるため、私以外の誰かがマスターリポジトリにコミットをプッシュすると、プロジェクトファイルとしての**。**の追加は常にマージ競合になります。 。 –

答えて

0

。私が理解しているのは、アーカイブの内容をrepo内のものだけに限定し、repoにはないので、 ".version"というパターンに一致します。

あなたが望むのは、バージョンがアーカイブに保存されているリビジョンのバージョン情報であれば、現在のフックはpost-archiveフックに変更する必要がありますか?

+0

こんにちは、これは動作しません。エイリアス "archive =!$ HG archive -I .version $ HG_ARGS"を作成しようとしましたが、それ以上は指定できない未定義の操作で動作します。 –

+0

いいえ、それは一般的には-I .version ...で動作しません:( –

+0

$ HGまたは$ HG_ARGSは必要ありませんか?またはhgエイリアスではなくシェルエイリアスとしてこれを実行しようとしていますか? –

1

archiveコマンドは、ソフトウェアをパッケージ化するための最終的な解決策ではありません。それはあなたに歴史のないzipファイルやタールボールを与えるだけです。

代わりにこれを行うスクリプトを作成します。最後に、ちょうどパックなど、

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

してから、バージョンファイルを生成するディレクトリに必要なファイルをコピーし、ドキュメントを構築するためにフックを実行します。このスクリプトは、ファイルのクリーンセットを取得するためにアーカイブを使用して起動することができますあなた自身のディレクトリ。

ファイルのスナップショットを取得することは、ソフトウェアのパッケージ化の中で最も小さな部分です。

+0

私はどのフックを走らせるべきですか?ポストアーカイブのためのフックはありませんか、間違っていますか? –

+0

リリースを行うために手動で実行するスタンドアロンスクリプトを作成する必要があります。しかし、あなたが本当に 'hg archive'の一部としてやりたいのなら、' post-archive'フックを追加することができます。すべてのコマンドには、その形式の 'pre-'と 'post-'フックがあります。 –

関連する問題