Git LFS Performance Optimizations with Anchorpoint and Assembla
How to optimize Git LFS for faster transfers in large-scale, game-development related projects.
Version control systems are essential for managing code changes, coordinating teamwork, and maintaining project history in Unreal or Unity, whether you're working alone or in teams. Due to the nature of instant syncing cloud storage, working from a Dropbox or other shared server can cause problems, so it is recommended to use SVN or Git.
Subversion (SVN) is a centralized version control system released in 2000 that replaced CVS. It has been widely used in enterprise environments. It was a standard in the past due to its high access controls, file locking, and strict control over repository access and workflows. However, its adoption has declined in favor of Git.
Introduced in 2005 by Linus Torvalds, Git is a distributed version control system that has become the industry standard, particularly in open-source development. It has the largest community and ecosystem, and with the right tools and cloud providers, it can adapt to any type of project.
Disclaimer: Although our Anchorpoint app is Git-based, we will do our best to remain objective.
SVN natively supports file locking. This is useful when working with large binary files, especially in Unreal, where merging changes is nearly impossible. Initially, Git was lacking in this department, but now there are ways to simulate file locking with hooks, Git LFS, or, more importantly, Git apps like Anchorpoint, which has this feature and is easy to use.
SVN stands out in this area. You can set fine-grained permissions for specific directories and files in the repository. In contrast, Git’s access control is more at the repository level. While you can manage branch protections on platforms like GitHub or GitLab, deep per-folder permissions aren’t as straightforward. However, they can be approximated using separate repositories with submodules, Git hooks, or specialized server-side tools like Gitolite.
Git has a massive and thriving community. There’s an endless supply of tutorials, GUIs, integrations, apps, and extensions. Every CI/CD tool supports Git, and many cloud repository providers, such as GitHub, GitLab, Gitea, and Azure DevOps, are available for free for small projects.
SVN’s ecosystem is smaller but stable. It has good tools (TortoiseSVN is still popular) and a loyal user base. However, innovation is slower compared to Git’s rapid growth. This is mostly due to its centralized nature; most people use SVN on their own hosted servers. However, there are cloud hosting services, such as Assembla.
Both Git and SVN are free and open-source software that can be self-hosted. However, Git is often more affordable for cloud hosting because of free tiers from major providers like GitHub, GitLab, and Azure DevOps. SVN hosting options are more limited, so you may have to pay sooner. For example, Assembla's plans start at $6 per month per user.
Git is usually faster because it’s a distributed system. Most operations happen locally, so there's no need to hit a server. Commits, diffs, and branches are lightning quick. SVN depends heavily on network speed since most actions communicate with the central server. You'll feel it over a slow connection or VPN.
SVN works at the file level rather than the project level. In Git, a version of a project, called a "commit," contains multiple files. SVN allows you to select only the files you want to change. However, it is recommended that you download all new versions of files when working on a project.
Git promotes branching and merging as part of its daily workflow. This allows for feature branches, pull requests, and continuous integration without interfering with each other. In contrast, SVN leans toward a trunk-based approach, where everyone commits to the main line (trunk) and keeps it stable. Branches exist, but they are used less frequently.
A basic Git workflow includes the following steps
Anchorpoint essentially reduces the Git workflow to two buttons: download and publish. Command lines and other Git applications add more steps and granular control for developers.
Git offers speed, flexibility, and strong community support, making it the preferred choice for most modern software projects, while SVN’s strengths lie in its simplicity, robust access controls, and native file locking capabilities, which remain valuable in certain industries and workflows. Ultimately, the choice between Git and SVN should be based on the specific requirements, workflows, and constraints of your team or organization.