サーバー から クライアント を分離しましょう
私はAssemblaがあなたのリポジトリが格納されている場所であると仮定しています。これはSubversionの サーバー です。
TortoiseSVNはあなたのサーバーからソフトウェアをチェックアウトするために使用しているソフトウェアです。これはあなたの クライアント です。
まず、 サーバー について説明しましょう。
あなたのサーバ上にある各Subversionリポジトリには、 Universally Unique Identifier (UUID)というものがあります。これは、Subversionリポジトリを作成するときに作成されます。 SubversionはどのようにUUIDを生成し、このUUIDを共有していないSubversionリポジトリには全世界に他のリポジトリが全くないことを知っていますか?実際にはそうではありませんが、UUIDを持つ別のSubversionリポジトリがある可能性はあまりありません。時間、IPアドレス、およびMACアドレスに基づいて、UUIDは生成されます。いくつかの擬似ランダム値を加えたものです。
UUIDは世界中のどのSubversionリポジトリでも一意であることが保証されているため、Subversionクライアントは元のチェックアウトを行ったのと同じリポジトリと話していることを確認するために使用します。
Subversionリポジトリをある場所から別の場所に移動するときには、データにロードできる新しいSubversionリポジトリを作成する必要があります。これは以前と同じリポジトリなので、Subversionのloadコマンドでは、新しいSubversionリポジトリのUUIDを古いものと同じにすることができます。
これが行われたことに注意してください:
- サーバー上
- データをリポジトリにインポートするとき
問題の サーバー側 なので、これはクライアントソフトウェアによって行われません。
ここでは、Subversionの クライアント について説明します。この場合、TortoiseSVNです
Subversionクライアントが作業ディレクトリにチェックアウトを行うと、チェックアウトを行った場所のURLとそのリポジトリのUUIDが記録されます。
TortoiseSVNを使って作業ディレクトリを見てみましょう。 Subversionのチェックアウトフォルダを右クリックして、ドロップダウンのコンテキストメニューの下部にあるプロパティを選択します。 TortoiseSVNサブメニューには行かないでください!コンテキストメニューの下部にあるプロパティメニュー項目を選択します。
Subversion タブをクリックします。いくつかの情報が表示されます。 2つは、チェックアウトが発生したURLとリポジトリのUUIDです。
When you right-click on the checkout folder and do a TortoiseSVN->Relocate, you can change the URL where the checkout occurred. However, you cannot ever change the UUID for that checkout.
これはSubversionクライアントがSubversionリポジトリを新しいサーバに移動しても、同じリポジトリと通信していることを確認するためです。
リポジトリを移動したが、UUIDが同じであることを確認していない場合はどうすればよいですか?ここにいくつかの解決策があります。
- 新しく新鮮なチェックアウトを行います。これは BEST オプションです。 Subversionリポジトリを移動する前に、すべての変更をチェックインする必要があります。そうでない場合は、ステータスを使用して変更を見つけ、新しく新しくなったチェックアウトにコピーすることができます。
- リポジトリを古いダンプファイルでリロードして、今回は
- force-uuid
フラグを使用してください。
- UUIDを手動で編集して、Subversionサーバー上のUUIDを変更することは可能です。 SubversionサーバのUUIDは、サーバ上のdb/uuidファイルに格納されています。古いUUIDは古いチェックアウトで見つけることができます(上記参照)。 Subversionリポジトリディレクトリ内のdb/uuidファイルのUUIDを変更するだけです。 1つの誤った動きを覚えていると、あなたはリポジトリを再び読む能力を完全に破壊します。あなたの会社はソースコード全体を失い、破産し、あなたの仕事の誰もが仕事を失い、永遠にあなたを憎むでしょう。圧力はありません。
- Subversionチェックアウトをハックして、UUIDを新しいUUIDに変更します。 UUIDは、あなたがチェックアウトした各自のディレクトリのすべての
.svn \ entries
ファイルにあります。 Subversion 1.7ベースのクライアントを使用している場合、すべてのベットはオフになっています。 UUIDが暗号化されている可能性があります。これはうまくいくかもしれませんが、変更をコミットしようとするとマスターリポジトリに損傷を与えるような破損したチェックアウトが作成される可能性があります。