title: Add a licenses to file headers in tree, retroactively
body: <p>There is a closed-source project that is going to be open-source, and I was asked to attempt to add licenses to all source files in the SVN repository retroactively, as the tree history might be of general interest.  There is also interest in migrating to a DVCS, and hgsubversion doesn't appear to track svn mergeinfo, so I decided to try converting the SVN repository to git (doing a one-way conversion that fixed tags and such) and then attempt to edit history from there.</p>
  
  <p>I was actually very lucky, as the very first revision happened to have a branch that led to work done for an earlier public source release.  Thus, I decided to try <code>git rebase sourcerelease-branch master</code>.  A few very painful hours later, I was finished...</p>
  
  <p>...except for one problem.  There were several branches in the converted repository (including a 'branch' that was actually mainline development past 2009 or so), and it didn't look like rebase had traversed them.  Asking around in <code>#git</code>, I was told that it was not possible to make <code>git rebase</code> traverse branches.</p>
  
  <p>Well shoot...what can I do?  Is what I'm going after even possible, with git or with some other version control system?</p>
  
  <p>EDIT: Here is a visual of what I have</p>
  
  <pre><code>          A---B random_branch
           /
  C---D---E---F master
   \
    G---H add_license_branch
  </code></pre>
  
  <p>I essentially want to get the changes I made in <code>change-license-branch</code> to appear in <code>master</code> and in any branch that branches from <code>master</code> such as <code>random_branch</code>.  When I'm through, I don't even want a <code>add_license_branch</code>, it'd be nice if I could squish C, G and H together and put the result where C is right now.</p>