title: Working in sync with SVN upstream
body: <p>I'm working on a project that is using code from an OpenSource project. One of the requirements is to push as much code back to upstream as possible.</p>
  
  <p>The remote project is using Subversion (not very well).</p>
  
  <p>My current setup looks like this:</p>
  
  <pre><code>[Remote SVN] (git svn fetch)-&gt; [My public Git] &lt;-(push/pull)-&gt; [My dev. Git]
                                      VV
                                    (pull)
                                      VV
                                 [Testing grid]
  </code></pre>
  
  <p>EDIT 11.7. - reformulated the question</p>
  
  <p>My issue is the coexistence of my local public repo and the svn upstream.</p>
  
  <p>I have to provide 3 public branches:</p>
  
  <ul>
  <li>conservative stable</li>
  <li>experimental stable</li>
  <li>development</li>
  </ul>
  
  <p>These branches are now linear (development becomes experimental stable and experimental becomes conservative), but the target is a standard 3 headed approach with merging. Due to their public nature I can't rebase these branches.</p>
  
  <p>Now completely orthogonal to this I'm trying to somehow make sending patches to upstream easier. Digging them out from my branches is slow and prone to errors.</p>
  
  <p>My typical current workflow is:</p>
  
  <ul>
  <li>implement some feature on top development branch</li>
  <li>test &amp; fix feature</li>
  <li>test &amp; fix other features broken by this new feature (actually happens a lot)</li>
  <li>determine if this is something that could be accepted in upstream or not (30:60 yes:no)</li>
  <li>do something about it (I usually just write a new TODO)</li>
  </ul>
  
  <p>Another problem with the upstream is that they accept patches into different branches (my public branches are based on their stable branch). Once the patches reach stable branch I can simply forget that they exist, but until that happens I need to still keep them locally.</p>