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
Lightweight Branching with Perforce Task Streams
Lightweight Branching with Perforce Task Streams
Steph TurnerPerforce Software
Gabe WeissPerforce Software
Lightweight Branching with Perforce Task Streams
The Demand From the Market…
Faster Delivery of Product
Lightweight Branching with Perforce Task Streams
The Impact on Development
Code QualityMerge Hell
ExperimentationFeature Creep
Lightweight Branching with Perforce Task Streams
The Solutions…
WorkflowsBranching
Tools
Lightweight Branching with Perforce Task Streams
Perforce Lightweight Branching
Some stuff we might know that you might not…
Lightweight Branching with Perforce Task Streams
Perforce Branches
Learning to walk before we run…
Lightweight Branching with Perforce Task Streams
Code base has archive files & revision records
revxrevcxrevhxrevdx
100K 300K
Revs 3xArchive
Files
Lightweight Branching with Perforce Task Streams
Branch creates revision & integ records
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
Lightweight Branching with Perforce Task Streams
For every branch
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
200K300K
Lightweight Branching with Perforce Task Streams
Even if
100K
200K
Revs 3xArchive
FilesInteg 2x
To and From
300K
300K
200K300K
200K300K
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
Lightweight Branching with Perforce Task Streams
The Metadata Upside…
Tracks Branch RelationshipsSmarter & Safer Merges
Lightweight Branching with Perforce Task Streams
The Metadata Downside…
PerformanceAdministration
Branch Policy Restrictions
Lightweight Branching with Perforce Task Streams
The Techniques to Control Metadata…
Overlay (+) MappingsObliterate
Lightweight Branching with Perforce Task Streams
Overlay (+) Mappings Branch a Slice
branched
RevsInteg 2x
To and FromArchived
FilesCode Base
Lightweight Branching with Perforce Task Streams
Overlay Branched Slice on Workspace
branched
RevsInteg 2x
To and FromArchived
FilesCode BaseWorkspace
Lightweight Branching with Perforce Task Streams
The Overlay Issues…
Where are my files?Where is the branch point?
Lightweight Branching with Perforce Task Streams
Obliterate – Identify unnecessary metadata
ArchiveFiles
IntegsTo and From
Dev Branch
Code
Revs
Lightweight Branching with Perforce Task Streams
Obliterate it!
ArchiveFiles
IntegsTo and From
Dev Branch
Code
Revs
Lightweight Branching with Perforce Task Streams
The Obliterate Issues…
Admin PrivilegesIt’s Final
Lightweight Branching with Perforce Task Streams
Lightweight Branching with Perforce Task Streams
Streams puts code into a container
P4V
RevsArchive
FilesSwarm
Server
Code Base
Lightweight Branching with Perforce Task Streams
Streams “Import” is the key…
P4V
RevsArchive
FilesSwarm
Server
Code Base
Swarm
Server
Lightweight Branching with Perforce Task Streams
3 Cool Things About Streams Import
Lightweight Protections SchemeUp-to-date FilesLean metadata
Lightweight Branching with Perforce Task Streams
Oh yeah…1 more cool thing…
Lightweight Branching with Perforce Task Streams
Workspaces generated from stream rules
P4V
RevsArchive
FilesSwarm
Server
Code Base
Swarm
Server
P4V
SwarmServer
Lightweight Branching with Perforce Task Streams
Developers Fear the “Uns”
Uncontrolled MergeUnstable Environment
Unnecessary Recompiles
Lightweight Branching with Perforce Task Streams
Workspaces generated from stream rules
P4V
RevsFileArchive
SwarmServer
Swarm
Server
P4V
Swarm
Server Integ To and From
Lightweight Branching with Perforce Task Streams
Dev Branch Issues
MetadataPerformance
Delete
Lightweight Branching with Perforce Task Streams
Demo Time
Task StreamsLightweight
Lightweight Branching with Perforce Task Streams
Before task streams
P4V
RevsArchiveFiles
Swarm
Server
P4V
Swarm
Server Integ To and From
Parent Stream
Dev Stream
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
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
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
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
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
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
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
Lightweight Branching with Perforce Task Streams
Task Stream Guidelines
Quick fixShort term feature development
No reparentingNo children
Lightweight Branching with Perforce Task Streams
Try Perforce for Free
Free for up to 20 users, 20 workspaces, forever.
Lightweight Branching with Perforce Task Streams
THANK YOU!!!
Steph Turner: [email protected]
Gabe Weiss: [email protected]
P4Ideax Forums
Lightweight Branching with Perforce Task Streams
NEXT DEV TALK
Hacking Perforce withMatt Attaway