4

このページに出くわしていなければ、svn:externals を知ることはできません。そこで、作業フォルダーをセットアップします。それで

mkdir lib/vendor
svn add --parents lib/vendor
svn ps svn:externals 'symfony http://svn.symfony-project.com/branches/1.4/' lib/vendor/
svn ci -m "add externals"
svn update

"svn update" は symfony フォルダー全体を登録し、かなり遅いです。私はそれが一度の痛みだと思った。ただし、「svn up」と入力するたびに、SVN は外部リポジトリをチェックします。「svn update」を十分に速くするには、 --ignore-externals を使用する必要があります。

svn:externals が非常に遅い場合、どのような利点があるのか​​ 疑問に思っています。symfony を自分のリポジトリにコピーしたほうが確実に高速なソリューションです。

4

3 に答える 3

6

SVN エクスターナルは、プロジェクトの編成にも大きく関係しています。外部は完全に異なる SVN リポジトリにすることができます。つまり、さまざまな種類のセキュリティ、保護、アクセス、コミット前フック、コミット後フックなどを設定できます。単一の SVN リポジトリ ( VisualSVNのようなものの助けなし) であり、単一の SVN リポジトリ内のさまざまなフォルダーに対してさまざまなバックアップまたはセキュリティ方法を試すことは非常に困難です (そしておそらく賢明ではありません)。エクスターナルを使用すると、いくつかの異なるリポジトリを単一のsvn up.

Subversion エクスターナルの使用例:

  1. 一般的な使用例は、外部にライブラリまたはその他の不変コードを含めることです。.dll がある場合は、それを SVN リポジトリに追加してコードベースの一部として扱うことができますが、.dll は読み取り専用として扱われるべきであり、そうではなかったという事実を隠蔽しました。あなたまたはあなたのチームによって開発されました。

  2. もう 1 つのユース ケース (あなたが発見した) は、ライブラリを削除リポジトリ (アクティブなオープン ソース プロジェクトによって管理されているものなど) に残すことです。この場合、外部の特定のバージョンをいつでも指すことができ、それを自分で保存することを心配する必要はありません。

  3. 最後に、エクスターナルはトランク、ブランチ、またはタグを取り込むことができます。つまり、それらを使用して、独自のモジュールのさまざまなタグ付きバージョンで構成されるプロジェクトをつなぎ合わせることができます。これは、Rational ClearCase やその他の大規模なバージョン管理システムのようなものをより厳密に模倣します。これを行うには、コードベースの各モジュールまたはコンポーネントの SVN リポジトリを維持し、各モード/コンポーネントのタグを作成してから、マスター リポジトリの externals プロパティを使用してタグを参照します。作業プロジェクトに。

于 2010-07-31T11:50:17.317 に答える
4

外部を使用する方法は、たとえば、すべての種類のライブラリとアプリケーションが共同開発されている内部プロジェクトに参加している場合など、一部のコードのヘッドリビジョンで作業したい人向けです。通常、外部のコードリビジョンはコードを壊す可能性があるため、正当な理由なしにこれを行うべきではありません。外部を修正する権利がない場合、外部での作業は少し面倒になります。

外部リポジトリの特定のリビジョンを独自のリポジトリのいわゆるベンダーブランチにフェッチするか、たとえばここで説明するように、外部定義にリビジョン引数スイッチを追加することができます。

http://thinkinging.com/2008/10/21/set-the-revision-of-your-svnexternals-or-else/

于 2010-07-31T10:01:53.573 に答える
2

svn:externalsメカニズムはアドバタイズされたとおりに動作しています。問題は、ローカルリポジトリであると私が想定している内部でパブリックSubversionリポジトリ(インターネット経由でアクセス)を使用していることです。その結果、内部リポジトリと外部参照リポジトリを更新する時間に大きな違いが見られます。

リポジトリにコピーすることは確かに実行可能な解決策です。これを行う方法は、 Subversionの本に明示的に記載されています。

于 2010-07-31T10:02:39.130 に答える