14

SVNとリポジトリのチェックアウトに関して(うまくいけば小さな)質問がありました。基本的に、何をいつチェックアウトするかに関して、矛盾するチュートリアルと提案があります。一部の人は言うでしょう:

svn co http://my.repos.com/project my_project

…他の人が言う間:

svn co http://my.repos.com/project/trunk my_project

プロジェクト全体に対して、トランクを直接取得したいのはいつですか?過去にどちらかで問題が発生したことはありませんが、一方が他方よりも好ましいシナリオがあるかどうかはわかりません。

一番。

4

4 に答える 4

10

通常、Subversionリポジトリには3つのメインディレクトリがあります。

  1. タグ
  2. トランク

トランクは、コードの最新のブランチ用です。

ブランチは通常、トランクにまだ必要のない特定の機能を開発するために作成されます。

タグはトランクのセーブポイントのようなものです。

プロジェクトのルートでチェックアウトを行うと、すべてのブランチ、すべてのタグ、およびトランクが取得されます。これにより、大量のデータが発生する可能性があります。

たとえば、各コードリリースにタグが付けられている場合、過去のすべてのリリースからソースコードを取得できます。

これがお役に立てば幸いです

ジェローム・ワーグナー

于 2010-06-29T22:42:45.800 に答える
9

これについて注意すべき点が他にもいくつかあります。

  1. ツリー(通常はtagsツリー)には、特定の時点でのコードの仮想的に不変のスナップショットが含まれています。ほとんどのデプロイメントはタグに基づいているため、これは変更したいものではありません
  2. ほとんどのSubversionクライアントは、tagsツリーにコピーするだけでなく、ツリーで変更をコミットしようとすると文句を言います。
  3. ほとんどの場合、は;trunkの下のディレクトリの特殊なケースです。branches唯一の重要な違いは、主要な開発パスが含まれていると予想されることです。

他の人が指摘しているように、ほとんどの場合、トランクと1つまたは2つのブランチでしか作業しておらず、プロジェクト全体がかなりの量のディスク領域を消費する可能性があるため、通常、プロジェクト全体をチェックアウトする正当な理由はありません。ほとんどの場合、メインの開発「ブランチ」が必要な唯一のものです。

これが実際の例です。私たちのチームは、トランクに対してすべてのコード変更を行います。アルファ(プレコンプリート)リリースが必要な場合は、トランクにタグを付けるだけです。特定のリリースで「コード完了」を押すと、コードフリーズブランチが作成され、バージョンの変更がすべて行われます。ベータ版、RC版、GA版は、そのブランチからタグ付けされています。GAリリースにパッチを適用する必要がある場合、パッチはブランチに対して実行され、トランクにマージされます。そうすれば、特定のパッチを適用する必要がある場合に、テストおよび承認されたGAに新しいコードがリークすることを心配する必要がありません。また、コードがフリーズするとすぐに、ソフトウェアの次のバージョンでの作業を開始できます。

また、トランクの帯域外にある「サイドプロジェクト」がある場合は、そのブランチを作成し、準備ができたらマージできます。

バグごとにブランチを作成するのが好きなチームもあれば、トランクで直接作業するチームもあります(私のように)。あなたのチームがブランチごとのバグを実行する場合、私はプロジェクト全体をチェックすることは決してありません。とりわけ、私は気にしないコードをたくさん目にするでしょう。

また、リポジトリ管理についてのポイントは@humble_coder、ブランチ/タグ管理に関しては、ほとんどのSubversionツールが非常に使いやすいことです。たとえば、TortoiseSVNにはリポジトリブラウザがあり、コピー(ブランチとタグの作成)を非常に簡単に行うことができます。また、svnコマンドラインツールを使用して、アトミック操作と同じことを実行できます(実際にはスクリプトがあります)。アルファタグ、コードフリーズブランチ、またはフリーズ後のリリースタグのいずれかを作成します)。

お役に立てれば!

于 2010-06-30T00:42:03.530 に答える
3

リポジトリをどのようにレイアウトするかによって異なりますが、通常は次のような構造になります。

/trunk
/tags
/branches

tagsとの両方の中branchesに、プロジェクトのコピーがいくつかある場合があります(リポジトリの使用方法によっても異なります)。

リポジトリがこのようにレイアウトされていて、チェックアウト/すると、コードのコピー(タグとブランチ)がいくつか作成され、タッチする必要がない場合があります(タグなど)。

代わりにチェックアウトする場合/trunkは、現在作業しているバージョンのみをチェックアウトします。これは通常必要なバージョンです。

于 2010-06-29T22:39:45.553 に答える
3

プロジェクト全体をチェックアウトすることは決してありません。通常、私は一度に1つのブランチ、場合によっては2つ、場合によっては3つのブランチにのみ関心があります。私はいつもトランクをチェックアウトして更新しています。リリースされたタグの動作をチェックする必要がある場合(おそらくバグ調査のため)、チェックアウトし、調査して削除します。通常、下に保存されbranchesているブランチの注意期間ははるかに短くなります。つまり、ブランチは短期間熱狂的に作成および使用され、その後は二度と触れられません。

于 2010-06-30T00:16:48.143 に答える