コミットまたはキルンにプッシュしたときに変更セットに自動的にタグ付けされます
質問
Changesetがローカルでコミットされているため、またはKILNリポジトリにプッシュされたときに、Changesetに自動的にタグ付けする方法があるかどうかを知りたいと思います。
すべての変更セットにバージョン/ビルド番号のタグが付いていることを望みます。バージョン/ビルド番号をデータベースに保存することを計画しており、スクリプトをデータベースからこの値を取得し、変更にタグを追加したいと考えています。これをコミット後のイベントとして、またはKILNリポジトリにプッシュしたときにこれを行うために、これを自動的に行うことは可能ですか?
また、すべてのコミット/プッシュで自動タグ付けを実現するために、他のアプローチにもオープンです。
解決
セットごとにタグを作成するのではなく、次のいずれかを試してみてください。
- 識別子としてChangeset Hashを使用しますか?
- 識別子としてログから生成された文字列を使用します(以下を参照)?
このコマンドを使用して、ログから記述文字列を生成できます。
hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'
結果は次の形式を取得します。
<latest tag>-<# changesets since latest tag>-<changeset hash>
たとえば、Mercurial Repoの私のローカルクローンで、これは次のとおりです。
1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7
タグ1.7.2以降、2つのコミットがあり、現在のChangesetハッシュは5E51254Aであることがわかります。
Mercurialでは、各タグが新しい変更セットを作成します。したがって、すべてのコミットにタグを付けると、リポジトリの変更数が2倍になります。ホイールを再現しようとするのではなく、組み込みのツール(上記のように)を使用する必要があります。
他のヒント
Changesetがローカルでコミットされているため、またはKILNリポジトリにプッシュされたときに、Changesetに自動的にタグ付けする方法があるかどうかを知りたいと思います。
あなたはいつでもそれを行うためにポストコミットフックを書くことができます。
すべての変更セットにバージョン/ビルド番号のタグが付いていることを望みます。
タグは、コミット履歴の重要な瞬間を特定するのに役立ちます。これらの瞬間に、リリース1.0、リリース1.3などのような製品開発に関連する意味のある名前を提供します。
すべての変更セットをタグにすると、ノイズレベルを上げるだけです。重要なタグに関する情報をどこに置く必要があります。
TAGを変更セットに関するメタ情報として検討してください。それらのすべてが同じ重要性に値するわけではありません。それらのすべてがそのメタ情報を必要とするわけではありません。
タグを見ると、控えめに使用する場合にのみ、タグが意味のある歴史を与えることができます。
フックで
見る:
例:Push、Pull、またはUnbundleを介して変更グループが追加された後に実行されます。私はそれを使用して自動ビルドをトリガーしました。
[hooks]
changegroup.yyyy = command
同様に、ポストコミット、ポストプッシュフックがあります
[hooks]
post-<command> = command