Patchwork [5,of,9,cah] backout: use commonancestorsheads for checking linear heritage

mail settings
Submitter Mads Kiilerich
Date April 17, 2014, 6:07 p.m.
Message ID <12312f066d93dcfa2e50.1397758077@localhost.localdomain>
Download mbox | patch
Permalink /patch/4399/
State Accepted
Commit 12312f066d93dcfa2e50e8c9a9f05989ebbbc719
Headers show


Mads Kiilerich - April 17, 2014, 6:07 p.m.
# HG changeset patch
# User Mads Kiilerich <>
# Date 1397757699 -7200
#      Thu Apr 17 20:01:39 2014 +0200
# Node ID 12312f066d93dcfa2e50e8c9a9f05989ebbbc719
# Parent  40ace21cb3a1716c8c686874dcbca47a53a84964
backout: use commonancestorsheads for checking linear heritage

If two revisions are linearly related, there will only be one ancestor, and
commonancestors and commonancestorsheads would give the same result.
commonancestorsheads is however slightly simpler, faster and more correct.


diff --git a/mercurial/ b/mercurial/
--- a/mercurial/
+++ b/mercurial/
@@ -438,7 +438,7 @@  def backout(ui, repo, node=None, rev=Non
     node = scmutil.revsingle(repo, rev).node()
     op1, op2 = repo.dirstate.parents()
-    if node not in repo.changelog.commonancestors(op1, node):
+    if node not in repo.changelog.commonancestorsheads(op1, node):
         raise util.Abort(_('cannot backout change that is not an ancestor'))
     p1, p2 = repo.changelog.parents(node)