--abbrev-commit
标志可与git log
和git rev-list
一起使用,以显示部分前缀而不是提交对象的全部40个字符的SHA-1哈希值。按照Pro Git book,在我的回购中,最长的哈希前缀需要多长时间才能防止重叠?
它默认使用七个字符,但使他们更长,如果有必要保持SHA-1歧义[...]
此外,短的SHA至少4-字符长。仍然根据Pro Git书,
一般来说,8到10个字符绰绰有余在项目中是唯一的。
作为一个例子,Linux内核是一个超过450k提交和360万个对象的相当大的项目,没有两个对象的SHA-1重叠超过前11个字符。
由于为防止提交对象的所有前缀哈希值(在Linux内核的情况下为11)所需的最长前缀的长度是回购规模的粗略指标,所以我想以编程方式确定我自己的本地存储库中的相应数量。我怎样才能做到这一点?
你的意思是http://stackoverflow.com/a/21015031/3691891? –
@ArkadiuszDrabczyk不完全。您的链接仅提供了一种方法,用于确定给定提交哈希的前缀可以多短以避免与其他哈希值重叠。我要求存储库中所有提交散列的数量最大。 – Jubobs
如果不检查回购库中的所有提交,您无法*严格*确定所需的前缀长度。原则上,回购可能只有两个提交,其前39个字符相同。实际所需的长度可能随着下一次提交而改变。 –