title: SVN patch/diff management on multi-person project
body: <p>I typically work on small-sized projects that involve only 2-3 people working on the same codebase concurrently.</p>
  
  <p>The usual routine for me is as follows:</p>
  
  <ol>
  <li>Scour through bug reports, pick a bug by priority, and write the fix </li>
  <li>Create a diff/patch (let's call it patch "alpha") of the changes to the codebase (ie: svn diff > ~/diff_alpha.patch)</li>
  <li>E-mail the patch to colleagues where they can visually inspect the diff against the codebase and point out errors or suggestions </li>
  <li>They tell me what changes are required, I put them in, and then re-email my team with the modified patch</li>
  <li>Once everyone agrees that the patch is good, I apply it to the codebase, merging in other people's changes if necessary, re-build, re-test, and commit.</li>
  </ol>
  
  <p>The problem here is that I usually have to wait a couple of days for all the approvals for the modified final patch to come in, and during that time I (obviously) want to work on other patches.</p>
  
  <p>If I go work on another bug and it affects the same file I'm working on in the previous patch, it means that when I want to commit the previous patch (alpha), I have to: </p>
  
  <ol>
  <li>Backup my current work to a new patch (ie: patch "bravo"), via svn diff > ~/diff_<strong>bravo</strong>.patch</li>
  <li>Revert my current working copy (svn revert -R .)</li>
  <li>Apply the old patch (patch -p0 &lt; ~/diff_<em>alpha</em>.patch)</li>
  <li>Commit the old patch (svn commit)</li>
  <li>Apply the patch I was previously working on (patch -p0 &lt; ~/diff_<strong>bravo</strong>.patch)</li>
  <li>Continue working on the code related to diff_bravo.patch</li>
  </ol>
  
  <p>This is annoying as I generally have to hand-merged conflicts between diff_alpha and diff_bravo.</p>
  
  <p>The other approach I tried was just continuing my work on diff_alpha without creating a diff_bravo. Then, when I have approval for all the code in the original diff_alpha I e-mailed out, I do the following:</p>
  
  <ol>
  <li>Backup my current work to a new patch (ie: patch "temp"), via svn diff > ~/diff_<strong>temp</strong>.patch</li>
  <li>Revert my current working copy (svn revert -R .)</li>
  <li>Apply the old patch (patch -p0 &lt; ~/diff_<em>alpha</em>.patch)</li>
  <li>Commit the old patch (svn commit)</li>
  <li>Apply the patch I was previously working on (patch -p0 &lt; ~/diff_<strong>temp</strong>.patch)</li>
  <li>Now I can continue what I was doing without having to hand-merge, but I will receive tons of fails hunks in my "patch" command as half the code in diff_temp was already committed in diff_alpha. I do not find this acceptable.</li>
  </ol>
  
  <p>Any recommendations for handling multiple tasks/bugs on a common file so I can minimize SVN conflicts?</p>