Wrong. In source control concept, you have 3 things. The trunk (current), the tags (released versions, even point versions), and the branches (test versions branched from trunk).Usually the trunk will be the most current copy that everyone works on. When an application or dll is deployed, the copy is "frozen" and created into a tag, as a released version. The trunk continues on its life. A new branch is not started after a release. A branch on the other hand means that you're creating a copy of the current trunk, and usually going to experiment with changes that will break the entire build. Hence you don't really want that in the trunk. Because that's where your entire build process reads from and updates from and builds from. And if the current trunk breaks, people are going to find and start hunting you down like dogs. So you branch out the current trunk, make your changes, testing etc etc, and make sure it builds, then merge it back to the trunk. Do note that merging back to the trunk is hard work, as the trunk still progresses, your branch still works on the "older" version of the trunk. So there'll be alot of changes between your branch and trunk. So merging back your changes will require quite a bit of work from your side.That's the basics of Source Control.Deployment and testing the current trunk is totally different. I think what Vector is trying to say is during current development of the current trunk, a dll breaks the entire application, and you can find out where went wrong by reverting the dll version and checking the changelogs from the source control. I must agree with BIB. With proper testing facilities like proper unit tests, fxcop, etc, a faulty dll will hardly go undetected during the build process. It's quite rare to actually find a faulty dll without any "errors" from the unit tests, and doesn't work as contracted. But then again, abnormalities do happen, and laziness is the best trait of developers/programmers, so it'll be good to be able to automatically revert back to a working dll version on the testing phase. Do note that you never deploy until it's properly tested and someone decides that it's stable enough to increment a point version and release it.Usually the build system will work on the trunk and creates the build logs and all. I'm not too sure about assembly versioning in .Net. Usually I'd just change the assembly: AssemblyVersion when I'm about to release. That's all. Is there a better way to do it?
blackinkbottle wrote:CruiseControl http://cruisecontrol.sourceforge.net/FinalBuilder http://www.atozedsoftware.com/finalbuilder/Visual Build Pro http://www.kinook.com/VisBuildPro/