【发布时间】:2015-09-28 20:02:37
【问题描述】:
我正在开发一个新版本的 git-stats 工具,用于根据 Git 提交、作者等制作一些图表。
在当前版本中,它接受相同的提交 ID,为项目名称命名:
{
"some-project-url" { "hash1": "date", ... }
"some-project-url-fork" { "hash1": "date", ..., "commit-in-fork-id": "date" }
}
我想删除存储项目 url 的要求,这意味着没有相同的哈希值。
现在我在考虑这是否是一个好的举措。
当导入多个项目,每个commit存储一次时,有两个相同id的概率是多少?
其实,在现实生活中,什么时候会碰巧有两个相同的id(在两个不同的项目中)?
【问题讨论】:
-
与 SHA-1 冲突的问题相同,因为 git 哈希是使用 SHA-1 创建的
-
由于 Git 提交 ID 是 SHA-1 哈希,因此您实际上是在寻找 SHA-1 哈希冲突。这些当然是可能的(它们在数学上是有保证的:P),但到目前为止,使用 SHA-1 很难找到冲突。在正常的 GIt 项目中,您不太可能遇到冲突。以 Linux 项目为例,这是迄今为止最大的 Git 项目,哈希值非常独特,它们仍然可以仅使用前几个字符来引用提交,因此没有真正的冲突,不。
-
阅读this one
-
@poke true,您可以参考缩写的 SHA1,但随着时间的推移,它已经演变:stackoverflow.com/a/21015031/6309
-
@Joost 啊,确实!真的,真的,真的!
标签: git