# HG changeset patch # User Martin von Zweigbergk # Date 2018-08-09 05:26:57 # Node ID 4c4825db29e1587c2c00236135d8941cc2452f5f # Parent 52e9bf215f96bf3432d9e4b5585396a1d23fa6c1 shortest: don't include nullid in disambigution revset As noted by Yuya in the review of D4118, the fact that the nodetree always contains the nullid is not what we want for the disambiguation case. It's not what the pure version of the code does. Note that the updated test also passes before this patch, but it wouldn't have passed in native-code mode once we start using the nodetree for disambiguating nodeid prefixes. Differential Revision: https://phab.mercurial-scm.org/D4163 diff --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c +++ b/mercurial/cext/revlog.c @@ -1075,10 +1075,6 @@ static int nt_init(nodetree *self, index return -1; } self->length = 1; - if (nt_insert(self, nullid, -1) == -1) { - free(self->nodes); - return -1; - } return 0; } @@ -1152,6 +1148,11 @@ static int index_init_nt(indexObject *se self->nt = NULL; return -1; } + if (nt_insert(self->nt, nullid, -1) == -1) { + PyMem_Free(self->nt); + self->nt = NULL; + return -1; + } self->ntrev = (int)index_length(self); self->ntlookups = 1; self->ntmisses = 0; diff --git a/tests/test-revisions.t b/tests/test-revisions.t --- a/tests/test-revisions.t +++ b/tests/test-revisions.t @@ -3,7 +3,7 @@ $ echo 0 > a $ hg ci -qAm 0 - $ for i in 5 8 14 43; do + $ for i in 5 8 14 43 167; do > hg up -q 0 > echo $i > a > hg ci -qm $i @@ -14,6 +14,7 @@ > EOF $ hg l + 5:00f 4:7ba5d 3:7ba57 2:72 @@ -21,9 +22,10 @@ 0:b $ cat <> .hg/hgrc > [experimental] - > revisions.disambiguatewithin=:3 + > revisions.disambiguatewithin=not 4 > EOF $ hg l + 5:0 4:7ba5d 3:7b 2:72