We recently fixed an issue in the '7.0.16.2392' release regarding the 'shelve' operation. See the details below.
Issue description
We fixed an issue that caused shelved changes to be deleted, even if they were applied later on, in some uncommon scenarios. We bumped into this issue when a shelve created from a cherry pick (i.e. cherry-picking a changeset and choosing to undo the changes after shelve) had the source changeset of the cherry-pick deleted. It happened to all files that were modified only on source. The problem was caused by the changeset where the shelve was applied because it reused the data of the deleted one. When the cherry-pick source changeset was deleted, the data was no longer available.
Steps to reproduce the issue
1. Switch workspace to branch A.
2. Change foo.c and check it in. This creates changeset X.
3. Switch workspace to branch B.
4. Cherry pick changeset X from branch A to branch B, but don’t check it in.
5. Shelve the current workspace changes enabling the option 'Undo these changes in the workspace after shelving them'. This creates shelve Y.
6. Apply shelve Y to the workspace.
7. Checkin (in branch B). This creates changeset Z.
8. Delete changeset X (in branch A).
9. Show differences of changeset Z. We notice that changes of foo.c file are missing. An error message 'Cannot download revision {revId} from server...' is displayed.
What to do?
Unfortunately, we don't have a way to recover the removed content. The only workaround available is to backup the changed files from a workspace where the files are loaded, then delete the affected changesets and finally reapply the recovered changed files to create a new changeset free of the error.
We always recommend that you periodically upgrade your Plastic SCM installation, not only because of the new cool features we provide but also because of this kind of bugfixes we also deliver.