3

リポジトリを保存するために Visual SVN Server を実行している Windows Server があります。また、そのサーバーにはテスト コピーがあります。

何かをコミットするたびにそのテストコピーが自動的に更新されるように、単純なSVNポストコミットフックを設定しようとしています

コミット後のフックのVisual SVNでは、このように設定しました

"C:\Program Files (x86)\VisualSVN Server\bin\updatescripts.bat" D:\inetpub\TESTCOPY

次に、そのバッチ ファイルには、このような単純な更新があります。

PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\"
svn update %1

サーバーでバッチファイルをダブルクリックして実行するか、コマンドラインから実行すると正常に動作します。ラップトップから何かをコミットすると、フリーズしてエラーが発生せず、テストコピーがロックされるため、クリーンアップを実行する必要があります。

Visual SVN サービスはネットワーク サービスとして実行されており、この aacount にはサーバー上の bin フォルダーとテスト コピーへのフル アクセスがあります。

シンプルな svn update post commit フックを設定する方法はありますか?

ありがとうフェデ

4

4 に答える 4

1

コマンドを実行していますsvn update。正確にどの作業コピーを更新しようとしていますか?

渡されるパラメータはリポジトリのパスです。これは、作業ディレクトリではなく、Subversion マスター リポジトリを含むディレクトリを指します。これは、ポスト コミット フックが格納されているディレクトリと同じです。

Subversion フックはユーザーの作業ディレクトリにアクセスできないため、ユーザーのファイルを操作することはできません。通常、フック スクリプトは ではなく を使用する必要がsvnlookありsvnます。そうすることで、トラブルを未然に防ぐことができます。

場所がわかっている場合は、サーバー上の Subversion 作業コピーを更新できます。

PATH=%PATH%;"C:\Program Files (x86)\VisualSVN Server\bin\"
set SVN_WORK_DIR=C:\SVN\workdir"
svn update %SVN_WORK_DIR%

ただし、これは Subversion を拘束するため、お勧めしません。コミットを行ったユーザーは、Subversion がプロンプトの制御をユーザーに戻す前に、更新が完了するまで待たなければなりません。

于 2013-06-25T18:49:55.467 に答える
1

私も同様の問題を抱えていましたが、SVN はバックスラッシュの代わりにスラッシュを使用するパスが好きであることが判明しました。

これを試して:

set MYPATH=%1

:: Transform backslashes to forward slashes
set MYPATH=%MYPATH:^\=/%

svn update %MYPATH%
于 2012-04-12T13:48:49.813 に答える
0

何百万もの異なることを試した後、これは私にとってうまくいきました...

これをコミット後のフック "C:\Program Files\VisualSVN Server\bin\svn.exe" update "C:\my path\" に入れました。私のパスは、更新する作業コピーへのパスです。

また、ローカルシステムとして実行するようにサービスを変更する必要がありました

于 2013-02-13T18:43:04.647 に答える
0

それは本当にあなたがやりたい方法ではありません。すべきことは、Jenkinsなどを使用してリポジトリを監視することです。Jenkins はリポジトリを監視し、変更、テスト コピーの更新、ビルドのキックオフ、自動テストの実行などを行うことができます。

于 2014-04-25T15:29:18.793 に答える