This morning I had a look at my daily news groups and found an interessting question. One guy asked for best practice organizing the project versions within the file structure.
I don’t think that I have the philosopher’s stone, but over the years I found my best practices.
My folder structure looks like:
\{Project name}
\Build
\Source
\v1.x
\{Apps}
\v2.x
\{Apps}
\Distribute
\Release {Release Number}
\Documentation
\{Documentation sub folders}
\Test
The build folder contains Nant Scripts and command line tools to make the release builds and also the nightly builds.
As you can see the source folder has sub folders that contains the major releases. The reason why I bundle multiple source versions to 1.x and 2.x is that major changes (like you expect it from a major release change), requires big changes within the code base. That’s why I think it’s better to get rid of the old v1.x stuff and begin with a clear and fresh file structure 2.x.
On the other hand, building a new folder structure for every small release or patch doesn’t make any sense, because it’s much work and cost a lot of storage to copy always a complete folder structure. Therefore I strongly recommend to use a source code management system like SubVersion or CVS. Those tools allows you to manage smaller releases and set marker tags to pin your source for a specific version.
The Distribute folder contains the stable distributions as ZIP and MSI files. Referring to that, every distribution has it’s own subfolder that contains these two files. Last but not least the Test Folder contains a runable nightly build release in order to test the current development.
So I’m interessted in knowing what’s your experience with that issue?
Cheers
Gerhard
Link to the news group: How best organize a project, versions?