ブランチをトランクにマージ


119

TortoiseSVNを使用して、ブランチで行った変更を行い、トランクにマージする必要があります。

私はこのプロジェクトの唯一の開発者なので、トランクは変更されていません。最終的に私のチームがSVNを使用できるように、SVNを学習しています。

基本的には、トランクをブランチのように見せたいです。

SVN以前の世界では、ブランチフォルダー内のファイルをコピーし、トランクフォルダー内のファイルを削除してから、ブランチをトランクにコピーします。

TortoiseSVNのでは、私が試したReintegrate a branchMerge a range of revisionsMerge two different trees。実際にトランクを変更するものは何もないようです。また、幹の上に分岐してみました。これにより、トランクがすでに存在しているというエラーが表示されます。

回答:


157

あなたの場合:

  1. 作業コピーをトランクに切り替えます(SVNスイッチ)
  2. ブランチを作業コピーにマージします(SVNマージ)
  3. すべてがまだコンパイルされて機能していることを確認します
  4. 作業コピー(トランク)をコミットする
  5. 枝を殺すことを検討してください

ではチーム環境私はあなたが最初にあなたのブランチのトランクから最新の変更をマージすることを示唆している、(すでに変更をテストしてみたので、些細なことだろう)、すべてのコンパイルと作品は、その後、上記の手順を実行していることを確認してください。


更新

ステップ5で、ブランチを殺すことについて述べます。これは、機能からのブランチがトランクに入ると、それをトランクの一部と見なす必要があるためです。その場合は、ブランチを強制終了して、誰も作業を続けないようにする必要があります。その機能に大きな変更が必要な場合は、そのための新しいブランチを作成する必要があります。

特定のリリースがサポートされなくなった場合を除き、私が殺さないブランチはメンテナンスブランチとリリースブランチだけです。

何があっても、常にすべてのリビジョンにアクセスできるので、ブランチのkillは、他の開発者がデッドブランチで開発するのを防ぐためにのみ使用されます。


手順5で追加したコメントは、おそらく手順1の方がいいでしょうか?TortoiseSVNマージダイアログから「ブランチを再統合」を使用する場合、最初にトランク(またはベースブランチ)からのすべての変更をマージする必要があります。
jbvo

1
最初のステップ(作業コピーをトランクに切り替える)は、別のブランチとトランクの作業コピーがない場合にのみ必要ですか?
Jeff B

1
ここで欠けている詳細の主要な部分は、各ステップでクリックするフォルダですので、各ステップのコンテキストがわかります。
MacGyver 2014年

10

TortoiseSVN 1.8.5ではMerge | 2つの異なるツリーをマージすると機能するはずです。ブランチ/タグをトランクにマージすると、トリックはFrom URLがトランクで、Toがタグ/ブランチになることです。奇妙ですが本当です。

ソース:マージ

作業コピーにはないがタグ/ブランチにあるディレクトリの場合、競合エラーが発生する可能性があります。競合を受け入れて、マージをやり直してください。


tortoisesvnサイトの指示に従って、マージ後に、何も変更せずにトランクをコミットしてください。コミットしたくないいくつかのチェックを外してみたところ、非再帰的なコミット警告が出ていました。また、指示に従ってブランチを削除することも検討してください。
goku_da_master

6

まず、作業コピーをトランクに切り替えます。次に、ブランチからトランクまで、リビジョンのマージ範囲を実行します。このダイアログが完了すると、トランクの作業コピーの変更は保留されます。作業コピーに手動で変更を加えたかのように、それらをコミットする必要があります。

私の使用法では、ビルド時にトランクを実行したままブランチをスピンオフするのがより一般的です。そのため、私がする必要がある唯一のマージは、トランクからバグ修正を取得し、それを最新のビルドブランチに置き、そのブランチを再リリースすることです。あなたが見つけたように、マージはせいぜい不器用なので、私がこれを行う最も簡単な方法です。最新のブランチとトランクを私のマシンにチェックアウトしたままにし、ファイルをトランクからブランチにコピーして両方をチェックインすることです。


2
ファイルの「コピー」には細心の注意が必要です。非表示のsvnディレクトリの破損を防ぐために、TortoiseSVNのエクスポートなどを使用します。
ミリメトリック

3

TortoiseSVN 1.9.3、ビルド27038を使用しています。

ブランチをトランクにマージするには、以下の手順に従います。

1)トランクの作業コピーを右クリックして、以下のオプションを選択します。

ここに画像の説明を入力してください

2)トランクへのブランチマージの場合、以下に示すように2番目のオプションを選択し、[次へ]をクリックします

ここに画像の説明を入力してください

3)From:フィールドに、トランクの完全なフォルダURLを入力します。これは間違っているように聞こえるかもしれませんが、トランクはブランチの変更を追加する開始点であることを覚えておいてください。[宛先:]フィールドに、機能ブランチの完全なフォルダーURLを入力します。

ここに画像の説明を入力してください

4)[次へ]をクリックして、テストマージを実行します

ここに画像の説明を入力してください

5)テストマージが成功したら、[マージ]ボタンをクリックします。

6)マージが成功したら、トランクの変更をコミットします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.