2

Jeff Atwoodは空白について書き、行とファイルの終わりにある末尾の空白を削除するコミットフックを作成することを提案しました。

pre-commit検索しましたが、フックを使用してこのようなファイルを変更する明確な例は見つかりませんでした。共有したいスクリプトはありますか?

4

3 に答える 3

5

pre-commitフックを使用して、進行中のトランザクションを変更することはできないと確信しています。コミットアクションのみを許可または拒否できます。あなたの場合、ファイルを調べて空白の要件を満たしているかどうかを確認し、満たしていない場合は有用なエラーメッセージでコミットを失敗させます。コミット後のフックを使用して提案したことを実行できますが、フックスクリプトから2番目のコミットを作成して、最初のコミットの不正な空白を修正する必要があります。コミット前のフックアプローチの方が良いと思います。

于 2009-11-09T20:03:33.083 に答える
4

ファイルがサーバーによって変更された場合、ファイルはクライアントのバージョンと一致しないため、subversionでこれを行うためにコミットフックを実際に使用することはできません。コミットフックは、通知メッセージの生成などの読み取り専用イベント用、またはファイルをチェックしてコミットをブロックする必要があるかどうかを確認するためのものです。

コミットフックに関するドキュメントを参照してください。

フックは、新しいリビジョンの作成やバージョン管理されていないプロパティの変更など、リポジトリイベントによってトリガーされるプログラムです。一部のフック(いわゆる「プレフック」)は、リポジトリ操作の前に実行され、発生しようとしていることを報告し、発生をまったく防止する手段を提供します。他のフック(「ポストフック」)は、リポジトリイベントの完了後に実行され、リポジトリを検査するが変更しないタスクを実行するのに役立ちます。各フックには、そのイベントが何であるか(または何であったか)、提案された(または完了した)特定のリポジトリ変更、およびイベントをトリガーした人のユーザー名を伝えるのに十分な情報が渡されます。

于 2009-11-09T20:04:02.380 に答える
2

使用しているプラ​​ットフォームはわかりませんが、TortoiseSVNで、クライアント側のフックを使用してこれを行うことができます。

基本的に、pre-commitフックを使用してファイルを変更するスクリプトを作成します。ただし、これはビルドスクリプトでより正確に行われると思います。コンパイルも実行もしていないコードをコミットしたくないのです!スペースを削除するスクリプトは、コンテキスト/言語によっては、何かを壊す可能性があります。

于 2009-11-09T20:17:59.570 に答える