title: What is a good practice for building software patches?
body: <p>I recently took charge of a software product which was evolved rather unorganized and I have established a new project structure,a source code repository, issue tracking and a buildsystem using nant and teamcity. I'm at the point where every commit to one of the major branches gets compiled, tested and build into a setup. </p>
  
  <p>Always building and shipping full setups seems wrong to me and I'd like to establish some kind of automated patch building, but I have no idea of how to do that. Do you have any suggestions how I could do that or where I could find some information on the topic? Google was no help so far.</p>
  
  <p>Some more details on my current setup:</p>
  
  <p>Repository: 
  - git:
  -- 2 major branches: development and master</p>
  
  <p>Build system:
  - teamcity
  - 2 configurations: one for building each branch
  - build consists of only one build step: 
  -- nant runner: nant script is part of the repository and contains the following targets: clean, init, compile, test, deploy, build_setup (using inno setup)</p>
  
  <p>I guess I'll have to split the nant script into pieces and use different build steps to somehow compare the new build artifacts to older ones and create a patch containing the updated files. Am I on the right track and if so, does anyone know a good example or tutorial on how to setup teamcity.</p>