33

学校のプロジェクトと宿題を保存し、学校と自宅の間で簡単に転送できるようにするために、 Google Code SVN リポジトリを作成しました。

作成されるデフォルトのディレクトリは次のとおりです。

https://simucal-projects.googlecode.com/svn/trunk/
https://simucal-projects.googlecode.com/svn/tags/
https://simucal-projects.googlecode.com/svn/branches/

複数のプロジェクトにリポジトリを使用したことはありませんが、読んだ後: One svn repository or many? 私はランダムな学校のプロジェクトすべてに対して 1 つのリポジトリを用意することにしました。

上記のフォルダー構造を複製する必要がありますが、プロジェクトごとですか?

https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/ projectA/branches/

https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/ projectB/branches/

これは、マルチ プロジェクト イン ワン レポの人々が行うことですか?

4

6 に答える 6

48

これには 2 つのオプションがあります。あなたがすでに言及したもので、それは各プロジェクトのトランクを持つことです(オプション1):

https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/

https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/

オプション 2 は、各プロジェクトがトランクの下のサブフォルダーである 1 つのトランクを持つことです。

https://simucal-projects.googlecode.com/svn/trunk/projectA/
https://simucal-projects.googlecode.com/svn/tags/projectA/
https://simucal-projects.googlecode.com/svn/branches/projectA/

https://simucal-projects.googlecode.com/svn/trunk/projectB/
https://simucal-projects.googlecode.com/svn/tags/projectB/
https://simucal-projects.googlecode.com/svn/branches/projectB/

オプション 1 の利点は、各プロジェクトを個別に分岐およびタグ付けできることです。これは、各プロジェクトを個別に展開する必要がある場合に適しています。

すべてのプロジェクトが一緒にデプロイされる場合は、オプション 2 が望ましいです。これは、デプロイ時に一度だけリポジトリにタグを付ける必要があるためです。

学校のプロジェクトに Subversion を使用しているので、作品にタグを付ける必要があるかどうかを自問する必要があります。また、ブランチを作成する必要があるかどうかを自問することもできます (少し実験したい場合は、ブランチを作成する必要があるでしょう)。また、すべての作業を 1 つにまとめて分岐することに満足しているかどうか、各プロジェクトを個別に分岐する柔軟性を好むかどうかについても自問する必要があります。

私が常に従う経験則は、一緒に展開するものは何でも一緒にトランクすることです。

(ちなみに、同じリポジトリに多くのトランクを配置できます。これは、複数のリポジトリに 1 つのトランクを配置するのとほぼ同じですが、各リポジトリが独自のリビジョン カウンターを維持し、リポジトリ間でマージすることはできません。)

于 2009-02-21T20:47:32.327 に答える
9

これは、自宅のソース管理に使用するものです。

プライマリ リポジトリが 1 つしかない場合。

Repository/Project1/Trunk
Repository/Project1/Tags
Repository/Project1/Branches

リポジトリ/プロジェクト 2/トランク
リポジトリ/プロジェクト 2/タグ
リポジトリ/プロジェクト 2/ブランチ

私はこの構造が気に入っています。プロジェクトを参照して整合性を維持するのは非常に簡単です。

于 2009-02-21T20:41:35.557 に答える
6

実際の例:ApacheProjectsリポジトリ

于 2009-02-21T21:25:26.043 に答える
2

リポジトリを 1 つだけ持つことを主張し (私自身は DON'T キャンプに参加しています)、ブランチを作成する場合は、提案が適切であると思います。しかし、繰り返しになりますが、SVN リポジトリはプロジェクトに等しいと考えています。

于 2009-02-21T20:49:16.270 に答える
2

この質問に対する明確な答えはありません。これは、プロジェクトに最も適したものに依存するためです。

  1. プロジェクトごとに大規模な開発が行われていて、すべてを分離する必要がある場合は、 /projectA/trunk レイアウトを使用します。これは、それらの間にあまり接続がないためです (スタンドアロンのコンポーネント/プロジェクト)。ただし、プロジェクトごとに 1 つの SVN リポジトリを使用することもできます。svn co http://..../svn/ を使用してすべてのプロジェクトをチェックアウトすることはできないことに注意してください。これは、トランクだけでなく、すべてのプロジェクトからすべてのタグとブランチも取得するためです。
  2. /trunk/projectA は、プロジェクト/コンポーネントが密接に関連しており、タグ付けして同じリビジョンから分岐する必要がある場合 (メイン プロジェクトに非常に密接に属するライブラリのように) は確実に優れています。必要に応じて、svn co http://.../svn/trunk/ を使用して、最新のトランク リビジョンのすべてのプロジェクトを取得することもできます。

保守性の観点から、私はほとんどの場合、2 番目の方法を好みます。ただし、プロジェクトが大きくなり、長期化する可能性がある場合は、プロジェクトごとに別々のリポジトリを使用することをお勧めします。

それに加えて、Google Code サービスの目的は OSS をサポートすることなので、宿題に本当に Google Code サービスが必要かどうかを確認してください。SVN はいつでもローカルで、または SSH 経由でも使用できるため、レポジトリを USB スティックまたはリモートでアクセスできるコンピューターに置くこともできます。そのためのホスティングは本当に必要ありません。プライバシーの問題もあるかもしれません。

于 2009-02-21T20:43:41.430 に答える