git 如何如此快地检测到文件修改?
它是否对存储库中的每个文件进行哈希处理并比较 SHA1?这会花费很多时间,不是吗?
或者说比较atime
, ctime
or mtime
?
Git 努力仅从 lstat() 值中确信工作树与索引匹配,因为回退到文件内容的成本非常高。
文档/技术/racy-git.txt http://www.kernel.org/pub/software/scm/git/docs/technical/racy-git.txt描述了使用哪些统计字段,以及如何避免由于低 mtime 粒度而导致的某些竞争条件。这篇文章有一些更详细的信息 http://www-cs-students.stanford.edu/~blynn/gg/race.html.
统计值不防篡改,请参阅 futimens(3)。 Git 可能会被欺骗而错过对文件的更改;这不会损害内容哈希的完整性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)