So, here's the situation. I have 2 streams, "Development.Main" and "Development.A" (child of Development.Main). I will focus only on the "path" that one file took through my "versioning" steps that I executed.
How do I solve this situation, so that I can delete the file in Main but not in A?
Conditions for the solution:
There are two ways to do this:
Option one (general solution):
Don't ever do the copy
operation between these two streams. The merge/copy workflow is not compatible with the idea of "ignoring" changes, because as soon as you copy
you force the two streams to be identical regardless of what has previously been ignored.
Fortunately, streams have a mergeany
option that allows you to opt out of the merge/copy workflow, so you can instead merge/merge without having to use the -F
(force) flag each time -- this was the standard Perforce workflow before streams existed. When you merge
, previously "ignored" revisions will not be merged, nor will revisions that were themselves the product of an "ignore" in the reverse direction (i.e. your ignored delete will not re-propagate as an add if you're doing a merge).
The ability to "ignore" branch/delete operations in this way is described in more detail here (again, note that this only works with merge
/integrate
, not copy
): https://web.archive.org/web/20141020052100/http://www.perforce.com:80/blog/110620/ignoring-branches-deletes
Option two (for entire files only):
Since this is an entire file that you don't want to propagate, rather than a specific revision, you can isolate
it in Development.A
's Paths
. This will remove it from the integration view so that no changes made to that file will propagate (in either direction, regardless of whether you're merging or copying). From the point of view of the copy
, this file is simply no longer part of your stream.