Specifically:
-
Why do I need to explicitly enable “Enable baseless merges” all the time? I am integrating from my branch to the trunk.
-
What does “Enable integrate over
deleted targets” mean? Shouldn’t it
do this by default? If the file
doesn’t exist, and you integrate to
that branch with the file, it should
create the file, right?? -
What does “Do not get latest revision
of selected files” have to do with
integrating? I should be choosing a
source revision, and a target (to
create a new target revision). -
What does “Disregard indirect
integration history” mean? I’ve never used it, since it sounds scary.
I would be grateful to know, as I am a little unsure of what options to enable when I am trying to do various integration tasks from our trunk to various branches or vice versa. (I am not the buildmaster, but hey, I want to know what he knows).
In general, to merge two files, perforce looks for a “base”, the closest revision to the two files, and uses that to provide a much better diff than just directly running a diffing the two files. See Knowledge Base Article. Without knowing your perforce setup, I couldn’t say what was going wrong, however, p4win has some nice graphical tools to visualize branches, you might be able to determine why perforce can’t find a base for you. This is also what “Disregard indirect integration history” does: stops it from looking for the base.
For the “don’t sync to head”: when integrating, your “target” is the files in your local client, which you aren’t specifying a revision for; instead, perforce will either sync your revision head (if you don’t use “-h”), or will use the one you currently have. You can’t specify an arbitrary revision because your local client only has a particular one.