2012-01-06 27 views
0

私はWindows 2008サーバー上の自分のリポジトリにコミット後のフックを追加しました。だから何かがコミットされるたびに私は自分のアプリケーションのフォルダに移動し、svn updateを実行します。これは動作しますが、非常に遅く、TortoiseSVNはコミット後のフックが終了するまで終了しません。これをもっと速くするにはどうすればいいですか? 1つの方法は、どのアプリケーションにもcdするのではなく、コミットが発生した場所だけにすることです。どうやってコミットしたのか分かりますか?いくつかの正規表現と$ 1?私は1つのアプリだけを試して、1つのファイルに対してはまだ1.5分しか使わなかった。コミット後のSVNコミットが非常に遅くなります - 修正方法?

おかげ

答えて

2

私は(私の知る限り)継続的インテグレーションサーバが行うように、完全にアップデートからコミット切り離します。あなたのアプリでX分ごとにcronを更新させるようにしてください。この方法では、コミット時間はまったく影響を受けません。

+0

cronジョブでポーリングしたくない場合は、ポスト・コミット・フックを使用して、何らかのスケジューラーまたはメッセージ・キューを通知することができます。だから、仕事の大部分はまだコミットの直後に別のプロセスによって処理されます。 –

+0

どのように見えるでしょうか?どのように私はバッチファイルでそれを行うだろうか? – EOB

+1

startコマンドを使用して、更新コマンドを「非同期的に」実行できます。 –

0

Subversionフックを取り外して、Jenkinsを見てください。 Jenkinsは継続的なビルドサーバーですが、Subversionでコミットが行われた後にプロセスが実行されます。通常、これはビルドですが、サーバー上でSubversionのアップデートを実行することもできます。

ジェンキンスは、何か問題が生じたときにすべてを記録し、通知します(電子メール、ツイート、IM、さらにtraffic light)。

変更や履歴などを見るのは簡単です。さらに、Subversionを遅くすることもありません。ところで

は、私は、次のプロセスをお勧めします。

  • サーバーにはC:\inetd\www言うから実行されています。
  • C:\inetd\www2という名前の新しいディレクトリを作成し、そのディレクトリにsvn exportを実行します。
  • C:\inetd\www2C:\inetd\wwwの名前を変更しました。サーバーをバウンスする必要があるかもしれません。

これがないと、他の人がリビジョン2001でこの方法ですしながら、そのディレクトリ内の一部のファイルがすべての変更が同時に行われ、リビジョン2000でどこのサーバーが稼働したことがないされていることを確認しています。さらに、すべての場所にある.svnディレクトリをすべて持っているわけではありません(ただし、Subversion 1.7クライアントではかなり改善されています)。

関連する問題