TortoiseSVNを使用して、ブランチの変更をトランクにマージします
-
05-07-2019 - |
質問
TortoiseSVNを使用して、ブランチで行った変更を取得し、Trunkとマージする必要があります。
私はこのプロジェクトの唯一の開発者なので、trunkは変更されていません。最終的に私のチームが使用できるようにSVNを学んでいます。
基本的に、トランクをブランチとまったく同じように見せたい。
svn以前の世界では、ブランチフォルダー内のファイルをコピーし、トランクフォルダー内のファイルを削除してから、ブランチをトランクにコピーします。
TortoiseSVNでは、「ブランチを再統合」、「リビジョンの範囲をマージ」、「2つの異なるツリーをマージ」を試しました。実際にトランクを変更するものはないようです。また、トランクの上で分岐を試みました。これにより、トランクが既に存在するというエラーが表示されます。
この時点で、私は無意識のうちに何かが機能することを期待してボタンを押しています。
解決
あなたの場合:
- 作業コピーをトランクに切り替える(SVNスイッチ)
- ブランチを作業コピーにマージします(SVN Merge)
- すべてがまだコンパイルおよび動作していることを確認します
- 作業コピー(トランク)をコミットします
- ブランチの削除を検討する
チーム環境では、まずブランチのトランクから最新の変更をマージし、すべてがコンパイルされて動作することを確認してから、上記の手順を実行することをお勧めします既に変更をテストしています)。
更新
ステップ5では、ブランチを強制終了することに言及しています。これは、機能からのブランチがトランクに入れられると、トランクの一部と見なされるためです。その場合、誰も作業を続けないようにブランチを削除する必要があります。その機能に大きな変更が必要な場合は、そのための新しいブランチを作成する必要があります。
特定のリリースがサポートされなくなっていない限り、私が削除しないブランチは、メンテナンスブランチとリリースブランチのみです。
どのような場合でも、常にすべてのリビジョンにアクセスできるため、ブランチの削除は、他の開発者がデッドブランチで開発するのを防ぐためにのみ使用されます。
他のヒント
TortoiseSVN 1.8.5では、Merge | 2つの異なるツリーをマージする必要があります。ブランチ/タグをトランクにマージして戻すと、トリックはFrom URLがトランクで、Toがタグ/ブランチになることです。奇妙だが真実。
出典:マージ
作業コピーではなく、タグ/ブランチにあるディレクトリの場合、競合エラーが発生する場合があります。競合を受け入れて、マージをやり直してください。
まず、作業コピーをトランクに切り替えます。 次に、ブランチからトランクまで、マージ範囲のリビジョンを実行します。 このダイアログが完了すると、差分はトランクの作業コピーの保留中の変更になります。作業コピーに手動で変更を加えたかのように、それらをコミットする必要があります。
私の使用法では、ビルド時にトランクを実行し、ブランチをスピンオフするのがより一般的です。そのため、私がする必要がある唯一のマージは、トランクからバグ修正を取得し、それを最新のビルドブランチに配置して、そのブランチを再リリースすることです。私がこれを行う最も簡単な方法は、あなたが発見したように、せいぜい不器用だからです。最新のブランチとトランクをマシンにチェックアウトしたままにし、ファイルをトランクからブランチにコピーして、両方をチェックインすることです。
TortoiseSVN 1.9.3、ビルド27038を使用しています。
ブランチをトランクにマージするには、以下の手順に従います。
1)トランクの作業コピーを右クリックして、以下のオプションを選択します。
2)トランクへのブランチマージの場合、下に示すように2番目のオプションを選択し、[次へ]をクリックします
3)[From:]フィールドに、トランクの完全なフォルダーURLを入力します。これは間違っているように聞こえるかもしれませんが、トランクがブランチの変更を追加する開始点であることを忘れないでください。 [To:]フィールドに、機能ブランチの完全なフォルダーURLを入力します。
4)[次へ]をクリックして、テストマージを実行します
5)テストマージが成功したら、[マージ]ボタンをクリックします。
6)マージが成功したら、トランクで変更をコミットします。