From CVS to Git, thirty years of source control
This story provides a firsthand journey through three decades of source control, from "zip file branches" to the ubiquity of Git, explaining the painful lessons that shaped each iteration. It resonates on HN by tapping into shared developer history, recounting the triumphs and traumas of tools like CVS and Visual SourceSafe, and celebrating Git's unexpected, rapid rise. The narrative explores why, two decades later, Linus Torvalds's ten-day project remains unchallenged as the industry standard.
The Lowdown
The article offers a "lived from inside" account of thirty years of source control, tracing its evolution from rudimentary ad-hoc systems to the distributed model dominated by Git. It begins by vividly describing the chaotic pre-VCS era, characterized by manual file versioning with dated zip files and network share conventions like FINAL_REALLY. The author then proceeds through the early formal systems like SCCS and RCS, highlighting their lock-based approach and the introduction of fundamental concepts like deltas and check-ins.
- CVS's Concurrent Chaos: Details the rise of CVS as the first scalable system for concurrent edits in open source, despite its severe limitations including non-atomic commits, slow branching, and untracked renames.
- Visual SourceSafe's Fragile Reign: Explores the parallel commercial track of VSS, infamous for its lock-based concurrency and frequent database corruption, yet pervasive due to its integration with Microsoft tools.
- Subversion's Near Victory: Presents SVN as "CVS done right," fixing atomic commits, proper branching, and directory versioning, but ultimately limited by its centralized model.
- Git's Genesis and Revolution: Recounts the dramatic origin story of Git, born in ten days from Linus Torvalds's frustration with BitKeeper's licensing, introducing the distributed, content-addressed, and fast model that redefined version control.
- GitHub's Cultural Dominance: Explains how GitHub transformed Git from a powerful tool into a cultural default through its pull-request workflow, social features, and network effects.
- Git's Enduring Legacy: Assesses Git's current unchallenged status, acknowledging improvements to the tool while noting the lack of a fundamental successor to its core DAG-of-commits model. The author concludes with a personal reflection on the cost of each system and Git's liberating impact, even when user error still leads to lost code.
The author concludes by affirming Git's remarkable endurance, noting that despite being twenty-one years old and born out of an open-source crisis, its fundamental model remains robust, with no true successor on the immediate horizon. The article emphasizes that the remaining challenges are often user-error driven, a significant testament to Git's design.
The Gossip
Golden Age Grumbles and Good Old Days
Commenters shared nostalgic memories and personal experiences with older source control systems, some even expressing a preference for their simplicity in specific contexts. One user reminisced about RCS, while another praised Subversion for its local repository capability and linear revision numbers, finding Git "too much extra friction" for solo projects. Another comment highlighted how CVS's painful branching ironically encouraged trunk-based development, a practice now considered modern.
Historical Honesty and Temporal Takeaways
The discussion acknowledged the accuracy of the article's historical account, with one commenter providing a detailed timeline of SCM adoption. This user also offered a meta-observation about the tendency to focus on the "start" of tech lifecycles, which is often shorter but more impactful, rather than the longer, mature phases, suggesting Git's reign will continue for decades.
Website's Visual Vexations
At least one commenter took the opportunity to critique the blog post's website design, specifically pointing out that the animated background was distracting and made the text difficult to read. This is a common pattern on HN where presentation can sometimes overshadow content.