> ## Documentation Index
> Fetch the complete documentation index at: https://docs.diversion.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Coming from perforce

This guide covers migrating your Unreal Engine projects from Perforce to Diversion, including feature comparison and a step-by-step migration process.

## Why Consider Migration?

Diversion offers the same core version control functionality as Perforce with key improvements:

* Smaller installation footprint (for the client, no need to set up any server)
* Significantly faster **commit** speeds\
  *(Diversion continuously uploads in the background; committing is the moment you save a snapshot into your history)*
* Simplified UI focused on essential workflows
* Better user experience for artists and non-technical team members

## Feature Comparison

| Feature                       | Perforce                            | Diversion                                                       |
| ----------------------------- | ----------------------------------- | --------------------------------------------------------------- |
| **Client Installation Size**  | Large, complex installer            | Small, easy installer                                           |
| **Learning Curve**            | Steep, overwhelming UI              | Intuitive, streamlined interface                                |
| **Commit Speed**              | Standard                            | Significantly faster                                            |
| **Visual Diffs**              | ✅ Available                         | ✅ Available                                                     |
| **Changelist Management**     | ✅ Available                         | ✅ Available                                                     |
| **Locking Model**             | Hard (exclusive) lock               | Soft lock (non-blocking) + [Hard Locks](/hard-locks) (optional) |
| **History Tracking**          | ✅ Complete history                  | ✅ Complete history                                              |
| **Unreal Engine Integration** | ✅ Native plugin                     | ✅ Native plugin                                                 |
| **User Experience**           | Complex, tool-heavy                 | Clean, action-focused                                           |
| **Artist Friendliness**       | Challenging for non-technical users | Designed for all skill levels                                   |

## Soft Locking vs. Hard Locking

Diversion automatically indicates when a file is being edited (**soft lock**)—no one needs to explicitly take authorship.

You’re **not blocked**: you can confirm editing via the prompt and proceed.

If a teammate’s version was committed, you can merge it into your branch (auto-merge on same branch when there’s no conflict).

Some teams require hard locks; see [Hard Locks](/hard-locks) for details on configuring exclusive file locking.

**Why this matters:**\
In Perforce, you must explicitly take authorship of a file (check-out). If someone else has it locked and is unavailable to release it (vacation, sick, etc.), you’re deadlocked.\
In Diversion, the backend automatically and implicitly signals active edits without blocking your work.

***

## Migration Options

If you have a project in Perforce and want to move over to Diversion, there are two options to do so:

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image5.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=bd9d6d8a38664160b309c178701f5c14" alt="" width="400" height="276" data-path="images/perforce_comparison/image5.png" />

**Option 1: Import From P4** – Brings over your full Perforce history. Contact the Diversion team to complete this process.

**Option 2: Create New Repository** – Start with a clean slate without history. Faster setup for immediate use.

For this guide, we'll use Option 2. Browse to your local Perforce project path:

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image1.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=a67a544b389960f840d7daba6f326d0e" alt="" width="1117" height="556" data-path="images/perforce_comparison/image1.png" />

After locating the project folder previously used with Perforce, choose **Create from Existing Folder** in Diversion.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image48.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=4701eee640b2098b8b74dd2890c227be" alt="" width="1390" height="922" data-path="images/perforce_comparison/image48.png" />

Once the workspace is created locally from the chosen path, you can invite collaborators by providing their email addresses.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image6.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=3f597bc86f144931ff93250574a18e46" alt="" width="1479" height="762" data-path="images/perforce_comparison/image6.png" />

It’s simple to invite collaborators to your project.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image54.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=a5b826e3db0f1d992d0292c2c1618ec8" alt="" width="1479" height="762" data-path="images/perforce_comparison/image54.png" />

Once your Workspace is set up, just select your project from the list. Diversion will automatically launch the project management panel, allowing you to choose exactly what to commit to your history.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image17.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=e09b17fc7396cf61e8a94221890ce981" alt="" width="1479" height="916" data-path="images/perforce_comparison/image17.png" />

If you're using Unreal, Godot, or Unity, Diversion sets up the `.dvignore` file for you, skipping folders that are temporary or rebuilt by the engine.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image11.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=0f089d87f27df5e357418cf556eef162" alt="" width="1479" height="916" data-path="images/perforce_comparison/image11.png" />

## Commit Time

With Diversion, your workspace is continuously synced to the cloud. **Committing** is the moment you choose to save a snapshot into history. Because of Diversion’s architecture, commit operations are fast, even for large UE projects.

As of 5.6, Diversion includes a dedicated **Commit** button for faster commits from the UI.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image29.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=3ae5a9e4d95baa89b6f89b50aa954a6b" alt="" width="1479" height="916" data-path="images/perforce_comparison/image29.png" />

Compared to Perforce, the commit speed is significantly faster.

The entire project was committed to history in a fraction of the time!

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image19.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=113a26bf95810083af65450c14655f3f" alt="" width="1479" height="916" data-path="images/perforce_comparison/image19.png" />

Now your project lives both on your machine and in the cloud, ready for collaborative work.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image36.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=ddcdc6aa918a8906909c4f4ec9744e7f" alt="" width="1462" height="783" data-path="images/perforce_comparison/image36.png" />

***

## Unreal Engine Integration

To integrate Diversion with Unreal Engine, go to [FAB](https://www.fab.com), search for “Diversion,” and download the plugin.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image42.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=fd729f180c311a8c236f47634e11d62c" alt="" width="1999" height="1048" data-path="images/perforce_comparison/image42.png" />

The plugin is downloaded and installed through the Diversion Version Control panel. Click **Install to Engine** to integrate it with Unreal Launcher and enable Diversion support across all your Unreal projects.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image44.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=aa0c61bef5bd113a6c589e1b48b4414e" alt="" width="1663" height="717" data-path="images/perforce_comparison/image44.png" />

Open the Plugins panel in Unreal Engine, type “Diversion Version Control” in the search bar, enable the plugin, and restart Unreal Engine to apply the changes.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image20.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=26a67456d63362feac9fd95bbf10d777" alt="" width="1999" height="1085" data-path="images/perforce_comparison/image20.png" />

From the main toolbar in Unreal Engine, navigate to **Tools > Change Revision Control Settings…** to configure your version control system to Diversion.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image7.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=03e8fa78cb6eb6c1029124e6ecfd281e" alt="" width="1999" height="1071" data-path="images/perforce_comparison/image7.png" />

Diversion is now active and ready to manage your project’s version control.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image21.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=7a0e1f4909acd64d51c9b175fe2a1624" alt="" width="1999" height="1074" data-path="images/perforce_comparison/image21.png" />

***

By selecting Diversion as your version control provider, Unreal Engine automatically detects the configuration and establishes the connection without requiring any manual setup.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image12.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=98fbeb2d3272f111450fec23afe6b4e7" alt="" width="1999" height="1078" data-path="images/perforce_comparison/image12.png" />

In Unreal, **Revision Control > Check In** performs a **commit**.\
In Perforce, an exclusive lock corresponds to **check-out**; Diversion uses **soft locking** (non-blocking indicators) and supports merge-based collaboration.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image33.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=066a5639ddf2590157366bc5da09eecb" alt="" width="1999" height="1078" data-path="images/perforce_comparison/image33.png" />

File comparison is one of Perforce’s most powerful tools. In Diversion, you get the same benefit: go to **Revision Control > Diff Against Depot** to visually inspect differences between your local file and the version stored in the repository.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image22.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=fdad5c4d594db27f5de19bbe98c4eb23" alt="" width="1999" height="1077" data-path="images/perforce_comparison/image22.png" />

Diversion provides a similar diff panel for visually inspecting changes made to each file.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image9.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=0f8b541e921a9c9e7c688116ace02c7a" alt="" width="1999" height="1079" data-path="images/perforce_comparison/image9.png" />

To view pending changes, open the **View Changes** panel at the bottom-right of the interface or navigate to it via the Tools menu.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image18.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=cb2d7c2407d444eeb66fdf451f865295" alt="" width="1999" height="1074" data-path="images/perforce_comparison/image18.png" />

The **View Changes** panel shows all modified assets in the scene. Double-click any entry to automatically locate it in the Content Browser.

<img src="https://mintcdn.com/diversion-2/zdFp0wmCrPve5JMp/images/perforce_comparison/image53.png?fit=max&auto=format&n=zdFp0wmCrPve5JMp&q=85&s=6368d306eb7f04889173dad92129bb82" alt="" width="1347" height="786" data-path="images/perforce_comparison/image53.png" />

Each file includes a complete interactive history showing all changes made throughout the branch.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image37.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=89219e5d33df806ee62cf2cb8cce2ea2" alt="" width="1611" height="917" data-path="images/perforce_comparison/image37.png" />

You can modify the Changelist description to summarize your changes before submitting to the repository.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image25.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=eb7c4aac2737aced63939dc0d52683e4" alt="" width="1548" height="945" data-path="images/perforce_comparison/image25.png" />

You can visually validate your Changelist or revert file changes directly from the Unreal Engine interface.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image2.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=a4f484da9cadd9d1c16e0d185d081596" alt="" width="1999" height="1075" data-path="images/perforce_comparison/image2.png" />

You can commit changes immediately or save the changelist with a description for later submission.

<img src="https://mintcdn.com/diversion-2/tNxAwm8NrThaCp35/images/perforce_comparison/image35.png?fit=max&auto=format&n=tNxAwm8NrThaCp35&q=85&s=42f8427afaacd49f092ee29a17a14e24" alt="" width="1999" height="1077" data-path="images/perforce_comparison/image35.png" />
