March 10, 2017

Helix Streams Webinar Q&A


You Want Answers? I Want the Truth!

At Perforce, we're pretty sure you can handle the truth. 

Fresh off our latest Helix Streams Webinar, Streams Revisited, I covered how users leverage the Helix Visual Client (P4V) stream technology to optimize their workspace clients, enhance branch/merge operations, and add component-based design efficiency.

And I’m proud to report the webinar was a rousing success, with lots of questions along the way. So much so, I wanted to run through a few queries now.

Want to learn more about the agility and stability of Helix Streams following the read? You can still catch the webinar recording on-demand. If you already have your answers, download our latest update, Helix Visual Client (P4V) 2017.1. Still have questions? Contact us and we'll get back to you right away. 

So, without further ado, and in no particular order, our collection of questions from webinar attendees:

Does Perforce offer private/local commits?

Great question. Yes. Perforce does. 

Streams has three ways it can make this happen –- which one you use will depend on your specific workflows.

First, shelves can be used for private commits, except we wouldn’t technically call it a commit, but rather saving a state on your workspace. Shelving enables you to store copies of open files temporarily in the shared Perforce repo without checking them in, which is perfect for taking and restoring snapshots of in-progress work and reviewing code before check in.

Second, the task branching available with Helix Streams, where you create a child code line from a parent, can be used for that purpose. However, your commits won’t be visible until they are propagated upstream.

Lastly, with Helix DVCS functionality, you can take a task stream offline, make local commits, and then push them back. Voilà!

Where can I find more information on how to utilize virtual streams for widening the included assets in a stream?

The import feature with Helix widens the stream. 

Here’s a link to documentation on our import feature. 

How can virtual streams help in Component Based Development?

Virtual streams can help in two ways, and they each are dependent on where your components are housed:

Option 1: If all the components live in one stream, then virtual streams are used to split out an individual component or a subset of components. This follows the “Product is King” principle: one product, many specific components of that product

Option 2: If all components have their separate mainline, then “Components are King.” Virtual streams can be used to test out a set of components or create the product out of the main code and selected product components.

Does Helix restrict the number of streams or complexity of workflow?

Helix does not apply any physical restrictions on the number of streams.

That said, for the sanity of your product managers, team leads, etc., it might make sense to split them over several stream depots for organizational purposes. But Helix offers the performance measures that cater to your workspace preferences.

Is there a way of "archiving" old streams to remove them from the Streams View?

Absolutely. The spec depot, which creates an indelible historical marker of whatever stream spec you choose. Once you have both a versioned stream and the stream history, simply delete the stream spec.

The underlying data is now preserved. To bring the stream back again, simply recreate the stream from the spec depot. Take note, you cannot reuse the same stream name, so it behooves you to follow a sensible naming convention.

We are currently using a standard depot for our development. Is there a way of converting our existing depot to a stream depot?

It’s easier to branch existing code into the new stream structure because you can follow the old history across the integrations. Streams are more about the future -- where should I put my code, how does it flow to other streams -- than about the past. 

Do you have any webinars that show a practical example of streams, please?

Yes. Please check out our additional resources on the website. If your questions aren’t answered from our resources, let us know what you’d like to see.

We’re always looking for other engaging webinar topics; we’re also available for customer consultations.

Any plans for Swarm to support task streams?

Swarm does support task streams for reviewing committed work. However, by the nature of task streams, all uncommitted work is hidden.

The thinking behind task streams is to offer developers an independent workspace where they can complete work independently. Following that, you create a review for the integration once more into the backing stream.

How do developers using development streams that share mainline path preferences know when the mainline path preferences have been updated? How do they know to select "Get the latest revision"?

Generally, I would advise using the P4V Dashboard to keep track of changes you need to sync to your workspace.

I may be understanding your question in two ways, so I hope one of them is your query.

If this is: How do I know when my parent stream is updated? The stream graph arrows turn green.

Or if it’s: When do I know if any imported codepaths are updated? The revisions turn yellow.

How are streams different or similar from workflows that use published client specs for teams to work on a project/release/task?

Similar on the workspace side of things, but easier to manage, but much more powerful for branches.

Keep in mind, a workspace will always become inherited from the stream.

Can more than one person work on a task stream at the same time? 

Yes, but I don't like the idea of shared workspaces. It can lead to all kinds of troubles. I prefer to keep task streams private. But Virtual Streams won’t limit your ability to craft your unique workspace.

What is the best way to manage stream graphical representation over time? We already have 100's of streams and the display is rather busy.

There’s a whole section on tools for searching and filtering here.

Suffice it to say, you can use a filter. P4V will remember.


If you're looking for easier, more intuitive access to your versioned files, then the Helix Visual Client (P4V) application is for you.

Offering complete visibility and control over your digital assets, P4V is a streamlined desktop app that can boost productivity and development speed in any workspace.

To learn more, visit our product page or contact us.

Happy hacking!