SVNリポジトリの完全なプロジェクトをいつトランクvsをチェックしますか?
-
01-10-2019 - |
質問
SVNに関する(できれば小さな)質問を受け取り、レポをチェックしました。基本的に、私は矛盾するチュートリアルと何をチェックアウトするべきかについての提案を見ています。いくつかは言うでしょう:
SVN co http://my.repos.com/project 私のプロジェクト
…他の人が言う間:
SVN co http://my.repos.com/project/trunk 私のプロジェクト
プロジェクト全体とトランクを直接つかみたいのはいつですか?過去には、私も問題を抱えたことはありませんでしたが、一方が他方よりも好ましいシナリオがあるかどうかはわかりません。
一番。
解決
これについて注意すべき他のいくつかのポイントがあります。
-
tags
ツリー(および通常はツリーになります)には、特定の時点でコードの仮説的に不変のスナップショットが含まれています。ほとんどの展開はタグに基づいているので、これはあなたが変更したいものではありません - ほとんどのSubversionクライアントは、あなたが変更を犯そうとすると不満を言います
tags
木、単にコピーする代わりに - ほとんどの目的のために、
trunk
ディレクトリの特別なケースですbranches
;唯一の重要な違いは、メイン開発パスを含めることが期待されることです
ほとんどの場合、トランクと1つまたは2つのブランチでのみ作業しているため、他の人が指摘したように、プロジェクト全体をチェックする正当な理由はありません。プロジェクト全体はかなりの量のディスクスペースを食べることができます。主な開発「ブランチ」は、ほとんどの場合、必要なのは唯一のものです。
これが実際の例です。私たちのチームは、トランクに対してすべてのコード変更を行います。アルファ(完全に完全な)リリースが必要な場合、トランクにタグを付けるだけです。特定のリリースの「コードComplete」を押したら、コードフリーズブランチを作成します。ここでは、すべてのバージョンの変更を行います。ベータ版、RC、およびGAリリースは、そのブランチからタグ付けされています。 GAリリースにパッチを当てる必要がある場合、パッチはブランチに対して行われ、トランクとマージされます。そうすれば、特定のパッチを適用する必要がある場合、テストされたGAに漏れている新しいコードを心配する必要はありません。また、コードが凍結されるとすぐに、ソフトウェアの次のバージョンの作業を開始することもできます。
また、トランクの帯域外の「サイドプロジェクト」がある場合、そのためのブランチを作成して、準備ができたらマージすることができます。
一部のチームは、すべてのバグのブランチを作成したいと思っており、一部のチームはトランク(私のような)で直接作業します。あなたのチームがブランチあたりのバグを行う場合、私はプロジェクト全体をチェックアウトすることはありません。とりわけ、私は気にしない多くのコードを見ます。
また、述べたように、リポジトリ管理についてのポイント @humble_coder
- ほとんどの転覆ツールは、ブランチ/タグ管理に関しては非常に使いやすいです。たとえば、TortoiseVNにはリポジトリブラウザがあり、その周りに物事をコピーできる(ブランチとタグを作成する)非常に簡単にできます。また、SVNコマンドラインツールも使用してアトミック操作と同じことを行うことができます(実際にスクリプトがありますこれにより、アルファタグ、コードフリーズブランチ、またはフリーズ後のリリースタグのいずれかが作成されます。
お役に立てれば!
他のヒント
通常、Subversionリポジトリには3つのメインディレクトリがあります。
- 枝
- タグ
- トランク
トランクは、コードの最新のブランチ向けです。
枝は通常、トランクにまだ望まない特定の機能を開発するために作成されます。
タグは、トランクのセーブポイントのようなものです。
プロジェクトのルートでチェックアウトを行うと、すべてのブランチ、すべてのタグ、トランクが入手できます。これにより、膨大な量のデータが発生する可能性があります。
たとえば、各コードのリリースにタグ付けされている場合、過去のすべてのリリースからソースコードが取得されます!
これがあなたに役立つことを願っています
ジェロームワーグナー
リポジトリをどのようにレイアウトするかに依存しますが、通常、この構造があります。
/trunk
/tags
/branches
両方の内側 tags
と branches
, 、プロジェクトのいくつかのコピーがある場合があります(リポジトリの使用方法に依存します)。
リポジトリがこのようにレイアウトされている場合、チェックアウト /
, 、最終的には、コードのコピー(タグとブランチ)が表示され、触れてはいけない場合があります(たとえばタグ)。
チェックアウトする場合 /trunk
代わりに、現在取り組んでいるバージョンのみをチェックアウトします。これは通常のものです。
プロジェクト全体をチェックアウトすることはありません。通常、私は一度に1つのブランチにしか興味がありません。私はいつもトランクをチェックアウトして更新しています。リリースされたタグの操作を確認する必要がある場合(多分バグ調査用)、それをチェックし、調査し、削除します。下に保管されている枝 branches
通常、注意力の範囲がはるかに短くなります。つまり、それらは作成され、短期間は熱狂的に使用され、二度と触れないようにします。