0

私は枝のファミリーを維持しています, .../base/..., .../base-staging/..., .../base-production/.... 通常、変更は で行われbase、レビューされbase-staging、最終的にに統合されbase-productionます。統合の前に、私は通常、p4 interchanges予想される変更のみが引き継がれることを確認するために を行います。

通常、これは機能します。ただしp4 integrate、 によってリストされていないファイルや変更をプルすることがありますp4 interchanges。私の理解では、それは起こるべきではありません!私は何を誤解していますか?

詳細:

  1. 古代史:
    1. 作成.../base/...
    2. p4 integrate base/... base-staging/...
    3. p4 integrate base/... base-production/...
  2. と に変更を.../base/...加えるsubmit
  3. p4 interchanges base/... base-staging/...
    1. レビューして承認する
  4. p4 integrate base/... base-staging/...
    1. おっと!これらの他のすべてのリストされたファイルは何ですか???
    2. レビュー:実際の変更は、私のinterchanges命令のかなり前に行われましたが、そこには言及されていません
4

1 に答える 1

0

比較的最近のサーバー リリースについて話していると仮定します。古いリリースでは、「交換」は実際に「統合」リストと正確に一致しますが、新しいリリースでは、微妙に異なる一般的な問題に対処するために少し異なります。 2 つのコマンドの使用例。

「統合」の機能の 1 つは、将来の統合が予測可能な方法で動作することを保証する履歴を記録することです。一部のエッジ ケースでは、実際の変更をターゲットに伝達する必要がない場合でも、統合のためにファイルを開くことを意味するため、ファイルが最新であることを記録できます。非常に単純な例: A を変更し、A から B を無視し、B から C にマージし、A から C にマージします。通常、A->B が何も報告しない場合、統合は「推移的」であると予想されます。 do で B->C が何も報告しない場合、A->C は何も報告しない。ただし、B->C マージが「無視」されたために変更をスキップした場合、A->C マージには、B->C マージが試行されたという記録がなく、変更が伝播されます。

ただし、「インターチェンジ」は履歴を記録しないため、通常は、ターゲットに存在しないソースの変更のみを報告するようにスコープを制限することが望ましいです。したがって、「統合」を実行して得られるよりも小さな変更セットを生成するように調整されています。「交換」から除外され、「統合」によって含まれる変更は、通常、マージを厳密に必要としないものになりますが、「必要な」変更も含まれている場合は、おそらくマージが容易になります。

「統合」で「-Rs」フラグを使用すると、「交換」の動作を模倣し、ソース リビジョンの絶対最小セットを選択します。それが導入されたときから、この古いブログ投稿で簡単に説明されています。

http://www.perforce.com/blog/101206/p4-integ-3-exciting-things-afoot

于 2014-07-03T15:23:06.333 に答える