Do you have any best practices you can recommend for maintaining build integrity?
Thomas Félix: For a small company like ours starting out, we knew we couldn’t afford to have broken builds because we submitted bad data or code to the main branch.
With Unity Version Control, we never work in the main branch. We’re always in control of it, it’s always stable, and the mergebot actually does most of that work for us. That really resonated with us when we were trying it out, and it’s one of the first things we put in place, even when we were just five people working on the main build. It’s worked really well: The main branch is almost never down, and it’s been like that for almost two years now.
How does Unity Version Control handle speed when working with large files and switching between branches and workspaces?
Thomas Félix: In terms of task branches and switching back and forth, that works well, too. It takes a bit of time for people to get used to this workflow – task branches are a new concept to many people, and it’s maybe not as fluent immediately for artists as it is for programmers.
That being said, every week – not every day – we do catch small problems through mergebots and our CI/CD processes, but they never enter the main branch or break the build. It takes a bit of time to get used to, but working in one branch will always be quicker than working across two – not by much, but if you step back and look at your pipeline as a whole, you start to realize it’s a much, much better way of working. At least for us, as a small-to-medium-sized company, it’s perfect.
So there’s a culture and learning change you have to make to move to continuous deployment, but it seems like you’re saying you’ve already caught a lot of bugs or other potential issues before they even hit main.
Thomas Félix: Totally. I would never go back to one-branch development. A team like us just can’t afford to spend days debugging or fixing problems that hit main.
When we interviewed Apocalypse Studios, they discussed the “culture shift” that task branch workflows can require. They were using Perforce before Unity Version Control and talked a lot about branches versus streams. What’s your take on that?
Thomas Félix: Branches and streams are quite different to me. If Unity Version Control didn’t exist, we could probably build something around streams and try to get the same thing going, but it would be complex and error-prone. In Unity Version Control, it’s much easier and much safer, because branching is what it’s built for.
In Perforce, streams are the equivalent of tasks. If you’re super technical, you can make it work, but I would never put that in the hands of artists. With Unity Version Control, currently we have more than 1,000 branches – most of them are archived, and we have about 10–15 open at any given time. I’m not sure I’d like to have 1,000 project branches in Perforce.
What challenges do you anticipate as you move further along in development? What challenges have you faced already?
Patrice Beauvais: As we mentioned, people aren’t immediately used to the task branch way of working. For artists, it’s really new to them, so we’re careful to explain how it works and why we’re doing it.
Thomas Félix: That’s true. People weren’t resistant to it or anything, but it’s definitely a cultural switch. Anyone looking to switch to Unity Version Control, like we did, needs to take that into account. It’s a better way of working, but you have to be willing to think outside the box. We started fresh, from pretty much nothing – no office, no infrastructure, and a very small team – so it was a little easier for us than it might be for other studios. Building your infrastructure in the cloud sounds cool, but it comes with challenges in terms of iteration time, costs, setup, security…. In the end it’s a win, but it took us some time to get a reliable workflow up and running.
Source: Unity Technologies Blog