2011-08-09 16 views
0

FileSystemWatcherを使用して、特定のフォルダ内の作成済みイベントと削除済みイベントをリッスンするアプリケーションがあります。 Windowsエクスプローラでファイルを移動すると、アプリは完璧に機能します。しかし、実際には、ユーザーがSubversionクライアント(Syncro svn)でファイルを移動しているときに使用することを意味しています。これは、ユーザーの作業フォルダに対して独自のエクスプローラがあります。しかし、ファイルがsvnクライアントから移動されると、実際に移動されたファイルのどれもCreatedイベントとDeletedイベントをトリガーしません。トリガされるのは、svn固有のファイル(.tmp、.svn-baseおよびその他のファイル)のみです。FileSystemWatcherはSubversionと連携していませんか?

これは、svnクライアントが最初にファイルを「実質的に」移動して実際に後の段階(コミットまたは何か)で移動するためのメカニズムの一種だと思っていましたが、 Windowsエクスプローラで、svnクライアント内で移動を行った後、ファイルは実際には新しいフォルダにあります。では、なぜFileSystemWatcherはこれらのファイルを報告するのではなく、svn固有のファイルだけを報告するのですか?

答えて

1

ファイルがそのまま移動されないために発生します。代わりに、移動したファイルはターゲットディレクトリにコピーすると.tmpというサフィックスが付きます。コピー処理が完了すると、SyncroSvnはファイルの名前の変更を試みます。それでおしまい。リネームされたイベントもちょうどキャッチします。

+0

私は実際にそれを試していますが、ファイル自体の名前の変更も監視する必要があるため、はるかに複雑です。この場合、名前変更イベントは発生しませんでした(少なくとも単に)だけではなく、作成されたイベントや削除されたイベントが発生しました...あなたの答えは正しいですが、私はそれを受け入れ、Subversionではこれを行うのが複雑すぎるという事実を受け入れます。ユーザーはそれを外で行う必要があります。 – Anders

関連する問題