2012-03-07 7 views
2

私は今水銀プロジェクトにpre-commitフックを持っています。希望する場合は、プロジェクトのバージョン番号を更新するオプションをユーザに与えます(例えば、1.0.1または1.1または2.0)。彼らはこれらのオプションの1つを選択し、フックはコミットが行われる前にプロジェクトのファイルの1つのバージョン番号を更新します。Mercurialフック - フック間の情報を渡しますか?

hg commitを実行すると、このフックが実行され、関連するファイルが新しいバージョン番号で更新され、コミットが実行されます。

フックに追加して、hg tag <new_verson_number>も呼び出すようにしたいと思います。その後、タグは、タグは、日付のうち1つのリビジョンであることを引き起こして、インクルードが呼ばれコミット前に追加されますので、

しかし、私は、pre-commitフックにこれを追加することはできません。

私はそうのような一連のイベントがあるように、(コミット後に実行)commitフックにhg tagコマンドを追加したい:私は「、ユーザーはそう言う

  • hg commit -m "my commit message"
  • バージョン番号を変更したいDバージョン番号は、関連するファイルに更新され
  • が発生コミット[ここまですべてがうまくある]
  • ユーザーがバージョン番号を変更した場合は、コミットフック:hg tag <new_version_number>を実行します。 hg tag <new_version_number>が、ユーザーは、バージョン番号を変更しないことを決めた場合はどうを実行

今、私はそれがに保存されているとのファイルから新しいバージョン番号を読み取るフックをコミット追加することができますか?その場合、私はタグを追加したい、私は盲目的に実行する場合hg tag <new_version_number>私はしたくないタグで終わるでしょう。

ので - 私はcommitフック(ノータグを追加するかどうかのはい/)のためのいくつかの情報を残すpre-commitフックを伝えることができるいくつかの方法がある、とcommitフックを追加するかどうかを判断するためにこれを使用することができますタグかどうか?

歓声。

答えて

2

最後のコミットがバージョンを保存するファイルを変更したかどうかを確認するフックについては、どうでしょうか。commit次のようなものがあります。

[hooks] 
commit.tagversion = if hg log -r $HG_NODE --template '{files}' | grep -q VERSION_FILE ; then hg tag $(hg cat -r $HG_NODE VERSION_FILE) ; fi 

私はそれをテストしていませんが、それはうまくいくはずです。

+0

私は少し問題を単純化しました。バージョンファイルには、変更される可能性のある他の情報が含まれていますが、バージョンの変更には寄与しません。おそらく、私はいくつかの(一時的な)環境変数をTRUE(1)またはFALSE(0)に設定し、コミット・フックでその変数をチェックするとしたら?それ以外は、使用していない環境変数でなければなりません。あるいは、コミットフックによって削除されるプリコミットフックの一時ファイルに書きましたか? –

+1

ええ、どちらかがうまくいくでしょう。より一般的には、これはCI、継続的統合、サーバーによって行われます。たとえば、ジェンキンは、リポジトリを監視し、ビルドし、テストを実行し、タグ付けし、スクリプトが必要ないすべてのアーティファクトを投稿します。コミット時にこのようなことをすることは、設定されたフックなしでマシン上でコミットすることができるため、失敗する傾向があります。プッシュ・ツー・リリースのリポジトリを持つことで、素晴らしいチョーク・ポイントと多くの追加機能が提供されます。ちょうど私の$ 0.02。 –

+0

乾杯、私はそれをします。私はあなたにテスト/作成/ホスティングを行ったシステムがあることを知っていましたが、彼らが何を呼んでいるか分からなかったのです。ポインタのおかげで、ジェンキンスについてお読みになります。 (私はbitbucketを使用することに制限されています)。 –

1

追加するタグ名を抽出し、追加する前に既にhg tagsに存在するかどうかを確認することができます。これは、開発者が手動でバージョン番号を修正する場合も同様です。

+0

ありがとう - 私はこのようなことをするかもしれませんが、私はプリコミットフックでバージョン番号(1.6.1から1.6.2)を更新するかもしれないが、タグを追加したくない場合はカバーしませんそれのための。 –

関連する問題