Eclipse での SVN ブランチ (概念的)
質問
ブランチとマージの基本的な概念を理解しました。私が見つけた説明はすべて、トランク全体を分岐してブランチプロジェクトを作成し、それに取り組んでからそれをマージして戻すことについて述べています。プロジェクトのサブセットを分岐することはできますか?
私がやりたいことを最もよく説明するには例が役立つと思います。file0 から file10 までの 10 個のファイルを持つアプリケーションがあるとします。すべてのファイルは相互依存しているため、1 つのファイルをテストできるようにするには、他のすべてのファイルをビルドに含める必要があります。file0 で作業したいのですが、file1 から file10 までを変更する必要はありません。file0 にコミットされた変更により myrepos/branches/a-branch/file0 のようなものが更新されますが、作業コピー内の他のすべてのファイルは単にトランクから取得されるように、file0 をブランチすることはできますか?
これを行う理由は、数万のファイルを含む巨大な j2ee アプリケーションに取り組んでおり、全体を分岐させると非常に長い時間がかかりそうなためです。また、私はEclipseをsubclipseとともに使用しています(これについては間違っている可能性があります)が、Eclipseでプロジェクトをブランチする場合、ブランチを指すように新しいEclipseプロジェクトをセットアップする必要があるようです。残念ながら、この特定のプロジェクトを SVN から Eclipse にインポートするには、アプリケーションのサイズが原因で数時間かかります。これほど多くの時間を費やすのは私にとって現実的ではありません。
概念を間違っている可能性があると思います。おそらく、プロジェクト全体を分岐する場合、新しい作業コピーはまったく必要ありません。
この問題について光を当てていただきありがとうございます。
他のヒント
Subversionでは、ブランチを作ることは、単純にディレクトリの階層のコピーを作っています。そのため、あなたはサブセットを分岐することができますが、場合にのみ、そのサブセットは、ディレクトリの階層によって定義することができます。
私ができます にコミットの変更ので、分岐file0 file0は次のように更新します myrepos /支店/支店/ file0が、 私の作業コピー内の他のすべてのファイル 単純にトランクからでしょうか?
この質問に答えるために:いいえ、あなたは1つのファイルを分岐することができません。しかし、私はあなたの代わりに何をしたいと思うものを枝を作り、そこにfile0
上で動作するようです。あなたがファイルをtrunk
を変更すると、あなたがfile0
で作業している場合は、あなたは、単に にあなたのブランチにマージします。
このように、あなたは常に、あなたが独立してトランクのtrunk
の変更をテストしてみましょうれるのをfile0
から最新の情報を持っています。を次に、あなたの間であなたの「ファイルレンズ」を移動するためにsvn switch
を使用することができます幹と枝(しかし、注意してください、Eclipseは、このようなペテン文句を言う場合があります)。
svn 分岐は遅延コピー メカニズムに基づいているため、すべてのプロジェクトを安全に分岐できます。それは長くはかからないでしょう。
質問で述べたように、「SVN で個々のファイルを分岐するにはどうすればよいですか?" のようにサブセットを分岐することもできますが、これは危険だと思います。 svn:mergeinfo プロパティのメカニズム:プロパティがプロジェクトのルートから設定されると、より適切に機能します。
SVNに分岐はO(1)操作です。 SVNは、内部で怠惰なコピーを採用しても、あなただけが変更何のためのスペースのペナルティを支払います。
あなたがわからないのであれば、なぜ先に行くと、プロジェクト全体を分岐?
(クォークが述べたように、大規模なプロジェクトを分岐の一つの問題は、あなたが並列に/トランク複数のブランチをチェックアウトすると、これはローカルディスクスペースの多くを取るかもしれない、ということである。)