55

TortoiseSVNを使用して、単純なシナリオだと思ったものがあります:

1)アプリケーションのブランチ(B2)を作成しました(画像スプライトとJAWRの実装に取り​​組むため)。

2) テストと開発は通常どおりトランクで行われました。

3) この数日間、次の方法でブランチのベースを数回変更しました。

3.1) トランクを (リビジョンの範囲で) 私の branch-b2 作業コピーにマージし、マージ中の競合を解決しました。

3.2) (branch-b2 のテスト後)、リベースした branch-b2 をコミットします。

これはすべて期待どおりに機能しました。しかし、ブランチをトランクにマージすることは、私にとってはうまくいきます。

4) branch-b2 でコミットされたすべての更新後。トランクとブランチ b2 で SVN アップデートを必ず実行します。

5) 次に、(リビジョンの範囲) を branch-b2 からトランクにマージしようとします。ただし、トランクに追加され、その後リベースしたときにブランチ b2 に追加された新しいファイルについては、ツリーの競合が発生します。これらの競合を解決する適切な方法が何であるかはわかりません。

私が見た最も典型的なアドバイスは、ツリー競合ファイルをトランクから削除してから、ブランチをマージすることです。または、トランク全体を削除し、ブランチ ファイルをコピーして、新しいバージョンとしてトランクにコミットします。これらのオプションはどちらも良いアイデアとは思えません。最初のオプションは面倒で、どちらもファイルのリビジョン履歴が失われるようです。

何が間違っていましたか、どうすれば修正できますか?

4

6 に答える 6

3

同じ問題を調査しました。Tortoise SVN 1.6.5 の「機能」です。TortoiseSVN 1.5 は、リポジトリ (SVN 1.5) で正常に動作します。リベース時の TortoiseSVN 1.6.5 は、メインラインからのファイルを NEW として追加します (マージ履歴を保存しません)。
また、ブランチを再統合すると、それらのファイルがメインラインと競合するものとして扱われます。

TortoiseSVN 1.6 の機能「ブランチの再統合」を使用して問題を解決しました。これは、特に機能ブランチを目的としています。

-- アレクセイ・コルスン

于 2009-10-07T15:33:10.910 に答える
1

TortoiseSVN を使用して「リビジョンの範囲をマージする」オプションを選択しながら、マージするリビジョンを選択します。これにより、マージ操作ごとに同じファイルのツリー競合が再び発生するのを防ぐことができます。

于 2012-07-16T10:05:19.247 に答える
1

上記の解決策がどのように機能するかを実際に理解できなかったため、私の回避策は異なります。最初に、トランクからのすべての変更がブランチに含まれていることを確認しました。

1) トランクの新しいコピーを入手しました。2)亀のsvnエクスポートを使用して、ブランチを一時的な場所にエクスポートしました。3) Windows エクスプローラーを使用してブランチ ツリー全体をトランクにコピーし、すべてのファイルを上書きしました。5) すべてのファイルを選択し、[追加] をクリックしました。

未修正のファイルに出力が含まれないように、ビルドされていないソリューションを使用する必要があります。

1.5+にアップグレードするまで待ちきれません

于 2009-10-23T18:17:18.000 に答える