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-----
#!/bin/bash
#
# hgmerge - default merge helper for Mercurial
#
# This tries to find a way to do three-way merge on the current system.
# The result ought to end up in $1.
set -e # bail out quickly on failure
LOCAL=$1
BASE=$2
OTHER=$3
EDITOR="${EDITOR:-vi}"
# Back up our file
cp $LOCAL $LOCAL.orig
# Attempt to do a non-interactive merge
if which merge > /dev/null ; then
if merge $LOCAL $BASE $OTHER 2> /dev/null; then
# success!
exit 0
fi
cp $LOCAL.orig $LOCAL
elif which diff3 > /dev/null ; then
if diff3 -m $LOCAL.orig $BASE $OTHER > $LOCAL ; then
# success
exit 0
fi
cp $LOCAL.orig $LOCAL
fi
if [ -n "$DISPLAY" ]; then
# try using kdiff3, which is fairly nice
if which kdiff3 > /dev/null ; then
if kdiff3 --auto $BASE $LOCAL $OTHER -o $LOCAL ; then
exit 0
else
exit 1
fi
fi
# try using tkdiff, which is a bit less sophisticated
if which tkdiff > /dev/null ; then
if tkdiff $LOCAL $OTHER -a $BASE -o $LOCAL ; then
exit 0
else
exit 1
fi
fi
fi
# Attempt to do a merge with $EDITOR
if which merge > /dev/null ; then
echo "conflicts detected in $LOCAL"
merge $LOCAL $BASE $OTHER 2>/dev/null || $EDITOR $LOCAL
exit 0
fi
if which diff3 > /dev/null ; then
echo "conflicts detected in $LOCAL"
diff3 -m $LOCAL.orig $BASE $OTHER > $LOCAL || $EDITOR $LOCAL
exit 0
fi
# attempt to manually merge with diff and patch
if which diff > /dev/null ; then
if which patch > /dev/null ; then
T=`mktemp`
diff -u $BASE $OTHER > $T
if patch $LOCAL < $T ; then
exit 0
else
$EDITOR $LOCAL $LOCAL.rej
fi
rm $T
exit 1
fi
fi
echo "hgmerge: unable to find merge, tkdiff, kdiff3, or diff+patch!"
exit 1