A repository is normally hosted on a remote server and cared for by an administrator. It should contain all of the revisions of all of the artifacts that a development team produces. Therefore the repository is probably the single most important physical asset a development team has. As a result, access to the host machine is usually limited to the administrators only and it is normally backed up on a daily basis for disaster recovery purposes.

Under normal circumstances developers never need access to the host machine directly (e.g. through ssh). Instead developers make use of a client program that talks to the repository on their behalf and are authenticated through the server process related to and do not need local OS accounts on the sever at all.

Repository URLs
Access to a Subversion repository is achieved via a standard and familiar HTTP URL. For example, from a command-line you can checkout the trunk of the Example project, using the following command:
~/dev/test $ svn checkout

A single development effort involves the creation of resources like source , images and build-scripts. In Subversion, this group of related resources is usually called a project.

There can be (and often are) multiple projects hosted in the same Subversion repository. Alternatively, a one project per repository approach is also possible.The Subversion Chronicles will deal exclusively with this multi-project repository layout option.

Multi-Project Repository Layout
When hosting multiple projects in the same repository, there is a generally accepted way to lay the repository out. The root of the repository will contain one directory per project and for ease of use, the names of these directories should relate to the name of the project.

For the examples in this series of , the URL to the root of the repository is:

So, if we had a project called Example Project, then the URL to the project would be:

Project Layout
Within each project, there is also a recommended layout. The main line of development is known as the trunk, and it (not surprisingly) should live in a directory called trunk, directly under the project directory.

All of the tags related to a project should be placed under the tags directory which is also directly under the project directory.

All of the branches related to a project should be placed under the branches directory which is also directly under the project directory.