lightweight branching with perforce task streams

46
Lightweight Branching with Perforce Task Streams

Upload: perforce

Post on 19-May-2015

454 views

Category:

Technology


2 download

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 scope

TRANSCRIPT

Page 1: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

Page 2: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

Steph TurnerPerforce Software

Gabe WeissPerforce Software

Page 3: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Demand From the Market…

Faster Delivery of Product

Page 4: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Impact on Development

Code QualityMerge Hell

ExperimentationFeature Creep

Page 5: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Solutions…

WorkflowsBranching

Tools

Page 6: Lightweight Branching with Perforce Task Streams

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

Lightweight Branching with Perforce Task Streams

Perforce Branches

Learning to walk before we run…

Page 8: Lightweight Branching with Perforce Task Streams

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

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

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

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

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

Lightweight Branching with Perforce Task Streams

The Metadata Upside…

Tracks Branch RelationshipsSmarter & Safer Merges

Page 14: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Metadata Downside…

PerformanceAdministration

Branch Policy Restrictions

Page 15: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Techniques to Control Metadata…

Overlay (+) MappingsObliterate

Page 16: Lightweight Branching with Perforce Task Streams

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

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

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

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

Lightweight Branching with Perforce Task Streams

Obliterate it!

ArchiveFiles

IntegsTo and From

Dev Branch

Code

Revs

Page 21: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

The Obliterate Issues…

Admin PrivilegesIt’s Final

Page 22: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

Page 23: Lightweight Branching with Perforce Task Streams

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

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

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

Lightweight Branching with Perforce Task Streams

Oh yeah…1 more cool thing…

Page 27: Lightweight Branching with Perforce Task Streams

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

Lightweight Branching with Perforce Task Streams

Developers Fear the “Uns”

Uncontrolled MergeUnstable Environment

Unnecessary Recompiles

Page 29: Lightweight Branching with Perforce Task Streams

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

Lightweight Branching with Perforce Task Streams

Dev Branch Issues

MetadataPerformance

Delete

Page 31: Lightweight Branching with Perforce Task Streams

Lightweight Branching with Perforce Task Streams

Demo Time

Task StreamsLightweight

Page 32: Lightweight Branching with Perforce Task Streams

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

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
Page 35: Lightweight Branching with Perforce Task Streams

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

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

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

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
Page 40: Lightweight Branching with Perforce Task Streams

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

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
Page 43: Lightweight Branching with Perforce Task Streams

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

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

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

Lightweight Branching with Perforce Task Streams

NEXT DEV TALK

Hacking Perforce withMatt Attaway