If you're a newcomer to Subversion, we recommend you to read more on Subversion in the official Subversion book, to which we often make references in our articles. Also visit the Subversion home site for the firsthand information on the Subversion project.
What Is Subversion For?
The first question a newcomer to Subversion may ask to himself - What is this and how can I use it in my work?. Speaking shortly Subversion can be characterized as a centralized system for sharing information. At its core is a repository, which is a central store of data. The repository stores information in the form of filesystem tree - a typical hierarchy of files and directories. Any number of clients connect to the repository, and then read or write to these files. By writing data, a client makes the information available to the others; by reading data, the client receives information from others. The following figure illustrates this:
So why is this interesting? So far, this sounds like the definition of a typical file server. And indeed, the repository is a kind of file server, but with own features. What makes the Subversion repository special is that it remembers every change ever written to it — every change to every file, and even changes to the directory tree itself, such as the addition, deletion, and rearrangement of files and directories.
When a client reads data from the repository, it normally sees only the latest version of the filesystem tree. But the client also has the ability to view previous states of the filesystem. For example, a client can ask historical questions such as “What did this directory contain last Wednesday?” and “Who was the last person to change this file, and what changes did he make?” These are the sorts of questions that are at the heart of any version control system: systems that are designed to track changes to data over time.