D4163: shortest: don't include nullid in disambigution revset
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Aug 9 07:27:49 UTC 2018
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
As noted by Yuya in the review of https://phab.mercurial-scm.org/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.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4163
AFFECTED FILES
mercurial/cext/revlog.c
tests/test-revisions.t
CHANGE DETAILS
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,16 +14,18 @@
> EOF
$ hg l
+ 5:00f
4:7ba5d
3:7ba57
2:72
1:9
0:b
$ cat <<EOF >> .hg/hgrc
> [experimental]
- > revisions.disambiguatewithin=:3
+ > revisions.disambiguatewithin=not 4
> EOF
$ hg l
+ 5:0
4:7ba5d
3:7b
2:72
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 @@
return -1;
}
self->length = 1;
- if (nt_insert(self, nullid, -1) == -1) {
- free(self->nodes);
- return -1;
- }
return 0;
}
@@ -1152,6 +1148,11 @@
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;
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list