すでに数回、SVN リポジトリの 1 つが破損し、プロジェクトのいくつかのバージョンまたはブランチで何をしたかを本当に知らなくても何でもできるという状況に陥りました。では、リポジトリが破損する原因は何ですか?
クライアント間の非互換性、特に文字セットの非互換性が問題を引き起こす可能性があるようです。
すでに数回、SVN リポジトリの 1 つが破損し、プロジェクトのいくつかのバージョンまたはブランチで何をしたかを本当に知らなくても何でもできるという状況に陥りました。では、リポジトリが破損する原因は何ですか?
クライアント間の非互換性、特に文字セットの非互換性が問題を引き起こす可能性があるようです。
基本的に 3 つの異なるケースがあります。
障害のあるハードウェアは、最も明白な場合を除いて、通常、発見するのが最も困難です。ケース 2 は、サーバーへのログイン アクセスを制限することで回避できます。それ以外はすべてSubversion のバグです。(これには、クライアントとサーバー間の互換性の問題が含まれます。) Subversion クライアントを使用するだけで、リポジトリを破損することはできません (クライアントにバグがある場合でも、IMO)。
潜在的なファイルシステムの破損または誰かが内部の svn ディレクトリをいじっていますか?
ハードウェアが故障している可能性は常にあります。メモリ内のビット エラーのようなものは、単にコンピューターをクラッシュさせるのではなく、サイレントな破損を引き起こす可能性があります。svn サーバー プロセスが影響を受ける場合、リポジトリが破損する可能性があります。
リポジトリが svn サーバーのローカル ディスクではなく NFS 上にある場合、berkley db 形式を使用していると破損する可能性があります。svn 1.5 では、FSFS が新しいリポジトリのデフォルトになりました。NFS のような非ロック ファイルシステムでの生活は完全に満足しています。
私はそれが数回起こったことがあります。サーバーが特定のことをするのに長い時間がかかっている間にクライアントが離れた場合、SVN はうまく対処できないようです。正確な詳細はわかりませんが、kill -9
読み取り専用プロセスと思われるものに対していくつかの s を実行したところsvnadmin cleanup
、サーバーが再び応答する前に後で実行する必要がありました。
レポの破損があり、理解するのに時間がかかりました。サーバー上で、レポ内の .svn ディレクトリの所有者を誤って無関係のユーザーに変更してしまいました。その後、レポを削除して再作成するまで、SVNは破損エラーを出しました。直した後も。 額を叩く
これは、ベースのリポジトリでは非常に一般的file://
ですが、単一のユーザー/サービスがリポジトリにアクセスしている場合、これは発生しません。