2

開発者が作業ブランチで行ったいくつかの作業を安定ブランチにマージしようとしました。ファイル a、b、および c は、STABLE ブランチと HEAD ブランチの共通の祖先が分離されて以来、少なくとも 12 個の変更セットによって変更されていました。

この開発者はファイル a、b、c のそれぞれで 5 行を変更したので、HEAD から STABLE ブランチに統合すると、保留中の変更セットに彼の変更を取得し、それを確認してコミットできると予想していました。

代わりに、ファイル A に発生したすべての変更を取得しているように見えます。これは、2 つのファイルが分岐していたため、同僚の作業コピーにも存在していたすべての変更を適用したためです。

言い換えれば、私の同僚が実際に変更したものと、以前のファイルに含まれていたものの記録が、perforce チェンジセットにはないようです。

送信された変更セットを参照すると、同僚のバージョンのファイルと直前のバージョンの違いがわかります。しかし、それでは、何がマージされるかが決まるわけではないようです。

変更セットとは、「ファイルのリビジョン X とリビジョン X+1 の間で行われた一連の変更」という意味ではありませんか? 実際、Perforceは変更を追跡するのではなく、ファイルを追跡しているように見えるのに、「変更セットを統合する」とはどういう意味かを理解するのを手伝ってくれる人はいますか?

私がすべて間違ったことをしている可能性は十分にあり、Perforceの作業ブランチと安定したブランチの間で、統合したくないものなしで正確かつ安全にマージできる方法についてのポインタをいただければ幸いです。安定したブランチが統合されています。製品に実際に加えられた変更がどれほど単純であっても、マージは実際には機能しないようです。

4

2 に答える 2

1

Perforceは、テキストファイルへの変更をデルタとして保存します (バイナリ ファイルは、変更が送信されるたびに完全に保存されます)。統合中にリビジョン範囲を適切に制限していないようです。

あなたは、作業ブランチが「...ブランチが分離されて以来、少なくとも 12 個のチェンジセットによって変更された」と言います。それらをチェンジリスト 1 ~ 12 と呼びましょう。私が正しく理解していれば、変更リストのすべてではなく、変更リストの 1 つだけに加えられた変更を統合しようとしています。

単純な統合操作中、Perforce は、ブランチが作成されてから送信されたすべての変更を統合する必要があると想定します。これらの変更のサブセットのみが必要な場合は、リビジョン範囲を指定する必要があります。したがって、変更リスト 11 と 12 の間で発生した変更を統合するだけの場合は、スクリーン キャプチャに示すようにそのリビジョン範囲を指定します。(注: リビジョン範囲は包括的であるため、このスクリーン ショットのように 11 ~ 12 の範囲を指定すると、実際にはチェンジリスト 1112 の変更が含まれます。チェンジリスト 12 で行われた変更を統合するだけの場合は、12 と入力します。リビジョン範囲の両方のフィールドで。)

分岐がどれだけ離れているか、および変更の性質によっては、発生する避けられない競合を解決するのが難しい場合があることに注意してください。

代替テキスト

于 2010-11-29T21:34:18.200 に答える
0

統合をどのように行ったかについて、より具体的に教えてください。私の推測では、おそらく、そのチェンジリストだけでなく、そのチェンジリストまでのすべての変更を統合していると思います。その場合、統合の上限と下限の両方と同じチェンジリストを指定するだけです。

ビジュアルクライアントで行うのは非常に簡単ですが、使用する必要のある正確なコマンドラインスイッチがわかりません。

于 2010-11-24T22:48:49.400 に答える