3

オフィスの開発サーバーに3つのWebサイトのSVN作業コピーがあります。サーバーはLinuxであり、作業コピーはWindowsマシンで動作し、TortoiseSVNを使用して更新/コミットなどされました。ネットワーク共有での作業コピーは厳密にはサポートされていないことを知っていますが、これは、ローカル開発URLでオフラインのサイトへのコード変更をテストしてからライブサーバーに配置できるようにするためです。

これは絶対に見事に機能していました。Linuxサーバーで問題が発生し、交換する必要が生じるまで、問題はまったくありませんでした。私たちはそれをMacに置き換えて、ブラウザテストのためにMacを社内に持っているという2番目の鳥を殺しました。

すべてをMacに移行して以来、SVNは非常に問題を抱えています。コミット/更新は「データベースがロックされています」エラーで失敗することが多く、通常はこのエラーで失敗するため、ほとんどの場合クリーンアップを実行できません。

クリーンアップは次のパスの処理に失敗しました:PATH TO WC ON NETWORKデータベースがロックされており、ステートメント'COMMITTRANSACTION;'を実行しています。

実行されるステートメントは異なり、RELEASEと関係がある場合もあります。

私たちが行っているコード変更は、オンラインでライブサイトにコミットする前に、開発サーバーでテストする必要があります。現状では、作業用コピーを自分のハードドライブにチェックアウトしています。変更をコミットし、開発サーバーで更新し(そして、それが機能することを祈る-どちらの方法でもAGESが必要です)、それらをテストしてから、ライブサーバーが機能する場合は更新する必要があります。

ネットワーク共有上の新しい作業コピーをチェックアウトすることもできません。繰り返しになりますが、通常、ディスクI / Oエラー、またはデータベースがロックされたという苦情があります。スリープまたはハードディスクのスピンダウンが原因である場合に備えて、Macのすべての省電力機能をすでに無効にしています。運が悪いです。

可能であれば、作業用コピーをネットワーク共有に保持したいと思います。すでに述べたように、これはSVNを実行するのに最適な方法ではないことを認識していますが、それは私たちのために機能しています。この問題を解決するために何ができますか?Windows-> Macネットワークに関連しているのではないかと思いますが、実際には、マシンからMacネットワーク共有へのネットワークアクセスが遅いことについて別の質問があります。

4

3 に答える 3

2

SVN 1.7以降、SQLiteは作業コピーのデータベースとして使用されています。SQLiteバージョン3のファイルロックと同時実行で読んだように:

SQLiteは、POSIXアドバイザリロックを使用して、Unixにロックを実装します。Windowsでは、LockFile()、LockFileEx()、およびUnlockFile()システムコールを使用します。SQLiteは、これらのシステムコールがすべてアドバタイズされたとおりに機能することを前提としています。そうでない場合は、データベースが破損する可能性があります。POSIXアドバイザリロックはバグがあるか、多くのNFS実装(最近のバージョンのMac OS Xを含む)で実装されていないことが知られており、Windowsでのネットワークファイルシステムのロックの問題が報告されていることに注意してください。最善の防御策は、ネットワークファイルシステム上のファイルにSQLiteを使用しないことです。

それがあなたの問題のようです。問題を回避するために、ローカルの作業コピーを使用する必要があります。ファイルI/Oが減少する可能性があるため、開発中にパフォーマンスがさらに向上する可能性があります。

デプロイメントサーバーに関しては、 TeamCityHudsonなどの統合サーバーを使用することを検討してください。正しく構成すると、変更を開発サーバーに自動的にデプロイできます(たとえば、コミットごとに)。

于 2012-11-13T12:23:27.913 に答える
1

サーバーソフトウェアを交換したときに、これらの「ネットワーク共有」にアクセスする方法が変更された可能性があります。したがって、実際に、ネットワーク共有を介したsvnチェックアウトへのアクセスが確実に機能していないという事実に関連するさまざまな(より多くの)問題に直面している可能性があります。

しかし、なぜとにかく共有チェックアウトに取り組みたいのでしょうか?すべての開発システムで個別にチェックアウトし、変更を個別にコミットする方がはるかに理にかなっています...

于 2012-11-13T12:09:51.510 に答える
1

同様の質問はすでにここで回答されています-作業コピーXXXがロックされ、SVNでクリーンアップに失敗しました

これは望ましいアプローチではないかもしれませんが、ロックの問題を解決するのに役立ちます。

毎回新しいディレクトリにチェックアウトすることを検討し、古いディレクトリを新しいディレクトリに置き換えることを検討してください

于 2012-11-13T12:13:47.703 に答える