8

私は、アプリケーションがデプロイされる環境ごとに 1 つの構成ファイルがあるプロジェクトで作業しています。

開発者がこれらのファイルの 1 つを変更する場合、開発者はファイルを個別にチェックインすることはできませんが、すべてのファイルをまとめてチェックインすることは許可されていません。少なくとも、開発者には、これを行う必要があることを通知する必要があります。

どうすればそれを達成できますか?

4

2 に答える 2

12

これを行うには、コミット前のフックを作成できると思います-ファイルのリストを持っているだけで、1つがコミットされた場合、それらはすべてコミットする必要があります。

コマンド ライン アプリケーションを記述できる任意の言語でフックを記述できます。唯一の落とし穴は、フックが SVN サーバーのコンテキストで実行されることです (少なくとも伝統的には、これが改善されているかどうかはわかりません)。開始時に多くの環境が与えられていません。たとえば、「PATH」の欠如に気付く可能性があります。

リポジトリの「hooks」ディレクトリにサンプルのバッチファイル/シェル スクリプト フックがありますが、過去に C# で記述したこともあります。

このhttp://wordaligned.org/articles/a-subversion-pre-commit-hookは、pre-commit フックの優れた一般的な紹介のようです。

于 2008-11-24T11:48:38.250 に答える
1

いいえ、トランザクションに関する情報を取得するには、スクリプトで svn に詳細を照会するだけです。そして、svn はその情報を提供できます。同じサーバー上にある必要はありません。

彼が意味することは、Subversion がフックを実行すると、環境なしでsvn サーバー自体によって実行されるということです。svn フックが必要とする外部リソースはすべて、svn サーバー アカウントからアクセスできる必要があります。あなたが求めていることから、トランザクションを比較するために何らかの外部データベースアクセスなどを必要としないと仮定すると、これは問題ではないかもしれません。

あなたの最善の策は、例としてsvn に付属する subversion フックのいくつかを調べることです。また、SVN Hook Argumentsには、各フックがどのように呼び出されるかがリストされています。

于 2008-11-24T12:31:51.923 に答える