質問: 私のSVNをAssemblaに、UUIDの指定されたローカルから移動する 私はこの投稿を読んで、 `- force-uuid` コード>。 しかし、私のプログラマーは、Assemblaと既存のTortoiseSVN形式が同じでない場合(Assemblaに移動して、新鮮/きれいにしてください)のように私のサーバー上で新しくチェックアウトすることもできると提案しました。 私は最初はSVNを自分で設定していなかったし、サーバ/ SVN管理に慣れていないので、私はそれを完全に快適にしているわけではない。 UUIDを強制的に一致させる可能性のある損傷や危険はありますか? どんな方向にも大変感謝しています。
回答: ***サーバー*** から ***クライアント*** を分離しましょう 私は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を古いものと同じにすることができます。 これが行われたことに注意してください: 1. サーバー上 2. データをリポジトリにインポートするとき 問題の ***サーバー側*** なので、これはクライアントソフトウェアによって行われません。 ここでは、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が暗号化されている可能性があります。これはうまくいくかもしれませんが、変更をコミットしようとするとマスターリポジトリに損傷を与えるような破損したチェックアウトが作成される可能性があります。