The break with BitKeeper
For years the Linux kernel was managed with BitKeeper, a proprietary version control system granted to the community free of charge. When the free licence is revoked in 2005, Linus Torvalds decides to write a tool from scratch that meets the real needs of large-scale distributed development. In roughly two weeks Git is born — a distributed version control system (DVCS) that upends the assumptions of centralised systems such as CVS and Subversion.
The stated goal is speed: the Linux kernel comprises thousands of files and hundreds of developers spread across the globe. A centralised system, with a single server holding the complete history, introduces network bottlenecks and a single point of failure. Git eliminates both problems.
Architecture and integrity
Every clone of a Git repository is a full copy of the project’s entire history. There is no architectural distinction between server and client: every copy is a fully functional repository, capable of operating offline and synchronising later with other repositories.
Git models history as a DAG (directed acyclic graph) of commits, each pointing to a complete snapshot of the file tree — not to a list of differences. Every object in the repository — commits, trees, blobs — is identified by its own SHA-1 hash, which serves simultaneously as a name and an integrity checksum. If even a single bit changes, the hash changes, making any corruption or tampering immediately evident.
Branching and merging
In centralised systems, creating a branch is an expensive operation that often discourages experimentation. In Git, a branch is simply a movable pointer to a commit: creating one costs no more than writing forty characters to a file. This makes branching a daily operation rather than an exceptional one.
The merge model is based on DAG analysis: Git identifies the common ancestor of two branches and performs a three-way merge. When changes do not overlap, the process is automatic. Conflicts are reported explicitly, leaving the developer in control of resolution.
A paradigm shift
Git introduces a different way of thinking about version control. Every developer works in their own local repository, commits frequently without affecting others and shares changes only when they are ready. History is immutable, verifiable and distributed. For the Linux kernel and the open source community at large, it marks the beginning of a new era in collaborative source code management.
Link: git-scm.com
