Git or Perforce

There have always been a debate over which source control to use in a project, especially when it comes to projects that use binaries files like assets, images, etc.


Centralized vs Distributed Model

Git is a distributed model meaning that developer can download the project along with it's history and start creating a different version of the project that can become the "main" project ti which others can contribute. Developers can act both a "node" contributor to a project or as a "hub" by becoming the central project to which others contribute.

Perforce is a centralized model meaning that only one hub/repository can accept code, everything is stored in one place and all changes are committed to a central server.


Data management

When it comes to data management Perforce is more advantageous due to its lock feature which allows users to lock binary files. Once a file is locked, no one else can apply modification to it unless the file is released by the one who locked it.

Two users cannot modify the same file at the same time, which avoids conflict and data loss.


As for git you'll not be able to lock binaries, then for content, communication is the key. Especially when it comes to updating maps/ critical assets, just setup a chat channel in which people will share what they're working on to avoid merge conflict and data loss.

Usability


Perforce is not something easy to setup, there's certain notion that need to be understood first in order to make a clean setup. It offers a good interface from which we can do most of the operation which is one of its strengths but it take times to be familiar with.


Git, on the other hand, is more accessible to all types of user since many tools have been developed by the community that make it easier to use and to setup. And since it has a huge community, finding help or solutions to some issues is quite easy.


Cost

Actually for small company Perforce is not a good option due to its cost, which is around 500$ by user/year.


Git is free and offers plan to each target either for small teams or enterprises. The highest price is 21$ by user/month, around 252$/year. Also since it's a monthly subscription, users can cancel their plan any time they want.

Conclusion


There’s no bulletproof answer, it depends on many factors, but the bottom line is, if you have a large project that uses assets/binaries, diverse teams around the world that works together and enough cash to buy licenses for everyone then it may be best to use perforce :


  • User-friendly interface, perforce offer an interface through which you can manage your assets, code, make diff, see revision, etc.

  • Lock file feature, perforce gives the possibility to lock binary files in order to avoid conflicts when it comes to merge data

  • Centralized content, projects are stored in one place which is accessible through the server

  • Conflict files are easy to handle

For startups and medium teams, it is advised to use git :

  • Easier to configure, find help/resources.

  • Accessible for anyone who wants to setup a source control for any type of project

  • Large community and offers a good support.