p4tkmerge - Merge tool for p4 resolve based on tkdiff
p4tkmerge base theirs yours merge
This program is suitable for invoking from p4 resolve via the P4MERGE environment variable when the user selects the ``m'' option.
First, an attempt is made to determine meaningful names for the BASE, THEIRS and YOURS files using p4 resolve -n and p4 where. Second, those files are searched for any existing conflict markers. Third, diff3 is run to merge the files, generating conflict markers where necessary. Finally, tkdiff is run in merge mode. This allows the user to interactively select whether THEIRS or YOURS should prevail for each of the conflicting chunks.
If any of the 3 source files for the merge already have conflict markers, then p4tkmerge will give up immediately and demand that you clean them up before proceeding, which is what you should want to do anyway to save yourself from massive confusion. This almost always indicates that somebody checked-in a file without resolving the conflicts, which should be viewed as extremely anti-social behavior.
The meaningful name of the YOURS file is based on the client. The meaningful name of the THEIRS and BASE files is based on the client if the resolve was scheduled by a p4 sync, or based on the depot if the resolve was scheduled by a p4 integrate. The version number of the BASE meaningful name will be ``#0'' if the merge is baseless. If a meaningful name cannot be determined, then the local OS filename (which for BASE and THEIRS is the name of a temporary file) is used.