Change the size of the short hash representation
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Change the size of the short hash representation
First note that this number doesn't really matter, as we always check
for ambiguous short hash ids.
Here's the math on collision probability:
>>> import math
>>> def p(f, n): return 1 - (1 / math.exp(n**2/(2*f)))
...
>>> p(2**32, 30000.0)
0.
09947179164613551 # with 30000 changesets (BKCVS), we have a 9% chance
>>> p(2**32, 65000.0)
0.
38850881217977273 # and with a full import from BK, we'd have a 39% chance
>>> p(2**40, 1e6)
0.
36539171908447321 # we'd like to be "safe" for 1M csets, so 40 isn't enough
>>> p(2**48, 1e6)
0.
001774780051374103 # But 48 looks good
>>> p(2**48, 1e7)
0.
16275260939624481
>>> p(2**48, 5e6)
0.
043437281083569146
>>> p(2**48, 2e6)
0.
0070802434913129764
>>> p(2**48, 3e6)
0.
01586009440574343
manifest hash:
24d9f928a463f46708b0e11fb781d5a241851424
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCsQoMywK+sNU5EO8RAoBBAJwII9GV6dT9QUOYAk3gZGw9z0JvjACfSI4q
IFnTu1F7P5OuLelO1GsM8Bs=
=CNWk
-----END PGP SIGNATURE-----
+ hg init
+ echo nothing
+ hg add a
+ hg commit -t ancestor -u test -d '0 0'
+ echo something
+ hg commit -t branch1 -u test -d '0 0'
+ hg co 0
+ echo 'something else'
+ hg commit -t branch2 -u test -d '0 0'
+ export HGMERGE=merge
+ HGMERGE=merge
+ hg -d up -m 1
merge: warning: conflicts during merge
resolving manifests
ancestor 1c6e5a12 local 35fedfab remote a5801785
a versions differ, resolve
working dir created .out, keeping
merging a
resolving a
file a: other d7250518 ancestor 68ba9db7
merging a failed!
+ hg id
32e80765+75234512+ tip
+ cat a
+ grep -v '>>>'
+ grep -v '<<<'
something else
=======
something
+ hg status
C a
? .out