With the 2013.1 version of the Perforce server, you can unshelve through a branch spec, so the process for doing this is:
- Shelve the changes for project A
- Shelve the changes for project B (optional)
- Create a branch view which maps project A to project B
- Unshelve the shelf from step 1, using the branch view from step 3, into the workspace which has the project B files open.
The Server will schedule integrations and merges of the shelved content from step (1) against the opened files in the project B workspace.
After resolving the integration merges, you can diff all the changes and either proceed with them or make further changes.
The reason for shelving the changes for project B in step (2) is so that if you don't like the results of the integration and merge, you can revert everything and re-start the process from the shelved work.