2009-07-22 23 views
2

私はブランチとマージの基本的な概念を理解しています。私が見つけたすべての説明では、トランク全体を分岐してブランチプロジェクトを作成し、それに取り組み、それを元に戻すことについて説明します。プロジェクトのサブセットを分岐することは可能ですか?EclipseでのSVN分岐(概念的)

私がしたいことを一番良く説明できる例があると思います。 file0からfile10までの10個のファイルを持つアプリケーションがあるとします。すべてのファイルは相互依存しており、他のすべてのファイルをビルドに含める必要があるすべてのファイルをテストすることができます。私はfile0で作業したいが、file1からfile10まで変更する必要はありません。 file0をブランチすると、file0にコミットされた変更はmyrepos/branches/a-branch/file0のように更新されますが、作業コピー内の他のファイルは単にトランクからのものになりますか?

私がこれをやりたい理由は、私が数万のファイルを持つ巨大なJ2EEアプリケーションに取り組んでいて、全体を分岐するのは本当に時間がかかるようです。また、私はsubclipse(と私はこれについて間違っている可能性があります)がEclipseを使用していますが、それは私がブランチを指すように新しいEclipseプロジェクトを設定する必要がありますEclipseでプロジェクトを分岐するように思えます。残念ながら、この特定のプロジェクトをSVNからEclipseにインポートするには、アプリケーションのサイズのために数時間かかります。私がこれほど多くの時間を費やすのは現実的ではありません。

私は考え方が間違っていると思います。おそらく、プロジェクト全体を分岐させるのに、新しい作業コピーをまったく必要としないでしょうか?

この問題については光栄に感謝します。

答えて

2

を全体の分岐(さえ)(クォークが述べたように、大規模なプロジェクトを分岐の一つの問題は、あなたが複数のブランチ/並列にトランクをチェックアウトした場合、これはローカルディスクスペースの多くを取るかもしれない、ということです。) Subversionの非常に大きなツリーはvery cheap operationです。これは遅延(O(1)時間)ファイルのコピーを行います。

変更したファイルを1つだけ変更する必要はありません。 svn switchを使用すると、作業コピーの1つのファイルまたは1つのディレクトリを、ブランチ上のファイルのチェックアウトされたバージョンに切り替えることができます。

+0

それはあなたのソリューションquadeliriusです。プロジェクト全体を分岐させ(他のすべての回答者が指摘しているように高速)、svn switchを使用して気にするファイルに変更します。余分な作業コピースペースはありません。あなたがトランクに戻ってきたいときに、それらを元に戻すことを忘れないでください。 – quark

+0

ええ、私は今これを日食で試しています、そして、それは私が心配していた効果を正確に持っています。分岐はすぐに起こったが、eclipseがプロジェクト全体を再構築する必要があると判断したため、svnスイッチはおそらく5〜6分間実行されていた。 – jcb

+0

日食の25分はまだ応答していません。 – jcb

1

svnブランチングは遅延コピーメカニズムに基づいているため、すべてのプロジェクトを安全に分岐することができます。時間がかかりません。

How do I branch an individual file in SVN?」という質問に記載されているように、サブセットを分岐することはできますが、svn:merginfo properties mechanismでは危険であると考えられます。プロジェクトのルートからプロパティが設定されている方が効果的です。

+0

*サーバー*で時間がかかりません。質問者が避けようとしているように見える余分な作業コピーが必要です。 – quark

+0

@quark、ええ、私はこのプロジェクトを私が枝分かれしたいときはいつでも再インポートする必要はないが、それを働かせる唯一の方法のように聞こえる。 – jcb

2

Subversionでは、ブランチを作成するだけでディレクトリ階層のコピーを作成しています。したがって、サブセットを分岐することはできますが、そのサブセットをディレクトリの階層で定義できる場合のみです。

file0にコミットの変更が myrepos /支店/支店/ file0しかし のようなものを更新しますので、私の作業コピー 内の他のすべてのファイルは、単純にトランクからなりI 分岐file0できますか?

この質問に答えるには:いいえ、1つのファイルを分岐できません。しかし、あなたが代わりにしたいと思うものは、支店を作り、そこでfile0で働くことです。 trunkファイルに変更を加えると、がブランチに統合され、そこでfile0に取り組んでいます。

trunkの最新情報は、file0のトランクから独立してテストできるようになります。次に、svn switchを使用して、 "ファイルレンズ"をトランクとブランチの間で移動できます(しかし、Eclipseはこのような嫌悪感について不平を言うかもしれません)。

1

SVNでの分岐はO(1)操作です。また、SVNは内部的に遅延コピーを採用しているため、変更するものに対してのみスペースペナルティを支払うことになります。

もしわからないのであれば、プロジェクト全体を分岐させないでください。

+0

再び、作業コピーについて彼の言うことに注意してください。作業コピーのサイズが問題でない場合、これは良いアドバイスです。しかし、非常に大規模な作業コピーでは、これが問題になる可能性があります。 – quark

+0

これは、それらを並行してチェックする場合にのみ問題になります。彼はブランチ間に_switching_について書きました。しかし、私は作業コピーのサイズに関するヒントが必要であることに同意します。 – sbi