<p>I have a few C# <code>.dll</code> projects which are common to many applications.  Currently, I have one big repository. I have each DLL stored as a separate project within the repository and every application project stored as a project within the same repository.</p>

<p>I recently switched to Subversion for source control and I fear that I did not do a good job of structuring the repository. I would like to hear what others are doing.</p>

Subversion repositories are typical sub-divided into:
```
```
branch/
tags/
trunk/
```
```
You would either place all of your DLL and application projects into the
trunk
and then use
branch
and
tags
for all of them as necessary too:
```
```
branch/
tags/
trunk/
    project1/
    project2/
```
```
Alternatively, you could create folders for each project in the root and then place the common branch, tags and trunk folders within them.
```
```
project1/
    branch/
    tags/
    trunk/

project2/
    branch/
    tags/
    trunk/
```
```
Note that this practice is simply convention and nothing in SVN requires (or really promotes) doing it exactly this way. However, everyone is used to it. So, you would be doing people a favor to go along.
To elaborate further, the
trunk
is where your main development will take place. When you want to mark a particular revision (e.g. a release version), then simply
svn
copy
the project into the tags directory. Also, just copy code into the
branch
directory when you want to do something dramatic or prolonged and don't want to hinder progress in the
trunk
. Later you can
svn
merge
your
branch
back into the
trunk
when it is ready for action!
If you want to correct mishaps in your current Subverion repository, then just use
svn
move
to relocate them. Unlike the delete and add process of
CVS
, move will retain version history for the new location.