A developer changed a bunch of files in our main branch. Then he went and submitted the identical change to a child branch, '0.95p'. So, the problem is that 'p4 integrate' on the child branch says that all those files need merging, but they really don't. So, is there a way to 'fake out' Perforce to tell it that the merge has already been done, or that it doesn't need to be done?
Yes, you can use p4 resolve to fake out Perforce. (Not really a fake-out, just a matter of letting Perforce know it can ignore a particular integration.)
In the resolve step you have a choice of 'am', 'at', or 'ay' (meaning 'accept merged', 'accept theirs', or 'accept yours'). If you choose 'ay', the target file will not be altered in your workspace. When you submit a file resolved this way, the target file will not be altered in the depot either, but an integration record will be created so that subsequent p4 integrate commands will not try to integrate the same change again.
So say the 'main' branch and the '0.95p' branch were all integrated with each other. Then Bob, say, submits change 420 to the '0.95p' branch, and then submits the identical modifications as change 421 to the 'main' branch. To do the mock integration:p4 integ //depot/0.95p/...@420,420 //depot/main/... p4 integ //depot/main/...@421,421 //depot/0.95p/... p4 resolve -ay p4 submit