Code organization
I had plans to posting about code organization this weekend, and saw Scott Hanselman posted on the same topic. Moving to svn gave us a chance to really review how we were doing things, and we changed alot. In the past, projects I have worked on have always been very tightly coupled to the file system. Not that its a bad thing, well it is, you just don't notice it until you see the other side of the fence.
After trying to read pretty much everything thoughtworks on the subject, and really giving a ton of weight to the How to setup a development tree set of posts from Mike Roberts, we came up with a very generic structure that is similar to what Scott posted. It looks something like this :
(VC) = under version control
- Solution Folder
- .svn ;)
- _versioning (VC)
- build
- lib (VC)
- src
- Project (VC)
- Test Project (VC)
- tools (VC)
- buildfile.build (VC)
The tools folder carries complete versions of tools needed to build or run a given solution (eg : nant), and the lib folder houses all referenced dlls, which projects reference by relative path. In fact, everything about the setup is relative now, so a developer can go from creating a branch, to having the branch checked out to a new folder and built in under 10 minutes.
So how does your source tree look?