Version control is the art of managing changes to
information. It has long been a critical tool for programmers,
who typically spend their time making small changes to software
and then undoing those changes the next day. But the usefulness
of version control software extends far beyond the bounds of the
software development world. Anywhere you can find people using
computers to manage information that changes often, there is
room for version control. And that's where Subversion comes
into play.
This chapter contains a high-level introduction to
Subversion—what it is; what it does; how to get it.
Subversion is a free/open-source version control system.
That is, Subversion manages files and directories over time. A
tree of files is placed into a central
repository. The repository is much like
an ordinary file server, except that it remembers every change
ever made to your files and directories. This allows you to
recover older versions of your data, or examine the history of
how your data changed. In this regard, many people think of a
version control system as a sort of “time
machine”.
Subversion can access its repository across networks, which
allows it to be used by people on different computers. At some
level, the ability for various people to modify and manage the
same set of data from their respective locations fosters
collaboration. Progress can occur more quickly without a single
conduit through which all modifications must occur. And because
the work is versioned, you need not fear that quality is the
trade-off for losing that conduit—if some incorrect change
is made to the data, just undo that change.
Some version control systems are also software configuration
management (SCM) systems. These systems are specifically
tailored to manage trees of source code, and have many features
that are specific to software development—such as natively
understanding programming languages, or supplying tools for
building software. Subversion, however, is not one of these
systems. It is a general system that can be used to manage
any
collection of files. For you, those
files might be source code—for others, anything from
grocery shopping lists to digital video mixdowns and
beyond.