Earlier this year, we ran into an issue that has complicated our testing workflow. Our UAssets are set to use exclusive checkout, meaning that only one user can modify an asset at a time. This limitation makes it impossible for UserA to simply shelve changes for UserB to unshelve and test.
To overcome this, we developed a tool that streamlines testing by:
- Accepting a changelist number as input.
- Locating the shelved files in that changelist.
- Copying those files locally (overwriting any existing version) and making them writable.
- Creating a new uncontrolled changelist by adding an entry to the UncontrolledChangelists.json file.
- This approach lets UserA keep their original shelve intact while allowing UserB to test the changes without needing UserA to revert their modifications.
Issue:
Despite the tool working as intended most of the time, we periodically encounter the following error when a user attempts to delete the shared shelve:
SourceControl: Error: CommandMessage Command: DeleteShelved, Error: - unshelved file for needs resolve
After investigating, we found that:
- The affected file was never checked out by UserB.
- The error can occur across multiple workspaces using the tool for the same changelist, which is unexpected given our exclusive checkout policy.
We suspect that items in the uncontrolled changelist are interfering with Perforce’s ability to delete the shelve.
Workaround:
Move UserA’s files to a new changelist.
Have an administrator manually delete the changelist, which circumvents the error.
Any assistance, advice, or insights into a permanent resolution would be greatly appreciated.
Thank you!