title: Find all log messages explaining differences between two changesets
body: <p>I'd like to find all differences between two mercurial revisions.  I'd primarily like to see  the <em>history</em> of the differences (i.e. the changeset log messages), not the internal details of what changed in the files.</p>
  
  <p>Example: compare revisions <strong>105</strong> and <strong>106</strong></p>
  
  <pre><code>   /---101---103---105 
  100         \
     \---102---104---106
  </code></pre>
  
  <p>Here, revision 106 includes changesets 106,104 and 102 which 105 doesn't have, and 105 in turn includes 103 and 105 that 106 doesn't have.  How can I easily get this list; ideally taking into account grafts too?</p>
  
  <p>The following revision set query almost works:  </p>
  
  <pre><code>(ancestors(105) - ancestors(106)) + (ancestors(106) - ancestors(105))
  </code></pre>
  
  <p>However, that's a fairly long query for something that seems like a fairly common question: <em>why exactly does this branch differ from my local version?</em>  I also believe it fails to take into account grafts and it unfortunately includes uninteresting changesets such as merges.</p>
  
  <p>Bonus points for including the <code>git</code> equivalent.</p>
  
  <p><em><strong>Edit:</em></strong>  The reason I want this is to explain to humans how these versions differ.  I've got a complex source tree, and I need to be able to tell people that version X includes features A &amp; B and bugfix P, but version Y includes features C &amp; D and bugfix Q - and that they're otherwise the same.</p>
  
  <p>If I go back to my example: merges themselves aren't interesting (so in the example above <code>104</code> isn't interesting), but the changesets the merges consist of are very interesting - meaning 101 and 102.   Merges combine lots of changes into one changeset that lacks reasonable log information.  In particular, if I just find the nearest ancestor, I'd find <code>101</code>, and then it'd look like <code>102</code> isn't of particular interest.  In terms of the actual patches applied, this information is complete - I don't need to see how merge changeset <code>104</code> was constructed, only the result.  However, if I want to know <em>why</em> it contains those changes, I need the log messages from <code>102</code>.</p>