UVCS - Solution for Ballooning Repos

Hi! What does one do with a repository that is constantly growing with very large branches that are no longer needed? Because a branch with even a single changeset cannot be deleted, one is left with branches that take up quite a lot of space.

Is the solution to move your game engine project to a new repository and delete the previous one?

I doubt that this is true. Any version control system I’ve ever used allows you to delete branches. Or commits, or just about anything.

Are you sure you are not misreading a warning when trying to delete the branch?

A branch should not occupy more space than the differences committed to it. If you make a branch to a 10 GiB project your repository will grow by a few KiB of organizational data, no more. If you push a new 1 GiB file to the branch, then your repository will grow by 1 GiB naturally. If you delete that file, your repository will still occupy the same disk space unless you also purge deleted files - since normally you need to trust source control to be able to recover deleted files.

I would be surprised if VCS works differently in any of these aspects than git, CVS, Perforce, Subversion, etc.

Hi CodeSmile,

Thanks for replying to our thread! Have you had a chance to actually work with Unity VCS? We attempted to delete a branch but instead got a message that deletion is not possible because there are changesets inside this branch. We then found the following article on Plastic SCM’s (now called Unity VCS) website:
https://blog.plasticscm.com/2018/08/why-we-dont-delete-branches-in-plastic.html

Although the blog post is over 6 years old, it appears that the inability to delete branches still hasn’t changed.

Can someone please confirm this?

Hello, we released this year a few features to be able to delete branches:

Plastic SCM - Release Notes - 11.0.16.8906 11.0.16.8622
Plastic SCM - Release Notes - 11.0.16.8906 11.0.16.8577

But still the following limitation persists:

Plastic SCM will prevent removing the changesets in a branch under the following circumstances:

  • The changeset zero is included in the operation (this is, you are trying to delete the main branch).

  • One or more of the changesets have children outside of the branch (that is, the branch has child branches).

  • One or more of the changesets in the branch are the source of a merge, and the destination changeset of the merge falls outside of the branch.

  • One or more of the changesets in the branch are pointed to by a label.

  • There are one or more shelvesets created from a changeset in the branch.

You can also purge old data: Trim your repository size with Purge

Thank you staff members for your help!

We are using Unreal Engine and our issue falls under the following use case:
“One or more of the changesets in the branch are the source of a merge, and the destination changeset of the merge falls outside of the branch.”

This is because we create feature branches that then have to be merged back into the main branch. We’ll look into the Purge option.

I suppose the final solution is to copy over the latest project files into a brand new repository and delete the previous repo. If someone knows of a better way to achieve that without deleting the repo, please let us know.