1

私のプロジェクトの 1 つは、新しいリポジトリ (svn://newserver/ としましょう) にマージされる予定の Subversion リポジトリ (svn://oldserver/ と呼びましょう) にあります。

このプロジェクトは、いくつかのライブラリのソース コードをリンクするために svn:externals を集中的に使用します。すべての外部にはリビジョン番号が含まれているため、現在、ライブラリを含む古いバージョンのコードをチェックアウトできます。

「oldserver」はダンプされ、「newserver」にインポートされます。その後、外部は新しいサーバーを指すように変更されますが、これは HEAD リビジョンに対してのみ機能します。古いリビジョンの 2 つの問題:

  • インポートはすべてのリビジョンをシフトしますが、svn:externals の対応する番号はシフトしません。
  • インポートでは、新しいリポジトリ名を使用する代わりに、元のリポジトリ名 (svn://oldserver/) も保持されます。

svn://oldserver/ という名前で実行でき、単に svn://newserver からデータを取得するが、リビジョン番号を付け直した後、Subversion 用のゲートウェイ サーバーのようなものがあるかどうか疑問に思っています。誰かそんなこと知ってる?

代替案 1: 「oldserver」を「newserver」にインポートする前に、svndumptoolなどのツールを使用して外部の番号を付け直します。でも、間違えると後から修正できません。そのため、このソリューションを拒否しました。

代替案 2: 古いサーバーを実行させ、単純に読み取り専用として構成します。サーバーのハードディスク上でより多くの場所を占めるだけですが、より良い解決策が見つからない場合は、この解決策を使用するかもしれません.

4

1 に答える 1

2

最も安全なアプローチは、ある種のスクリプトを実行して、各外部のターゲットとなる特定のバージョンの古いリポジトリにタグを作成し、実際の外部定義をそのタグのHEADリビジョンにポイントすることです。

-r1234 svn://oldserver/libraries/lib1 lib1

次のようなタグを作成します

svn cp -r 1234 svn://oldserver/libraries/lib1 svn://oldserver/libraries/tags/lib1-r1234

外部を変更します

svn://oldserver/libraries/tags/lib1-r1234 lib1

これらのタグは安定し、ダンプとインポートの後に新しいリポジトリ内の対応するリビジョンを指します。これらのタグをからに切り替えることができoldserverますnewserver

于 2012-11-08T15:44:44.053 に答える