Why Chromium Switched from Subversion to Git
In 2014, the Chromium project officially transitioned its version control system from Subversion (SVN) to Git. This massive migration was driven by the need for faster performance, easier branching and merging, improved infrastructure scalability, and a strong preference from the developer community for a distributed workflow. As the Chromium codebase and contributor base grew exponentially, Subversion could no longer keep pace with the demands of modern browser development, making the switch to Git a necessary evolution.
Overcoming Performance and Scale Bottlenecks
Chromium’s codebase is massive, consisting of millions of lines of code and a rapidly growing history of commits. Because Subversion is a centralized version control system, common actions like viewing commit history, checking logs, or generating diffs required communicating with a central server over a network. This created severe latency for developers working globally. Git, being a distributed system, stores the entire repository history locally on the developer's machine. Moving to Git made these daily operations nearly instantaneous, drastically improving developer productivity.
Superior Branching and Merging
Developing a modern web browser requires constant experimentation, feature isolation, and rapid iteration. In Subversion, creating branches was a heavy, server-side operation, and merging those branches back into the main trunk was often slow and prone to complex conflicts. Git’s core architecture is built around lightweight, local branching. By switching to Git, Chromium engineers could create, merge, and delete branches in seconds, allowing them to work on multiple features simultaneously without disrupting the main codebase.
Eliminating the Fragile git-svn Bridge
Long before the official migration, the vast majority of Chromium
developers were already using Git locally. They achieved this through a
workaround tool called git-svn, which allowed them to use
Git commands on their machines while syncing changes back to the central
Subversion server. However, maintaining this bridge became a major
headache for the Chromium infrastructure team. It was slow, prone to
corruption, and complicated the automated commit queue. Transitioning
natively to Git eliminated the need for this fragile middle layer and
simplified the entire development workflow.
Reducing Central Server Load
Chromium relies heavily on automated build bots and continuous integration systems that constantly poll the repository for changes. Under Subversion, the sheer volume of developers and automated systems hitting a single central server caused frequent slowdowns and outages. If the Subversion server went down, all development halted. Git's distributed nature allowed Google to scale its infrastructure more effectively, distribute the network load, and remove the single point of failure that plagued their Subversion setup.
Unifying Google's Open-Source Tooling
At the time of the transition, Google was looking to standardize the tools used across its major open-source projects. The Android project was already successfully using Git alongside Gerrit for code reviews. Migrating Chromium to Git allowed Google to unify its infrastructure team's efforts, use the same hosting and review tools across both Android and Chromium, and streamline security and maintenance. Additionally, the move to Git provided the necessary performance foundation to later merge the Blink rendering engine repository directly into the main Chromium repository, further simplifying the project's structure.