SubmitTool fails to detect shelved files in a P4 changelist when the shelved files actions are anything except “add”, “edit”, or “delete” (such as “integrate” or branch").
Cause appears to be ParseShelvedChangelistResults() in PerforceSourceControlOperations.cpp in PerforceSourceControl plugin.
Adding this code (line 1685 in version 5.6) appears to fix the problem:
if (Action.Len() > 0) { if (IsAddAction(Action)) { OutResults.Add(DepotFileName, EPerforceState::OpenForAdd); } else if (Action == TEXT("edit")) { OutResults.Add(DepotFileName, EPerforceState::CheckedOut); } else if (IsDeleteAction(Action)) { OutResults.Add(DepotFileName, EPerforceState::MarkedForDelete); } // <RGI> #MissingShelvedFiles else { // Fall-through case for actions such as "integrate" or "branch" OutResults.Add(DepotFileName, EPerforceState::DontCare); } // </RGI> }Please confirm that this is the proper fix?
Steps to Reproduce
Integrate one P4 branch to another. Shelved files on target branch will be marked as “integrate” according to p4 describe. Unshelve files but do not delete the shelf.
Run SubmitTool and attempt to submit. SubmitTool does not prompt you if you wish to delete shelved files. Instead, you receive an error on submit:
This looks like a workaround but wouldn’t be the most correct solution since it only covers a specific section of the logic (shelved files), I will check with the editor’s team but in my opinion, the ideal fix would be to add “branch” and “integrate” actions into the parse results logic. I believe you still won’t be able to see files marked for integration on pending CL files either.
It’s something that has been standing for a while, we don’t deal with a lot of files marked for integrations internally and hasn’t been a priority, I’ll try to carve time out ASAP to fix this on our end safely without disrupting any of the Editor’s behaviour with the change.