1

バージョン管理システムを使用して管理されていなかったこの小さな開発プロジェクトがありました。2 人が元のコード ベースに取り組んでいたため、元のコード ベースのわずかに異なる 2 つのコピーがありました。これらのコピーを「copyA」と「copyB」とします。

ここで、これら 2 つのコピーの SVN リポジトリを作成しようとしました。「copyA」を幹に、「copyB」を「branchB」という枝に入れました。

その後、2 人の開発者がこれら 2 つのリポジトリ パスの作業を開始しました。(「トランク」および「ブランチ B」)。

次に、これら 2 つのブランチをマージする必要がありましたが、正しい結果が得られなかったようです。

後の段階でマージするために、ブランチが同じ「コードベース」から分岐している必要がありますか?

私の場合、単一の「コードベース」はありませんでした。「copyA」と「copyB」の2つは別々にSVNにコミットされました。

4

1 に答える 1

2

2 つの分岐の開始点が同じであることが最適です。
SVN で 2 つの無関係なブランチを「マージ」することができます (セクション「Mergeinfo を使用しないマージ」)。

無関係なソースのマージ

互いに関係のない 2 つの URL を比較するように svn merge を要求すると、パッチが生成されて作業コピーに適用されますが、マージ メタデータは作成されません。2 つのソース間に共通の履歴はなく、将来の「スマートな」マージはその共通の履歴に依存します。

それぞれ " " で始まる 2 つのブランチをセットアップし、2 番目のブランチの内容を " " で消去するのは簡単なので、これはgitの方が効率的であることに注意してください(git は、によって導入されたすべての名前変更、移動、追加を検出します" " と " " の比較)。 git で 2 つの無関係なブランチを作成した場合でも、共通の履歴を偽造してそれらをマージすることができます。copyAcopyBcopyBcopyA

于 2012-07-10T07:08:00.110 に答える