Directories in your RepositoryWithin the Subversion repository, you create a directory tree of all your projects and files, the same way you do on your own local disk. At anytime, you can then decide to work on any subdirectory. You then create an image of this one on your machine, eventually update it and resubmit it to the repository. You structure your directory tree the way you want; there is no constraint. However, it is suggested that you define three particular directories below each of your projects (or group of projects); but this is just a pattern of work, you are free to use your own structure. The next paragraphs briefly describe this suggested directory structure. Since these are optional, you can skip the rest of this section and go to the next immediately.
The current version of your software project, on which your team is currently working is usually located under a directory called trunk. As the project evolves, the developer updates that version fix bugs, add new features) and submit his changes under that directory.
At any given point in time, you may want to freeze a version and capture a snapshot of the software as it is at this stage of the development. This generally corresponds to the official versions of your software, for example, the ones you will deliver to your clients. These snapshots are located under the tags directory of your project.
Finally, it is often useful to create, at some point, a new line of development for your software. This happens, for example, when you wish to test an alternative implementation in which you have to modify your software but you do not want to submit these changes to the main project until you decide if you adopt the new solution. The main team can then continue to work on the project while other developer work on the prototype. You would put these new lines of development of the project under a directory called branches.
One way to use this directory structure is as follow. The software product is developed under the trunk. When the software is ready for an official release, you copy it to a branch (e.g. version 1.0) and to a tag (version 1.00). This is the tagged version that your clients will use. While the development team continue to develop the new features on the main project (under the trunk), the quality assurance team maintain the version in the branch in order to fix the small bugs. When enough bugs have been corrected, you are ready to generate a new tag (version 1.01,...). In parallel, new release of the software will generate new branches (version 2.0, 3.0,...).