%20%E3%81%8B%E3%82%89%20Apache%20SVN%20(Linux)%20%E3%81%AB%20SVN%20%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E6%AD%A3%E3%81%97%E3%81%8F%E8%BB%A2%E9%80%81%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
私の目標は、古い SVN リポジトリを Windows VisualSVN サーバーから Linux Apache SVN サーバーに転送することです。最初のステップは、svnadmin dump コマンドを使用してすべてのリポジトリのダンプを作成することでした。その後、それらのダンプを Linux サーバーにロードしました。リポジトリをインポートしたときにエラーはありませんでした。ただし、一部のファイルでは、変更をコミットするときに 500 内部サーバー エラーが発生します。
何が問題なのかを確認するために、エラーが発生したファイルのいくつかを Web ブラウザーで開きました。これらのファイルの最後の数行が破損していることがわかりました。データは失われていませんが、ファイルの末尾に奇妙な文字があります。Web ブラウザーでは「???」と表示されます。
複数のエクスポートを試みましたが、すべてのエクスポートで同じ問題が発生します。リポジトリまたはダンプを修正することは可能ですか? このような問題が発生しないようにする方法はありますか?
答え1
- 私の知る限り、数バージョン前にリポジトリの構造、データ、ストレージにいくつかの変更がありました。VisualSVN Server と Apache 側の Subversion バージョンが同じであれば、より堅牢になります (つまり、必要に応じて VisualSVN Server をアップグレードします)。
- FS ビューから見ると、VisualSVN Server と Linux の Apache のリポジトリは同じです。ファイルとリポジトリ以外のファイルがあるディレクトリだけです。したがって、最も簡単な方法は、RepoRoot から新しいサーバーにツリーをコピーし (新しい OS 要件に従って所有者と権限を修正)、(古い) パスワード ファイルを追加し (必要な場合)、リポジトリ ツリーの外側に配置し、(古い) 認証ファイル (必要な場合) を追加し、VisualSVN Server の httpd.conf から svn 関連部分を新しい環境に移行し (必要な変更 (主にパス関連) を適用)、新しい場所にリポジトリを配置するだけです。
追伸:私は実行された面倒な手間をかけずに「コピー&ペースト」で移行できる
コミット時に500内部サーバーエラーが発生する
主な理由は 2 つあります: ユーザーベースが移行されていない、または authz ファイル内の ACL を忘れている (おそらく欠落しているか空) - リポジトリのダンプではこれらのファイルは転送されません。