p4 integrate
Synopsis
Open files for branching or merging.
p4 integrate
can be abbreviated as p4 integ
.
Syntax
p4 [g-opts
] integrate
[options
]
fromFile
[revRange
]
toFile
p4 [g-opts
] integrate
[options
] -b branch
[-r]
[toFile
[RevRange
]
...]
p4 [g-opts
] integrate
[options
] -b branch
-s fromFile
[revRange
]
[toFile
...]
p4 [g-opts
] integrate
[options
] -S stream
[-r] [-P parent
]
[file
[revRange
]
...]
options
: -c
changelist
-Di -f -h -O
options
-n -m max
-Roptions
-q
Description
When you’ve made changes to a file that need to be propagated to another
file, start the process with p4 integrate
. The command includes
four syntax variants, depending on whether the source and target files
are specified using files, branches, or streams.
The simplest syntax variant is p4 integrate fromFile toFile
;
this lets the versioning service know that changes in fromFile
need to
be propagated to toFile
, and has the following effects:
- If
toFile
does not yet exist,fromFile
is copied totoFile
, thentoFile
is opened forbranch
in the client workspace. -
If
toFile
exists, and shares a common ancestor withfromfile
as above, thentoFile
is opened forintegrate
. You can then usep4 resolve
to propagate all of, portions of, or none of the changes infromFile
totoFile
.The
p4 resolve
command usesfromFile
astheirs
,toFile
asyours
, and the file with the most edits in common as the base. - If
fromFile
was deleted at its last revision (and all previous changes have already been integrated betweenfromFile
andtoFile
),toFile
is opened fordelete
in the client workspace. - Whether you move files using
p4 move
, or whether you use native OS commands to rename files within your workspace (usingp4 reconcile
orp4 status
to update your changelist to reflect the moves you made),p4 integrate
automatically detects these actions, adjusts the source-to-target mappings appropriately, and schedules a filename resolve for each remapped file pair.
(Some of the available options modify this behavior. See Options for details.)
The process is complete when you p4 submit
toFile
to the depot.
Note
If you integrate from a classic branch or other stream depot to a task stream, the files are not copied up to the parent unless they are edited and submitted first.
To specify multiple files, use wildcards in fromFile
and toFile
.
Any wildcards used in fromFile
must match identical wildcards in
toFile
. Perforce compares the fromFile
pattern to the toFile
pattern, creates a list of fromFile
/toFile
pairs, and performs an
integration on each pair.
The syntax p4 integrate fromFiles
toFiles
requires you to specify
the mapping between fromFiles
and toFiles
each time changes need to
be propagated from fromFiles
to toFiles
. Alternatively, use
p4 branch
to store the mappings between fromFiles
and toFiles
in a branch view
, and then use p4 integrate -b
branchview
whenever you need to propagate changes between
fromFiles
and toFiles
.
By default, files that have been opened for branch
or integrate
with
p4 integrate
are read-only in the client workspace. You can edit
these files before submitting them using p4 edit
to
reopen the file for edit
.
Whenever a toFile
is integrated from a fromFile
, Perforce creates an
integration record in its database that describes the effect of the
integration. The integration record includes the names of the
fromFile
, and toFile
, the revisions of fromFile
that were
integrated into toFile
, the new revision number for toFile
, and the
action that was taken at the time of the integration. See
p4 integrated
for a full description of
integration actions.
In most cases, p4 integrate
performs a lazy copy; the contents
of the file are not duplicated on the server, because the integration
record contains sufficient information to reproduce the file.
Integrations performed on temporary object files (+S
and
+S
) do not produce
a lazy copy; the integrated n
tempobj
file consumes additional diskspace
on the server.
Alternatives to p4 integrate
include the following:
p4 populate
to quickly branch files without opening them in a workspace.p4 copy
to open files to be copied without scheduling any resolves.p4 merge
to open files to be merged and schedule resolves for all changes.
Options
Because some of the integration options add complexity to the integration process, we’ve divided the options into Basic Integration Options and Advanced Integration Options.
Basic Integration Options
|
Integrate the files using the If a revision range is supplied with |
|
Any |
|
Display the integrations this command would perform without actually performing them. |
|
Open the If this option is not provided, the files are opened in the default changelist. |
|
Quiet mode; suppresses normal output messages about the list of files being integrated, copied, or merged. Messages regarding errors or exceptional conditions are displayed. |
|
See “Global Options”. |
Advanced Integration Options
|
In its simplest form, p4 integrate -b
In its more complicated form, when both This variation of |
|
Reverse the mappings in the branch view, integrating from the target files to the source files. |
|
The This flag is intended to be used for the documented purposes only,
otherwise it might produce unintended integration results. For
example, using the |
|
Force the integration on all revisions of |
|
Don’t automatically sync target files to the head revision before integrating. Use the have revision instead. |
|
Limit the command to integrating only the first |
|
The |
|
The |
|
The |
|
The |
|
The |
|
Integrates a stream to its parent. To reverse the direction of the mapping, use the To override the configured parent and integrate to a
different target stream, specify To submit integrated stream files, the current client must be switched to the target stream or to a virtual child stream of the target stream. |
Usage Notes
Can File Arguments Use Revision Specifier? | Can File Arguments Use Revision Range? | Minimal Access Level Required |
---|---|---|
Yes |
Yes |
|
Examples
p4 integ //depot/dev/... //depot/rel2/... |
Branch or merge all files in
If there is no corresponding file in
|
|
Branch or merge all |
p4 integ -b rel2br //depot/rel2/headers/... |
Branch or merge those |
|
Branch or merge |