2

現在pre-commit、mercurial プロジェクトにフックがあり、必要に応じてプロジェクトのバージョン番号を更新するオプションをユーザーに提供します (たとえば1.01.0.1または1.1またはに2.0)。これらのオプションのいずれかを選択すると、コミットが行われる前に、フックがプロジェクトのファイルの 1 つのバージョン番号を更新します。

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

それも呼び出すようにフックに追加したいと思いhg tag <new_verson_number>ます。

ただし、これをpre-commitフックに追加することはできません。コミットが呼び出される前にタグが追加され、タグが古いリビジョンになるためです。

hg tagコマンドをcommitフック (コミット後に実行)に追加して、一連のイベントが次のようになるようにしたいと思います。

  • hg commit -m "my commit message"
  • ユーザーははいと言います。バージョン番号を変更したいです
  • バージョン番号は関連ファイルで更新されます
  • commit が発生する [ここまでは問題ありません]
  • ユーザーがバージョン番号を変更した場合は、コミット フックを実行しますhg tag <new_version_number>

ここで、格納されているファイルから新しいバージョン番号を読み取って実行する commit フックを追加できますがhg tag <new_version_number>、ユーザーバージョン番号を変更しないことにした場合はどうなるでしょうか? その場合、タグを付けたくないですし、やみくもに実行すると、hg tag <new_version_number>いらないタグ​​が付いてしまいます。

それで、pre-commitフックにいくつかの情報を残すようにフックに指示できる方法はありますかcommit(タグを追加するかどうかのはい/いいえ)、commitフックはこれを使用してタグを追加するかどうかを決定できますか?

乾杯。

4

2 に答える 2

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

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

于 2012-03-08T03:26:51.170 に答える
1

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

于 2012-03-08T07:00:18.813 に答える