I'm quite new to the project, but it seems to me that the during the migration from CVS to SVN someone made a mistake. CVS is bit more intuitive than SVN for what concerns tags and branches, in practice branch/tag revisions are sort of meta-properties that you just attach to files. Instead, under SVN, branching/tagging is achieved by copying the file to a different location. This means that you have to have a place to copy the file to! Currently every file is under the repository root, so that make tagging and branching practically difficult.
The recommended db structure described in
svnbook.red-bean.com/ is the following:
- streber (root of the project)
- trunk (folder for current development version)
- tags (folder for tagged version)
- v0.0703-stable (example of a tagged version)
- v0.0710-dev (example of another tagged version)
- branches (folder for branches)
- v0.0703-fixes (example of a branch)
I feel it's important that we restructure the repository soon, because we are going to need tags! Trust me. At later stages we might also need branches.
It's going to be less painful than you might think, because copies in SVN are cheap operations that maintains the history. Mainly the operations are:
- on the server:
- create folder /trunk
- copy every file and folder from / to /trunk (except /trunk itself, of course)
- create folders /tags and /branches
- on each client:
- issue a
svn switch command to "switch" from / to /trunk (this operation does not retrieve any file and [b]does not overwrite local modifications[/b])
The only problems arise if a client with local modifications forgets to do the switch. In particular
- a commit will fail with a "file not found" error message: safe, but not very intuitive...
- an update will succeed: a trunk folder will be created locally, all unchanged files will be removed, all changed files will be left where they are, but will be "disconnected" from svn
Even in these unfortunate cases, no local modification is lost, but the situation might be confusing. So it's important that all team members are informed and do the switch before attempting any other operation.
I know this may be a tough decision. I am quite knowledgeable in this area and can provide assistance, in case we decide to do it.