1

トランザクションのにファイルの内容に基づいていくつかのルールを適用したいpre-commitフックを書いています。したがって、トランザクションの開始時に、「U」、「UU」、または「D」とマークされたファイルの内容を、保留中の変更なしでsvnlookcatしたいと思います。提供されたトランザクション識別子(事前コミットの2番目の引数)を取得し、ダッシュとそれに続く文字を取り除き、「基本リビジョン」と見なしても安全ですか?この情報を入手するためのより良い方法はありますか?

4

3 に答える 3

2

直接の答えはノーです。トランザクション番号は何でもかまいません。ただし、svnlook youngest <repos>探している最後のリビジョンが返されます。

pre-commit フックには注意してください。

  • 時間がかかるようなことをしていないことを確認してください。開発者は pre-commit フックが完了するまで待たなければならず、何かの処理に 7 ~ 10 秒かかると、開発者は非常にイライラします。
  • コミット中のデータを変更することはできません (変更すべきではありません)。必要なものと一致する場合は、コミットを許可します。そうでない場合は、コミットを許可しないでください。
  • 正当な活動である可能性があるものを停止しないようにしてください。たとえば、一部のサイトでは、コミット メッセージにチケットを入れない限り、誰かが変更をコミットできないようにするために pre-commit フックを使用しており、そのコミット メッセージはその開発者に割り当てられたチケットであり、そのチケットはオープン状態です。チケットが他の人に割り当てられているために開発者が変更をコミットできず、その割り当てを変更できる唯一の人がその週にオフになっているときに起こる陽気なことを想像できますか?

pre-commit または post-commit フックではなく、継続的インテグレーション サーバーを使用してコミットを検証するのが最適な場合があります。たとえば、開発者がファイルをコミットできるようにしますが、開発者が適切なグループに属していない場合は、開発リーダーに電子メールを送信してください。

開発者がおそらく正しいことをしている可能性は 90% あります。その開発リーダーは、おそらくすでにこの問題について知っています。また、問題がある場合は、変更を元に戻すことができます。

于 2012-01-23T22:11:38.563 に答える
0

リビジョンがコミットされるまで、ベース リビジョンは未定です。別の変更で同じノードが変更されない場合は、コミットの進行中にコミットできます。コミットの最後の部分だけが排他的です。

于 2012-01-24T20:08:56.657 に答える