Version Control

We’re extremely happy to announce that we’ve rolled out our integrated version control to all PlayCanvas users. With this new feature everyone now is able to create checkpoints and branches in their projects, merge between branches and view the changes you have made since your last checkpoint.

Access the version control dialog via VC button in your viewport.


We’ve been testing the feature extensively internally and we’re sure that it’s going to be a big productivity booster for your team.

Read more about the feature in our user manual.


Incredible! Thanks guys :smiley:

1 Like

have been waiting for this. Just in time for new devs joining my team

thanks playcanvas team

One concern is the size of the checkpoints, this will affect the overall remaining disk space per account, right?
I think moving my heavy assets out of the project will help with this long term.


Yes, checkpoints and branches take up additional space. In particular each open branch consumes the same space amount of space as a current copy of your project. Closing a branch frees up this space.

Checkpoints size is dependent on what has changed, if you modify large assets your checkpoints will be large.

Ah, good to see this engine is still developing. Gonna get back on soon.

Really cool feature, but I have a question:

We have a tool in-house that allow us to use source control with PlayCanvas REST API command that export projects (with the Organization feature). Can we download the content of a specific checkpoint (for instance, it returns an exported project) with a command from the Rest API as well? We would like to download checkpoints so we can use both at the same time.

Good question. The REST API lets you specify the branch from which to download, in which case you will receive the latest version in that branch.

We don’t have a way to support downloading any arbitrary version of a file. In the language of other source control systems we only give you access the HEAD of a branch.

In order to synchronize use of an external SCM, once solution is to work the other way around. Edit your files locally so that you can commit them to git (for example), then continually push the changed files to PlayCanvas. If you map a playcanvas branch to git branch you can do this without interfering with other developers.

Thank you for your answer, make sense now

I know (and understand why) it’s not possible to remove checkpoints. But if i make checkpoints in a different branche, then why i can’t remove the branche after merge to the master branche? If that was possible i can make checkpoints and remove that branche when i don’t need the checkpoints anymore.

That could be useful indeed, not sure if it’s possible or not. @will may know more.

I think @zpaul should be able to explain the story here.

A checkpoint on a branch that is merged into another branch can still be the common ancestor of two checkpoints being merged later (its contents will be used for comparison). Also keeping all checkpoints can be useful for showing history of each item/file when we implement it

The problem is the storage…

1 Like

obviously not sustainable to just keep them there because of some technical reason. Storage size goes out of control, you have to keep exporting the project with latest, starting a new one and removing former project due to the amount of checkpoints keeping all that space unecessarily

1 Like