1

幹 (A) と 2 つの枝 (B と C) があります。A を C とマージすると問題ありませんが、A を B とマージした後、以前の C は上書きされ、トランクには C の変更がありません。

私が欲しいのは、マージ後に A + B + C をトランクに入れることです。

詳細な説明のために編集:

  1. トランクには、「FILE 1」、「FILE 2」、「FILE 3」の 3 つのファイルがあります。
  2. 「Branch 1」としてトランクからブランチを作成します。
  3. 「ブランチ 1」に切り替え、「ファイル 1」ファイルにバグを修正してコミットします。
  4. 同時に、別の人が「Branch 2」としてトランクからブランチを作成します。
  5. この人物は、「FILE 2」と「FILE 3」のファイルに別のバグを修正してコミットします。
  6. 「Branch 2」の公開が承認されたら、「Branch 2」を「trunk」にマージします (問題ありません)。
  7. 翌日、「Branch 1」が承認され、「Branch 1」を「trunk」にマージすると、「trunk」は「Branch 2」からの変更を失います。
4

4 に答える 4

5

Subversion 1.5 以降を使用していると仮定すると、ブランチをトランクに「再統合」する必要があると思います。http://blog.red-bean.com/sussman/ ?p=92 を参照してください。

于 2009-11-10T19:49:54.757 に答える
3
  1. の作業コピーを作成しますtrunk
  2. svn merge -r W:X svn://branchA workingCopy
  3. svn merge -r Y:Z svn://branchB workingCopy

これにより、トランクに加えて、いずれかのブランチによって行われた変更である、必要なものが得られると思います。ただし、競合に対処する必要があります。

于 2009-11-10T19:14:08.130 に答える
1

あなたの用語は明確ではありません。「A を B とマージする」と言うとき、それは A を B に、または B を A にマージするという意味ですか? ブランチを作成するために何をしたか、どのようにマージを試みたかを正確に説明できますか? また、マージするには、使用している SVN バージョンが重要です。

SVN book の分岐とマージに関する章を注意深く読むことをお勧めします。

基本的に、フィーチャー ブランチがある場合 (これはあなたが持っているように見えます)、繰り返しブランチをそこにマージします。その後、SVN はどのリビジョンをマージしたかをログに記録し、再度マージすることはありません。ブランチが完成したら、トランクに再統合して破棄します。

これはすべて、一度に 1 つのブランチでディスク上で行われ、各ブランチの後で潜在的な競合を解決し、各ステップでチェックインします。(何らかの理由で 1 回のチェックインでトランクに変更を適用する必要がある場合は、ブランチをトランクから新しいブランチにマージし、完了したらそのブランチをトランクにマージできます。)

于 2009-11-10T19:16:30.490 に答える
-12

リポジトリではなく、ワークスペースにマージを適用したい。あるいは、svn よりもはるかに優れた方法でブランチを処理する cvs を使用できます。

于 2009-11-10T19:08:05.427 に答える