lightweight branching with perforce task streams
DESCRIPTION
We're in the trenches developing software just like you, and we're excited to share our first-hand experiences using Task Streams. Perforce's Task Streams open the door to lightweight branching without the administrative resources and performance overhead commonly associated with branching. Join Perforce engineers, Steph Turner and Gabe Weiss as they discuss and demonstrate how Task Streams support software development best practices. We'll show how Task Streams... - Improve software quality - Reduce complex merges - Encourage experimentation - Control scopeTRANSCRIPT
![Page 1: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/1.jpg)
Lightweight Branching with Perforce Task Streams
![Page 2: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/2.jpg)
Lightweight Branching with Perforce Task Streams
Steph TurnerPerforce Software
Gabe WeissPerforce Software
![Page 3: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/3.jpg)
Lightweight Branching with Perforce Task Streams
The Demand From the Market…
Faster Delivery of Product
![Page 4: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/4.jpg)
Lightweight Branching with Perforce Task Streams
The Impact on Development
Code QualityMerge Hell
ExperimentationFeature Creep
![Page 5: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/5.jpg)
Lightweight Branching with Perforce Task Streams
The Solutions…
WorkflowsBranching
Tools
![Page 6: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/6.jpg)
Lightweight Branching with Perforce Task Streams
Perforce Lightweight Branching
Some stuff we might know that you might not…
![Page 7: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/7.jpg)
Lightweight Branching with Perforce Task Streams
Perforce Branches
Learning to walk before we run…
![Page 8: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/8.jpg)
Lightweight Branching with Perforce Task Streams
Code base has archive files & revision records
revxrevcxrevhxrevdx
100K 300K
Revs 3xArchive
Files
![Page 9: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/9.jpg)
Lightweight Branching with Perforce Task Streams
Branch creates revision & integ records
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
![Page 10: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/10.jpg)
Lightweight Branching with Perforce Task Streams
For every branch
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
200K300K
![Page 11: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/11.jpg)
Lightweight Branching with Perforce Task Streams
Even if
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
200K300K
200K300K
![Page 12: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/12.jpg)
Lightweight Branching with Perforce Task Streams
You don’t change a single file!
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
200K300K
200K300K
200K300K
![Page 13: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/13.jpg)
Lightweight Branching with Perforce Task Streams
The Metadata Upside…
Tracks Branch RelationshipsSmarter & Safer Merges
![Page 14: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/14.jpg)
Lightweight Branching with Perforce Task Streams
The Metadata Downside…
PerformanceAdministration
Branch Policy Restrictions
![Page 15: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/15.jpg)
Lightweight Branching with Perforce Task Streams
The Techniques to Control Metadata…
Overlay (+) MappingsObliterate
![Page 16: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/16.jpg)
Lightweight Branching with Perforce Task Streams
Overlay (+) Mappings Branch a Slice
branched
RevsInteg 2x
To and FromArchived
FilesCode Base
![Page 17: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/17.jpg)
Lightweight Branching with Perforce Task Streams
Overlay Branched Slice on Workspace
branched
RevsInteg 2x
To and FromArchived
FilesCode BaseWorkspace
![Page 18: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/18.jpg)
Lightweight Branching with Perforce Task Streams
The Overlay Issues…
Where are my files?Where is the branch point?
![Page 19: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/19.jpg)
Lightweight Branching with Perforce Task Streams
Obliterate – Identify unnecessary metadata
ArchiveFiles
IntegsTo and From
Dev Branch
Code
Revs
![Page 20: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/20.jpg)
Lightweight Branching with Perforce Task Streams
Obliterate it!
ArchiveFiles
IntegsTo and From
Dev Branch
Code
Revs
![Page 21: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/21.jpg)
Lightweight Branching with Perforce Task Streams
The Obliterate Issues…
Admin PrivilegesIt’s Final
![Page 22: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/22.jpg)
Lightweight Branching with Perforce Task Streams
![Page 23: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/23.jpg)
Lightweight Branching with Perforce Task Streams
Streams puts code into a container
P4V
RevsArchive
FilesSwarm
Server
Code Base
![Page 24: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/24.jpg)
Lightweight Branching with Perforce Task Streams
Streams “Import” is the key…
P4V
RevsArchive
FilesSwarm
Server
Code Base
Swarm
Server
![Page 25: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/25.jpg)
Lightweight Branching with Perforce Task Streams
3 Cool Things About Streams Import
Lightweight Protections SchemeUp-to-date FilesLean metadata
![Page 26: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/26.jpg)
Lightweight Branching with Perforce Task Streams
Oh yeah…1 more cool thing…
![Page 27: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/27.jpg)
Lightweight Branching with Perforce Task Streams
Workspaces generated from stream rules
P4V
RevsArchive
FilesSwarm
Server
Code Base
Swarm
Server
P4V
SwarmServer
![Page 28: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/28.jpg)
Lightweight Branching with Perforce Task Streams
Developers Fear the “Uns”
Uncontrolled MergeUnstable Environment
Unnecessary Recompiles
![Page 29: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/29.jpg)
Lightweight Branching with Perforce Task Streams
Workspaces generated from stream rules
P4V
RevsFileArchive
SwarmServer
Swarm
Server
P4V
Swarm
Server Integ To and From
![Page 30: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/30.jpg)
Lightweight Branching with Perforce Task Streams
Dev Branch Issues
MetadataPerformance
Delete
![Page 31: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/31.jpg)
Lightweight Branching with Perforce Task Streams
Demo Time
Task StreamsLightweight
![Page 32: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/32.jpg)
Lightweight Branching with Perforce Task Streams
Before task streams
P4V
RevsArchiveFiles
Swarm
Server
P4V
Swarm
Server Integ To and From
Parent Stream
Dev Stream
![Page 33: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/33.jpg)
Lightweight Branching with Perforce Task Streams
Now task metadata is put into shadow tables
P4V
RevsArchiveFiles
Swarm
Server
P4V
Swarm
ServerInteg To
and From
Parent Stream
Task Stream
![Page 34: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/34.jpg)
![Page 35: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/35.jpg)
Lightweight Branching with Perforce Task Streams
Archive and metadata for fileRevsArchive
Files
Integ To and From
Parent Stream
Task Stream
p#3p#3, t#1 p#3
t#1
t#1
![Page 36: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/36.jpg)
Lightweight Branching with Perforce Task Streams
Submit a new version of file…RevsArchive
Files
Integ To and From
Task Stream
p#3, t#1 p#3
t#1
t#2
t#2
t#2
![Page 37: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/37.jpg)
Lightweight Branching with Perforce Task Streams
Shadow integ & rev metadata copied to real tableRevsArchive
Files
Integ To and From
Task Stream
p#3, t#1 p#3
t#1
t#2
t#2
t#2
t#1t#2
![Page 38: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/38.jpg)
Lightweight Branching with Perforce Task Streams
Only interesting metadata gets copied!RevsArchive
Files
Integ To and From
Task Stream
p#3, t#1 p#3
t#1
t#2
t#2
t#2
t#1t#2
![Page 39: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/39.jpg)
![Page 40: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/40.jpg)
Lightweight Branching with Perforce Task Streams
Shadow integ & rev metadata copied to real tableRevsArchive
Files
Integ To and From
Task Stream
p#3, t#1 p#3
t#1
t#2
t#2
t#2
t#1t#2
Parent Stream p#3
![Page 41: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/41.jpg)
Lightweight Branching with Perforce Task Streams
Shadow integ & rev metadata copied to real tableRevsArchive
Files
Integ To and From
Task Stream
p#3, t#1 p#3
t#2
t#2t#1t#2
Parent Stream p#3
![Page 42: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/42.jpg)
![Page 43: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/43.jpg)
Lightweight Branching with Perforce Task Streams
Task Stream Guidelines
Quick fixShort term feature development
No reparentingNo children
![Page 44: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/44.jpg)
Lightweight Branching with Perforce Task Streams
Try Perforce for Free
Free for up to 20 users, 20 workspaces, forever.
![Page 45: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/45.jpg)
Lightweight Branching with Perforce Task Streams
THANK YOU!!!
Steph Turner: [email protected]
Gabe Weiss: [email protected]
P4Ideax Forums
![Page 46: Lightweight Branching with Perforce Task Streams](https://reader036.vdocuments.mx/reader036/viewer/2022062319/555a2793d8b42a900d8b4973/html5/thumbnails/46.jpg)
Lightweight Branching with Perforce Task Streams
NEXT DEV TALK
Hacking Perforce withMatt Attaway