Jump to content

Plastic SCM - Avoid having two heads in main branch while developing with XLinks

Bionic Ape

Recommended Posts

We are a studio developing a set of projects in Unreal Engine. These projects share most of the Plugins, so each plugin has its own Cloud Plastic Repository and we reference them via XLinks.

We make these XLinks all editable so when changes are made in one project, they are checked in to the Plugin's repo.

The problem is that if two projects are working on the same Plugin, when they merge 2 heads are created inside the Plugins repo (the one referencing via XLink), needing to go to the plugin, merge the head, and then update the Xlinks accross all the projects.

A second problem is that we normally have around 10 Plugins linked via XLinks, so when we need to update the Main we need to go and do that manually for each Plugin and each project.

I love XLinks, I think are really good, but these two problems make friction and we developers end up having errors and tedious merges and updates.

Is there anything I can do to ease our updates? Is there a script or something we can write to help the day to day work?


Link to comment
Share on other sites

Hi Carlos,

Thanks for sharing this blog post.

The post certainly reflects most of the scenario we have. Instead of "Engine" we have Plugins, and instead of one we have multiple and a subset shared.

This solution was something I was considering, and I actually did some tests. Please let me explain my findings.


For 2 Games GameA and GameB and 5 Plugins Plugin1 to Plugin5 we can have that GameA has Plugin 1-3 and GameB has Plugins 1, 3 and 5.

Let's say that there are 10 people working in different features in each game. And 2 developers are working in parallel in the same Plugin (Plugin1) but fixing 2 different things. Each developer is working on their branch in GameA and GameB. When the developer from GameA finishes, under that scenario, we merge the changes from /main/GameA to the branch /main/GameB inside the repo Plugin1 and then we update the XLink of Plugin1 of Game1 and Game2 to point to the latest changeset of each branch.

Last time I checked, when developer B finishes with their changes, and merge them with main in GameB 2 heads are also created in /main/GameB.


I might be wrong, and I skipped something, but I remember it did create 2 heads in the branch "/Main/GameB".


Stopping all developers to merge the different XLinks seems to me a bit of a challenge. 

Link to comment
Share on other sites

  • 3 weeks later...

Hi, sorry for the delay,

If I properly understand, you are following a similar scepario than the one from from blog post but you are still facing some scenarios where there are two heads in the main branch?

On 1/5/2023 at 5:24 PM, Bionic Ape said:

Last time I checked, when developer B finishes with their changes, and merge them with main in GameB 2 heads are also created in /main/GameB.

I don't understand how just by merging a branch you can end up with two heads. Do you have a reproducible scenario to check so we can connect and debug it?



Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...