2013-08-15 10 views
6

svn bookではmerge--reintegrateは「ソースURLのすべての変更をマージする作業コピーに追加します。 "ブランチをトランクにマージしようとすると「svn merge --reintegrate」とsvn mergeの違いは何ですか

トランクにブランチをマージしたいと思います。 Some placesは、マージするときにreintegrateに電話するのは「絶対に必要です」と言います。その直後にdelete the branchと書いてありますが、これは面倒です。 Other placesには再統合はまったく言及されていません。私はsvn 1.6.11を持っています。

私は今何をすべきか分かりません。

答えて

10

同期マージは、再統合マージとはまったく異なるものです。前者は、親ブランチで行われたすべての変更を、マージされていないターゲットブランチ(通常は機能ブランチ)にマージするために使用されます。後者は、(機能)ブランチを親ブランチにマージするために使用されます。基本的には、(機能)ブランチの一時クローンが作成され、親ブランチから一時ブランチへの同期マージが行われ、最後に親ブランチが一時ブランチに置き換えられることを意味します。つまり、一時ブランチには、(フィーチャ)ブランチと親ブランチに加えられたすべての変更が含まれます。

何らかの理由で、一部の開発者はその違いを理解していません。したがって、SVN開発者は、SVN 1.8でオプション--reintegrateを削除しました。このバージョンでは、の同期マージまたはの再統合マージを使用する必要があります。

古いバージョンを使用する場合は、には、--reintegrateというオプションを使用する必要があります。いくつかのことを念頭に置いておけば、再統合後も(フィーチャ)ブランチを使用できることに注意してください。 SVNの本はそれをうまく説明:

+0

"sync merge"は平凡な 'merge'だけです。つまり、' merge'では '--reintegrate'なしですか? –

+0

はい、_sync merge_がデフォルトです - '--reintegrate'、' -c'、 '-r'なし。 – nosid

2

アップグレードが1.8をsvnをすると、もうそれについてworrryはありません、それは自動的に何をすべきかを把握します。 svn 1.8 release notesから

:別のブランチからのすべての適格なリビジョンをマージマージ中に

、Subversionの1.8は、自動的にマージがブランチを再統合されているかどうかを決定します。したがって、ブランチの再統合には、正しい操作のために--reintegrateオプションが不要になりました。

+0

まだマージ(merge - reintegrate)後にブランチを削除する必要がありますか? –

+1

[この小さな手順](http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html#svn.branchmerge)に従うと、再統合後にブランチを削除する必要はありません。 advanced.reintegratetwice)。私はなぜSubversionが自動的にこれをしないのかわかりません。 –

関連する問題