web-dev-qa-db-ja.com

Windowsファイル共有での「読み取り用にロックされたファイル」の問題の回避

私たちのビルド環境は、事前定義された場所にあるWindowsファイル共有に最新のビルドを送り出します。リモートユーザーがその読み取り専用ファイル共有上のフォルダーとファイルを開いて維持すると、ファイルロックの問題が発生します。これにより、ビルドが破損します。これを解決できる技術はありますか?

私は考えました

  • DFS-R
  • BranchCache
  • WebDavのみを有効にして無効にするSMB(できますか?)

しかし、これらの候補ソリューションはいずれも、これまでのところ最適とは思えません。

明確にするために、「最新のビルド」へのパスが\ server\share\path\latestであり、ビルドサーバーのみが書き込みアクセス権を持っていると仮定します。誰かが「最新」フォルダのどこかにコマンドプロンプトまたはmsiファイルを開いた。これでビルドサーバーが完了し、新しくビルドされたすべての部分をコピーする前に、フォルダーからすべてのコンテンツを削除する必要があります。できません。

SMB共有にシンボリックリンクのサポート、NTFSのようなトランザクションのアイデア、またはHFSのような「開いている」ディレクトリの名前を変更できるというアイデアがあった場合-しかし、違います。

また、他の場所で提案されているように、すべてのバイナリをSharepoint Documentフォルダーに配置することも、データ量が多いため、くだらない考えのように思えます。ファイルシステムのようにマウントされ、Webサイトのように動作するWebDAVのみの共有を使用したいと思います。

2
Pelle

彼らが実際にこれらのファイルを編集しているということですか、それとも実際には誰もファイルを使用していないが、ファイルロックがかかっているような状況ですか?

彼らが実際にそれらのファイルを使用している場合(またはドーナツを持っていないときにエディターでファイルを開いている場合)、おそらくそれらのファイルを開くアプリケーション以外の方法でそれらのファイルを開かないようにする必要があります読み取り専用のコピーを作成しないと、破損する可能性があります。ただし、ファイル共有は読み取り専用であるとおっしゃいました。では、ファイルを読み取り専用として複数回開くことができないようにするために、彼らは何をしているのでしょうか。ビルドプロセスについても言及していないので、これはそのワークフローに固有のものでしょうか?

最善の解決策は、ビルド環境を開発環境から分離してみることです。すべてのソースをリポジトリからチェックアウトし、開発者が触れたものから離れて、専用サーバーと専用共有上にそれらを構築する開発プロセスを用意します。そうすれば、開発者が何かを変更したり、ビルドプロセスを壊したりすることを心配する必要はありません。また、ビルドプロセスは、動作中に変更されることを心配する必要もありません。

2