August 10, 2012

Task Streams


Task Streams are going to be a big win for developers by giving them a private, sparse branch to work where content isn't branched until it has been changed. Task Streams will also give developers a simple workflow that aligns nicely with agile development needs. Before we could implement sparse branches in Perforce, we first needed to have a good container for these branches and we now have that container with Streams. Although Task Streams will work cohesively with the streams model, they will also work with ‘classic’ Perforce benefiting customers who have not yet transitioned to streams.

Many of our customers have codelines with 100K+ files and 1000+ developers branching 2-5 times per week. This quickly adds up. Perforce is able to help organize all of these branches into tidy compartments using streams, a nice advantage over other SCM systems that don’t provide easy organization such as git, SVN, and ClearCase. (More details on that in my next post.)

Now that Perforce has committed to this feature for our 2013.1 release, I've started talking to our beloved users to get their feedback both on Task Streams and on the rest of the Streams roadmap for 2013. We're eager to speak to our early Streams adopters and hear what you want enhanced in order to make streams even better for you. So far the response has been very enthusiastic, confirming that we’re on track with our requirements. Our users are happy that we're asking for their feedback at this early stage and their input is very much appreciated. If you'd like to provide your feedback or learn more about the Task Streams plans, please take this survey and give us your email address and we’ll schedule some time to talk.

start survey

More Details

Perforce has offered methods to clean-up the unchanged branched files using the obliterate command for a long time. Now this clean-up is going to be oh so much easier with Task Streams. When branching with Task Streams, the uninteresting branched data will be put into private tables instead of public tables and the private table entries will be easy to clean up. We'll actually offer 2 ways to clean up: 1) deleting the task stream which effectively obliterates all of the uninteresting branching data or 2) unloading the task stream which moves the uninteresting branching data to the unload depot from where it can be reloaded if needed. When using the unload option, users will have the ability to recreate the Task Stream in its full representation if needed.

task streams