Search Unity

Meet Smart Locks, a new way to reduce merge conflicts with Unity Version Control

July 10, 2023 in Engine & platform | 9 min. read
Smart Locks, a new feature of Unity Version Control, enables artists to use file locks among branching to greatly reduce merge conflicts.
Smart Locks, a new feature of Unity Version Control, enables artists to use file locks among branching to greatly reduce merge conflicts.
Share

Is this article helpful for you?

Thank you for your feedback!

At Unity, we’re passionate about enabling creators to do their best work. That’s why the Unity DevOps team is excited to introduce Smart Locks, a new feature of Unity Version Control.

Smart Locks vastly reduces the painful merge conflicts commonly associated with file locks and branching. Developers have long been branching for faster and safer iteration. Now everyone, including artists, can use branching to scale projects with confidence.

Worry-free branching for all disciplines

Smart Locks automatically checks to confirm you are working from the latest version before allowing you to lock a file, so it greatly minimizes the risk of merge conflicts and empowers teams to branch without worry.

If you’re an artist creating a feature branch, a task branch, or a personal branch, Smart Locks provides the flexibility to branch and work in parallel with teammates without worrying about conflicts. You can experiment and iterate faster while your main project history remains safe.

Smart Locks helps you explore diverse workflows. Instead of changing your team to follow your version control system (VCS), you can adapt Unity Version Control to what works best for your team.

How Smart Locks works

Many users believe that simply locking or checking out a file will automatically prevent merge conflicts. Unfortunately, that isn’t the reality.

Traditional file locking mechanisms do provide protection against some conflicts, however, these file locks failed to travel branch by branch, allowing another artist to check out the same file from a different branch. This inability to travel leaves teams vulnerable to merge conflicts by not addressing the underlying workflow incompatibility with branching.

To understand how Smart Locks works, let’s first examine how a merge conflict occurs, even when teams are using file locks properly.

Before, using file locks with branching left you vulnerable to merge conflicts.
Before, using file locks with branching left you vulnerable to merge conflicts.

This scenario illustrates how teams using branching frequently encounter merge conflicts, despite their best efforts to use file locking. The result? Wasted time and lowered team morale. Smart Locks solves this problem by allowing users to define a branch as the source of truth.

Whether you are branching or working out of a single thread, the lock will “travel” across branches, following a unique development line, until it reaches the destination branch where the change is checked or merged back in. Smart Locks enforces this single line of development whether you continue working in one branch or move onto creating child branches.

With Smart Locks, you can branch without worrying about merge conflicts.
With Smart Locks, you can branch without worrying about merge conflicts.

All locking requests associated with a given file will now be aware of any new versions existing in different branches. This means you don’t have to wonder if your changes conflict with a teammate’s or if you’re working on an outdated version.

This simple and effective process prevents multiple team members from working simultaneously on conflicting versions, so no changes slip through the cracks. This helps ensure everyone’s artistic vision is considered and makes simultaneous collaboration practically painless.

You can set custom lock rules, including branch exclusion rules.
You can set custom lock rules, including branch exclusion rules.

Why should artists use branching?

Most programmers, likely familiar with Git-based systems, already understand and appreciate the value of branching. The main benefits of branching for artists is the same as those for coders.

1. Iterate faster

When you work within branches, you are effectively separated from the main history of your project. This isolation enables you to prototype and experiment safely, without having to worry about potentially breaking your project.

Safe experimentation enables you to iterate continuously and build multiple versions, so you can choose your favorite by navigating the repository history. Let the best idea win.

2. Create space for fresh ideas

Branching inherently reduces the noise of simultaneous collaboration. It makes space for the creation of fresh ideas while maintaining a relationship with the original concept. In simple terms, think of the difference between iterating in a Google Doc by yourself versus working in a single document with two hundred other collaborators.

You can generate new concepts without fear of merge conflicts, storing them within your version control system rather than working independently in your local drive or an external source not integrated with your main project.

3. Manage complex workflows

Branching enables teams to break complex workflows into digestible pieces. You can create branches to match how you have organized your project. In game development, it’s natural to partition work for easier project management. For example, you might divide work within a team by features, characters, or even whole levels. Your team can focus on their assigned work within their specific branch.

4. Scale with less friction

Partitioning work within branches enables different teams and team members to work at their own pace, in their own style, and with their own processes – all while simultaneously contributing to the greater project. This removal of friction not only makes collaboration smoother, but your team is also more likely to update your project history with greater frequency. You can ship faster and keep up with gamer expectations.

5. Understand your project’s full history

Branching makes it easier to see the full picture of your project history, while checking changes into main makes it harder to see the full breadth of changes. Branching helps you identify those changes faster.

Branch exclusion for easier experimentation

We designed Smart Locks to give all members of your team flexibility in terms of how they like to work. We also recognize that dealing with complex file locks can be a hindrance in certain situations, like the ideation and experimentation phases of the project.

That’s why, in addition to traveling locks, we’ve also built a new branch exclusion capability. This enables you to exclude branches from the locking mechanism by setting custom lock rules. When you know you will never need to merge back into the source branch, you can prototype or experiment within your branch, unencumbered by file locking restraints.

Enhanced GUI for better branch awareness

To ensure you can keep track of complex projects and enable you to clearly visualize your existing lock list, we’ve also improved the graphical user interface (GUI) on both the desktop client and within uDash. By viewing your lock history, you can easily see who created a lock, and when.

Intuitively understand your lock history with visualization enhancements.
Intuitively understand your lock history with visualization enhancements.

Additionally, we’ve placed more prominent affordances to indicate how to lock and unlock files, accompanied by helpful messages that will notify you of any existing locks on a specific file.

Helpful messages notify you of existing locks on specific files.
Helpful messages notify you of existing locks on specific files.

How to try Smart Locks

To take advantage of this game-changing feature, simply update your Unity Version Control installation to the latest release. For on-prem customers or former Plastic SCM Enterprise customers, you’ll need to update your servers and clients to fully experience the benefits of Smart Locks.

Be sure to read the documentation before you get started.

New to Unity Version Control?

Unity Version Control is an engine-agnostic version control tool with the agility to handle large files and binaries at speed. With optimized workflows for both artists and programmers in game studios of all sizes, you can improve team collaboration and increase productivity to deliver high-quality games faster and more efficiently. To get started for free, enroll in Unity DevOps (terms apply).

July 10, 2023 in Engine & platform | 9 min. read

Is this article helpful for you?

Thank you for your feedback!

Join a discussion on our Forums
Related Posts