嘿伙计们,我们正在使用多个存储库,并将哈希作为标识符存储在数据库中。
问题是,在我的应用程序后面,我只有一个短哈希(AKA:8df639)而不是完整的哈希(AKA:8df639b301a1e10c36cc2f03bbdf8863)。我虽然关于使用选择语句如下
SELECT foo FROM table WHERE hash LIKE '8df639%' LIMIT 1
但是我开始担心随着哈希开始堆积,我以后可能会遇到哈希冲突。
问题是,这是一个合理的恐惧,还是像我在 36^4 时那样可以吗?(1679616组合),由于它们来自不同的存储库,是否有真正可能发生的碰撞?
如果可能,最好存储整个哈希。
Git 本身将接受短哈希(通常为 7 个字符,而不是 6 个字符),但前提是它们保持唯一。如果你生成了两个以 8df639b
开头的提交,你将被迫输入更多的哈希值,然后 Git 才会识别你所说的提交。
顺便说一句,我相信您实际上有 16,777,216 个包含六个字符的组合 (16^6),但是在生成那么多提交对象之前,您很可能会发生冲突。