Git使用SHA-1为用户引用提交.
Subversion(SVN)和Mercurial(hg)使用增量数字.
为什么Git团队做出使用SHA-1而不是更具描述性的设计决定?
Hol*_*ust 38
Mercurial(hg)也使用SHA1哈希值.它还试图从提交历史中获取修订号.但是,这些修订仅在一个存储库中有效.如果你看另一个回购,这些修订不能保证匹配.
至于为什么git和mercurial使用哈希:两者都有非线性提交历史.因为两者都是分布式的,所以人们可以在其本地存储库中使用相同的代码基础,而无需与中央权限同步(根据SVN和CVS的要求).现在,如果人们在本地提交他们的东西并在以后合并它们,那么您将很难找到一致的模式来形成线性增加的整数修订.即使你可以,你仍会在不同的回购之间得到不同的结果.
最后,这都是因为分布式的性质.这是一种为提交提供相当唯一标识符的简单方法.作为副产品,您还可以将完整的历史记录编码为哈希中的单个提交.这意味着,即使你在提交中有相同的差异,你可能会获得不同的SHA1哈希值.
它既用作提交识别和验证的方法.SHA1编号是提交中所做的所有更改的校验和,加上作者的名称加上父提交的SHA1.(和IIRC它还包括提交消息,但不确定).
当您从远程数据库中提取/获取时,git将根据您收到的文件检查校验和,以确保您没有收到代码的损坏或修改版本.
| 归档时间: |
|
| 查看次数: |
5544 次 |
| 最近记录: |