perforceperforce-stream

How do I extend parent stream mapping in Perforce?


We have some depot structure and a mainline stream (call MainlineStream)

Root
 - Folder1
 - Folder2
 - Folder3
 - Folder4

A FeatureStream inherits from MainlineStream and wants to only operate on, say, Folder1

import MainlineStream ...
share Folder1

I want to have another stream MyFeatureStream that wants all changes made in FeatureStream but I also want to share, say, Folder2 and propagate my Folder1 and Folder2 changes back to MainlineStream when FeatureStream is completely done and no more needed (gets "copied up" to MainlineStream)

I don't want to ask owner of FeatureStream to extend mapping view for me because I would probably need to extend it even more in development process

How do I achieve such a solution?


Solution

  • There are two strategies and which you pick depends on how you envision this happening:

    propagate my Folder1 and Folder2 changes back to MainlineStream when FeatureStream is completely done

    How do the Folder2 changes get propagated from MyFeatureStream back to MainlineStream?

    If everything needs to get integrated into FeatureStream before it goes to MainlineStream, then FeatureStream needs to include the share Folder2/... path, since part of FeatureStream's purpose is going to be to incorporating the MyFeatureStream changes.

    If the idea is that the Folder2 changes are going to bypass FeatureStream and go straight to MainlineStream, then I think it makes more sense for MyFeatureStream to be a direct child of MainlineStream, and to do a sibling merge to get the Folder1 changes. That should be as simple as doing:

    p4 merge --from FeatureStream
    

    within MyFeatureStream, using the --from flag to say that you want to merge changes from the specified stream rather than the parent (which would be MainlineStream). Since FeatureStream only ever makes changes to the Folder1 path it's not necessary to specify the path explicitly.

    Obviously you will also want to periodically do:

    p4 merge
    

    to merge the changes from MainlineStream into all of MyFeatureStream's share paths (so both Folder1 and Folder2 will potentially be updated).