私のSVNをAssemblaに、UUIDの指定されたローカルから移動する

私はこの投稿を読んで、 - force-uuid コード>。

しかし、私のプログラマーは、Assemblaと既存のTortoiseSVN形式が同じでない場合(Assemblaに移動して、新鮮/きれいにしてください)のように私のサーバー上で新しくチェックアウトすることもできると提案しました。

私は最初はSVNを自分で設定していなかったし、サーバ/ SVN管理に慣れていないので、私はそれを完全に快適にしているわけではない。

UUIDを強制的に一致させる可能性のある損傷や危険はありますか?

どんな方向にも大変感謝しています。

0

1 答え

サーバー から クライアント を分離しましょう

私は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が暗号化されている可能性があります。これはうまくいくかもしれませんが、変更をコミットしようとするとマスターリポジトリに損傷を与えるような破損したチェックアウトが作成される可能性があります。
1
追加された
@ user900456 - 私は混乱しています。新しいリポジトリを作成しましたか?なぜ開発者は古いものを使用していますか? svnadmin dump を使ってトランザクションを古いリポジトリからダンプし、 svnadmin load で新しいリポジトリに移動することができます。新しいリポジトリを使用していて、デベロッパーが古いものにコミットしたものを移動する必要がある場合は、2つの場所で2つのチェックアウトを行います。新しいものから1つ、古いものから1つ。次に、古いものから新しいものに手動でファイルをコピーし、新しいものにコミットします。なぜデベロッパーは古いレポを使用していますか?
追加された 著者 David W.,
ローカルと言うときは、 サーバー または クライアント インスタンス?あなたはライブサーバー Assembla について話します。 ライブサーバーはSubversionサーバーか、ソフトウェアを展開するサーバーですか?私のAssmeblaは、バージョン管理リポジトリが保存されている場所です。私たちは同じことを話していますか?私は用語が混ざっているかもしれないと信じています。
追加された 著者 David W.,
@ryan - 問題は、PCの作業コピーに問題があることです。解決策は、新しいクリーンチェックアウトを行い、古いチェックアウトエリアから新しいチェックアウトエリアにファイルをコピーすることです( .svn または _svn フォルダをコピーしないように注意してください) )。今度は、新しいチェックアウト領域から変更をコミットし、古いチェックアウト領域を削除します。あなたのPCで - force-uuid を使うことはできません。
追加された 著者 David W.,
非常に徹底的に、David、ありがとう!私のプロセスを次のステップに進めるために、TortoiseSVNを使って私のPC上で新鮮なコピーをローカルにチェックアウトしました。プログラマーが最新のバージョンをassemblaにアップロードしました。私はライブサーバーでSVNupを実行するように設定されています。私がこれを行う前に、svn switch --relocate [old location] [assembla location]を実行する必要があります。私は正しいid/passwordをassemblaに入力して、すべて正常に動作するようになります。それから、間違ったUUIDメッセージで私に当たってしまいます。遅い(過度に慎重な)ためのappologies、これは私が実行するポイントです - 力 - uuid、正しい?
追加された 著者 ryan,
私たちはすべて新しいリポジトリを使用しています。 Assemblaに移動する前に、新しいチェックアウトを行い、最後のビルドをAssemblaサーバーに移動しました。問題は(私は信じていますが間違っている可能性があります)、ライブサーバー上にあります。 SVN UP(Assemblaとライブサーバーの間)を実行すると、エラーが表示されます。遅い応答に申し訳ありません(私は町から出てきました)。お待ち頂きまして、ありがとうございます。
追加された 著者 ryan,
新しいリポジトリは、ライブサーバー上で作成されたものではなく、ローカルおよびアセンブラでのみ作成されています。私はこれを避けることを望んでいた。
追加された 著者 ryan,
私はこれをもっと早く明らかにすべきであったので、デイヴィッドに同意する。 3つの場所があります。 太字ローカルで太字 =私のPC(またはプログラマのPCは遠隔地で働いています)、太字太字太字は、リポジトリが保存され、太字ライブサーバー太字は米国内のサーバーです。ローカルでもAssemblaにも最新のリビジョンに最新のものがあり、新しくチェックアウトしてビルドします。ライブサーバーは、問題のポイント(UUIDの問題)と、SSH経由でログインしてSVN UPを実行する場所です。
追加された 著者 ryan,
アセンブラに移動して以来、私はライブサーバ上で何かを触れていません。 1.私は道を歩いているので、ホテルの接続が弱いです。2. UUIDメッセージのために、私はよく分からないことをしたくないので、私が気づいていない問題が発生する可能性があります。
追加された 著者 ryan,
いいえ、私のPCのコピーは正常に動作しています。それは私にUUIDの警告を与えているライブサーバーです。ローカルとアセンブラの両方が新しい/クリーンなチェックアウトであり、同期化されています。アセンブラからライブサーバーに最新バージョンをコミットするだけですが、ライブバージョンを除くすべてが新鮮なので、ライブバージョンは警告を発行します。
追加された 著者 ryan,