Resolve branched files, deletions, moves and filetype changes
Beyond reconciling changes to the contents of related files after integration, you can also determine how other kinds of changes are handled. Consider this example:
- You edit
header.cc
in the mainline while a coworker deletes it in the release branch (or vice versa). You integrate fixes in the release branch back to main. During resolve, you can decide whetherheader.cc
is deleted from the mainline or the action in the release branch is ignored, preservingheader.cc
in the mainline. - A developer implements RCS keywords in source files in a development
branch, and changes their
Helix Core Server
filetype from
text
totext+k
. The release manager wants to integrate new features from the development branch to the mainline, but does not want to enable keyword expansion in the mainline. During resolve, the release manager can choose to ignore the filetype change. - The file
header.cc
is branched frommain
torel
. Subsequently, it’s renamed toheaderx.cc
in main, and moved in the release branch to theheaders
subfolder.
Following are simple cases describing how you can resolve non-content
changes to related files. After a source file is branched to a target
file, changes are made as describe below, then you integrate the source
to the target. To choose the outcome, you specify the resolve options
at
(“Accept Theirs”) or ay
(“Accept Yours”) as
follows:
- The source is edited and target is deleted: the
at
option re-adds the source in the target branch. Theay
option causes the file to remain deleted in the target branch. - The source is deleted and the target is edited: the
at
option causes the file to be deleted in the target branch. Theay
option retains the edited content in the target branch. - The target file was moved after being branched: the
at
option moves the target file to the source file name and location. Theay
option retains the target file name and location. - The filetype of the source file was changed after it was
branched: the
at
option propagates the change to the target. Theay
option leaves the filetype of the target unchanged. If the differing filetypes do not conflict, you have the option of combining them. -
Files have been moved or renamed in conflicting ways: you are prompted to choose a path and filename. Example:
Resolving move to //Acme/rel/headerx.cc Filename resolve: at: //Acme/rel/headerx.cc ay: //Acme/rel/headers/header.cc am: //Acme/rel/headers/headerx.cc
By default, the p4 resolve
command resolves all
types of change, content and non-content. To constrain the type of
actions that you want to resolve, specify the -A
option as
follows:
Option | What is Resolved |
---|---|
|
Resolve attributes set by |
|
Integrations where the source is edited and the target is deleted. |
|
Resolve file content changes as well as actions. |
|
Integrations where the source is deleted and target is edited. |
|
Renames and moves. |
|
Filetype changes. |
|
Charset changes. |
To perform more than one type of resolve, combine the options (for
example: -Abd
). By default, resolving is performed file by
file, interactively. To specify the same outcome for a particular action
(for example, propagate all moves), and avoid the prompting, include the
desired option on the command line. For example: p4 resolve -Am
-at