title: Releasing from Trunk or Branch?
body: <p>We've recently (last 2 months) started to use TeamCity tfor our deployments. This has taught us a lot about actually using SC properly, the pitfalls and working in a team with multiple projects. However we are still unclear on how best to use trunk, branches and tags.</p>
  
  <p>Our current process is:</p>
  
  <ul>
  <li>A unit of work is requested.</li>
  <li>New branch is created for developer.</li>
  <li>Once development is finished in the branch, the trunk is merged back into the branch to ensure any recent changes are included.</li>
  <li>At this point the branch is ready for testing, and this is where our uncertainty starts!</li>
  </ul>
  
  <p>I've heard other developers say that we should only be releasing from the trunk, and I'm sure that when releasing to production this is true. However, at the stage when a branch is ready for testing, it doesn't seem appropriate that we should merge back into the trunk and then release to our test environment, or should we be?</p>
  
  <p>The other approach I have considered is just having a branch called TEST and then always merge and release to test environments from there, but there are perhaps hidden pitfalls with this approach too.</p>
  
  <p>Could I please ask for some guidance/advice on this topic? What do you do for example?</p>
  
  <p>I wont broach the subject of tags in this post, as I understand it's probably complicating the issue.</p>
  
  <p>Thanks in advance
  dotdev</p>