Chapter 20. Effective Version Control
Everything changes, nothing perishes.Ovid
Version control, to the developer, is like eating and breathing; like a source editor and compiler. It’s an essential part of daily development life.
Version control is the process of managing multiple revisions of a set of files. These are commonly the source files for a software system (so it is often called source control), but it could just as easily be revisions of a document tree, or of anything else you’d store in a filesystem.
This is a simple enough facility. But a good version control system, used well, brings us many benefits:
-
It provides a central collaboration hub, orchestrating how developers work together.
-
It defines and publishes the state of the art; no code has been integrated unless it is stored in the system. Other tools link into this update feed—for example, continuous integration, release engineering, and code audit systems.
-
It maintains a history of the work on a project, archiving the exact contents that went into each specific release. It is a code time machine.
This facilitates software archaeology, tracing the changes in files to work out the changes that comprised a particular feature. It catalogues who changed each file, and why.
-
It provides a central backup of your work.
-
It provides the developer with a safety net. It leaves room to experiment, to try changes, and roll them back if they do not work.
-
It fosters a rhythm and cadence of work: you do a chunk ...
Get Becoming a Better Programmer now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.