The other answers here are correct, but they don't warn you that you can't just shelve from any stream and unshelve on any unrelated stream. In particular, the original poster asked about the error message "file(s) not in client view" which is the error message that P4V displays when you haven't selected the proper mapping.
Here's the trick to finding the proper mapping: Your unshelve stream must have a direct parent/child relationship with the shelved stream, and you must select the stream spec that describes that relationship in the "Map unshelved files using stream..." part of the dialog. This means it may take multiple hops to get from the original shelved stream to the target stream.
Here's a concrete example: Let's say you have files shelved into Dev-1
that you want to move to Dev-2
. These two Dev streams are both direct children of Main
. You can't unshelve Dev-1
's files directly into Dev-2
, first you have to unshelve and temporarily re-shelve into Main
, because the Dev stream specs both describe their relationship in terms of Main
and not each other.
So, you unshelve Dev-1
's files into Main
with "Map unshelved files using stream Dev-1
" because that spec describes the relationship being traversed. Then, shelve the files into Main
, and then switch your workspace to Dev-2
. Now, you can unshelve the Main
version of the shelved files, with "Map unshelved files using stream Dev-2
", because that spec describes the direct relationship from Main
to Dev-2
.
With multiple hops, you can get to any other connected stream in your network. This is not as easy as git stash
and git stash pop
, but remember that Git is assuming the filenames don't change between git branches, whereas Perforce allows each hop to arbitrarily change the mapping of files and folders.