1

ここに画像の説明を入力

この例では、「windows」ブランチと「test」ブランチから「main」へのマージは通常どのように処理されますか (赤い線)?

たとえば、「windows」ブランチの開発者は、A=1 を設定してバグを修正し、「windows」で修正をテストして「完了」と呼び、「windows」を「main」に「main/8」としてマージします。 」 今のところ問題ありません。

しかし、「test」ブランチの開発者が、現在取り組んでいるバグを修正するために A を「A=0」に変更したとします。

「test/4」を「main」にマージするとどうなりますか?

現在、「main/9」は「A=0」を示し、「windows/1」によって行われた修正を上書きしています。

次に、「windows」の下で修正に取り組んだ開発者が、別の修正に取り組む必要があり、「windows_2」を作成するとします。彼は A がまだ「A=1」であると考えているでしょう。開発者は、現在「A=0」であることを発見するのに苦労するかもしれません。

これらのタイプの変更はどのように処理されるので、メインの「トランク」から並行してブランチが作成されたときに、あるマージから次のマージで変更が元に戻されませんか?

どんな情報でも大歓迎です。どうもありがとうございました。

4

1 に答える 1

0

「<code>test/4」が「main」にマージされるとどうなりますか?

共通の祖先と比較して、 " " の*同じ*行が2 回A=変更されているため、これは重要なマージです。これはマージ中の明らかな競合であり、自動競合ではありません。

testしたがって、ブランチをマージする開発者は、ラインtestwindowsラインのどちらかを選択する必要があり、うまくいけば、windowsブランチの開発者に確認します。

マージページから:

2 つ以上のコントリビューターがベース コントリビューターと異なる場合、Diff Merge は競合を検出し、解決するように求めます。すべての貢献者の違いが表示され、それぞれを受け入れるか拒否することができます。

          [changed 10]            |          [changed to 10 file 2]---
A;                                | A=1;
                                 -|-
          [changed 10]            |          [changed to 10 file 3]---
A;                                | A=0
                                  |-
Do you want the CHANGE made in file 2? [yes] 
no  
Do you want the CHANGE made in file 3? [yes] 
yes
Applying CHANGE from file 3 [line 10]
============

しかし、本当の答えはコミュニケーションです。同じファイルに (特に同じ行で) 変更が必要な場合は、そのような種類の開発作業を管理および調整する方法が必要です。

ClearCase は、バージョンのチェックアウト中にチェックアウトcleartool checkout -reservedできないようにする、チェックアウト ( )のロックも提案しました。これにより、開発者は同僚に確認し、行われている修正の性質を認識するよう促すこともできます。testwindowstest

于 2013-03-01T02:31:11.470 に答える