Perforce Public Knowledge Base - A Brief History of Integration
Reset Search
 

 

Article

A Brief History of Integration

« Go Back

Information

 
Problem
This article describes the three major generations of the integration engine that drive the p4 integrate command.
Solution

Generation 1

Perforce server releases 97.3 - 2004.1
 
Parent to child, bidirectional integration. For files with indirect integration history, p4 integrate -i required; revision #1 of the source is selected as the base for the p4 resolve command.
 

Generation 2

Perforce server releases 2004.2 - 2010.2
 
Indirect integration enabled by default (no need for -i flag if there is direct common ancestor). All files related by previous integrations can be integrated. The base selected is the closest common ancestor.

If a file is deleted in Perforce, a new head revision marks the file as a delete. The delete can be propagated when integrating if the target has been fully integrated with the source. If not, Perforce does not integrate the file unless a special flag is used (-d, -Dt, -Ds). A file can be opened for delete or branch depending on if the delete is on the source or target file, respectively.
 

Generation 3

Perforce server releases 2011.1 +

The generation 3 integration engine is available starting in 2011.1.  Although available in 2011.1 it was only the default for the initial release. The generation 2 engine was restored as the default integrate engine in the first patch release (2011.1/428846+) and has been the default until 2013.2. In the 2013.2 Perforce Server release, the generation 3 algorithm became the default.

The p4 copy and p4 merge commands always use the generation 3 engine, even if dm.integ.engine=2.

    The generation 3 integration algorithm can follow moves and schedule delete and filetype resolves. Files opened for branch or delete can also be resolved by using p4 integrate -Rb and p4 integrate -Rd, respectively. Resolves can also be scheduled around cherry-picked integrations by using p4 integrate -Rs.

    A base is selected which includes the greatest number of deltas in common with the source and the target files.

    Related Links

    Feedback

     

    Was this article helpful?


       

    Feedback

    Please tell us how we can make this article more useful.

    Characters Remaining: 255