We’re working on a project with Unreal Engine and decided to move from Git to Perforce as our SCM, but we’re used to distributed SCM.
So I was wondering if it’s possible to know what branching model are you using at Epic Games, or if you can give us some advise on choosing a proper model to work with Perforce on a UE4 project.
We’ve our P4 server up and running, and our project submited to our depot with proper permissions and ignores.
Dev (or main/trunk/whatever you want to call it), where you do all your day to day development work.
Release, where you place copies of your Dev branch (via integrating or just paving the branch) for milestones, alpha/beta, etc. This is meant to be a stable version of your game.
Integrate (or Vendor/whatever), where you place new copies of UE4, update your project to work with the new revision, and then integrate that back into Dev.
Could you further clarify the purpose of the Integrate branch? Is it just for updating the project to work with external updates? (UE4, other third-party libraries, etc).
Exactly. If you have a team, you don’t want to prevent everyone from working whenever some 3rd party update hits (depending on the size of your project it could take a few days to a few weeks to get things working smoothly with your already existing code). The integrate branch lets you … integrate… the new 3rd party code, get everything working, and then you can move that into your Dev branch with minimal downtime for the team.