title: Why are Mercurial backouts in one branch affecting other branches?
body: <p>This is a difficult situation to explain, so bear with me. I have a Mercurial repository with 2 main branches, <em>default</em> and <em>dev</em>.</p>
  
  <p>Work is usually done in a named branch off of <em>dev</em> (a feature branch). There may be many feature branches at any one time. Once work is completed in that branch, it is merged back into <em>dev</em>.</p>
  
  <p>When the time comes to prepare a release, another named branch is created off of <em>dev</em> (a release branch). Sometimes it is necessary to exclude entire features from a release. If that is the case, the merge changeset from where the feature branch was merged into <em>dev</em> is backed out of the new release branch.</p>
  
  <p>Once a release branch is ready to be released, it is merged into <em>default</em> (so <em>default</em> always represents the state of the code in production). Work continues as normal on the <em>dev</em> branch and feature branches.</p>
  
  <p>The problem occurs when the time comes to do another release, including the feature that was backed out in the previous release. A new release branch is created as normal (off of <em>dev</em>). This new release branch now contains the feature that was backed out of the previous release branch (since the backout was performed on the release branch, and the merge changeset remains on the <em>dev</em> branch).</p>
  
  <p>This time, when the release branch is ready for release and is merged into <em>default</em>, any changes that were backed out as a result of the merge backout in the previous release branch are not merged into <em>default</em>. Why is this the case? Since the new release branch contains all of the feature branch changesets (nothing has been backed out), why does the <em>default</em> branch not receive all of these changesets too?</p>
  
  <p>If all of the above is difficult to follow, here's a screenshot from TortoiseHg that shows the basic problem. "branch1" and "branch2" are feature branches, "release" and "release2" are the release branches:</p>
  
  <p><img src="https://i.stack.imgur.com/np1g1.jpg" alt="enter image description here"></p>