title: DVCS with "named commits"
body: <p>I'm looking for a DVCS which would allow me to use something like a "named commit" -- similar to what patch queues achieve, but not quite... (I'll compare only to <code>mq</code> and <code>stg</code>, since I don't know of any other similar ones)</p>
  
  <p>Patch queues are close, but I'd like those features:</p>
  
  <ul>
  <li>Creating new branch in the repository, branches also the patch series. (m<code>q</code> uses global patch queues, <code>git</code> loses the <code>stg</code> information while branching and branches with patches currently applied)</li>
  <li>Ability to list the "named commits", pop and push them just like patches. (both do that)</li>
  <li>Tying the "named commit" changes to normal commits - so that when I create a patch at rev 1, I change the patch at rev 3, I can still checkout rev 1 and see the old version. (<code>mq</code> is global again, <code>stg</code> fails with "not on any branch" when I come back to older revision)</li>
  <li>Same as above really - ability to tag a revision in a way that if I check it out, I get the "named commits" I had then.</li>
  </ul>
  
  <p>Is there anything similar out there? Any extensions to some DVCS? Or maybe there's a way to make <code>mq</code> or <code>stg</code> behave the way I want? Any suggestions?</p>
  
  <p>It seems like <code>mq</code> which keeps its information is in the same repo as other files, would be close to what I need, but is that even possible?</p>
  
  <hr>
  
  <p>Just to explain the purpose quickly: I want to keep the patches applied all the time, but they're not "part of development". I just want several specific features kept separately in my own fork of the main repo.</p>