3

Visual SourceSafe コード リポジトリを Subversion に移行していますが、問題が発生しています。

以下は、現在のソース コード ツリー (VSS 内) の簡略化されたレイアウトです。

project_root\
  |-libs\
  |-tools\
  |-arch_1\
  |   |-include
  |   |-source
  |-arch_2\
      |-include
      |-source

私の問題は、2 つのarch_フォルダーにあります。各arch_フォルダーは異なるハードウェア アーキテクチャ用に構築されますが、2 つのフォルダーの内容は実質的に同じです。のファイルは、少数の例外を除いて、arch_2単に のファイルへの VSS リンクです。arch_1通常、作業はarch_1フォルダーにチェックインおよびチェックアウトされ、VSS リンクにより、ここでチェックインされたコードがarch_2フォルダー内でも更新されます。

Subversion に移行しますが、VSS のリンクのように動作するものはありますか? つまり、2 つのファイルを別々のフォルダーに魔法のように関連付けて、常に同期されるようにする方法はありますか (一方を変更すると、もう一方も影響を受けます)。

注:ここでの正解は、ビルド システムを修正することです。このプロジェクトのビルド システムは、約 10 年前にまとめられました。当時は、コンパイラ/ビルド システムが、2 つの異なるアーキテクチャのソース コードでいっぱいの同じフォルダーをコンパイルするほどインテリジェントではありませんでした。および更新されたコンパイラのおかげでmake、ビルド システムを書き直して、2 つの並列ソース フォルダーへの依存関係を排除できます。ただし、これには現時点では時間がかかります (VSS サーバーへのライセンスが失われ、かなり短い通知で移行を余儀なくされています)。この問題に対する Subversion の解決策を見つけたいと思っています。なぜなら、現時点では、ビルド システムを書き直すよりも、移行をスムーズに実行することに時間を費やすほうがはるかによいからです (これは、私のやることリストの次です!)。

ご協力ありがとうございました!

明確化:以前に外部定義の使用を調べたことがありますが、ディレクトリ レベルでしか使用できないことがわかります。一部のディレクトリには、共有/リンクされたファイルとリンクされていないアーキテクチャ固有のファイルが混在しているため、ファイルレベルで動作するものを探しています。

4

4 に答える 4

2

私は以前に外部定義の使用を検討しましたが、私が知る限り、それらはディレクトリレベルでのみ使用できます。

もう一度見てください。Subversion 1.6はファイルレベルの外部をサポートします: http ://subversion.apache.org/docs/release-notes/1.6.html#file-externals

于 2010-03-08T21:45:49.893 に答える
2

arch_1 のコンテンツを arch_2 の SVN External として追加できます

更新

ファイル外部は SVN 1.6 以降でサポートされています

外部ファイル

Subversion 1.6 では、フォルダーと同じ構文を使用して、単一ファイルの外部ファイルを作業コピーに追加できます。ただし、いくつかの制限があります。

外部ファイルへのパスは、既存のバージョン管理されたフォルダーにファイルを配置する必要があります。一般に、svn:externals が設定されているフォルダーにファイルを直接配置するのが最も理にかなっていますが、必要に応じて、バージョン管理されたサブフォルダーに配置することもできます。対照的に、ディレクトリ外部は、必要に応じてバージョン管理されていない中間フォルダを自動的に作成します。

外部ファイルの URL は、外部ファイルが挿入される URL と同じリポジトリにある必要があります。リポジトリ間のファイル外部はサポートされていません。

参照: SVN 1.6 リリース ノート

于 2010-03-08T21:32:56.007 に答える
0

はい、少なくともディレクトリに対してこれを行う方法があります。この機能は外部と呼ばれますhttp://svnbook.red-bean.com/en/1.0/ch07s03.html Visual Studio を使用してからしばらく経ちましたが、10 年前にさかのぼっても VSS リンクは SVN 外部よりもうまく機能します. ただし、SVN 外部は機能します。通常は、プロジェクトをライブラリ (ベース ディレクトリ内の共通コード) に整理するのが最善です。その後、別のプロジェクト サブディレクトリの外部に 1 つのプロジェクトを配置するのではなく、プロジェクトにライブラリの外部を使用させることができます。最終的に SVN には、ファイルとディレクトリの外部ファイルがありますhttp://subversion.tigris.org/issues/show_bug.cgi?id=937

于 2010-03-08T21:33:24.733 に答える
0

SVN でこれに最も近いのは、Externalsを使用することです。

外部定義により、次のものを使用できます。

リポジトリ内の異なる場所から、またはおそらく完全に異なるリポジトリから、異なるサブディレクトリを取得します。

于 2010-03-08T21:33:55.187 に答える