Git 2.2.0 和 2.2.1 似乎修改了旧的时间戳.git/objects/pack/pack-*.pack
偶尔会无缘无故地文件。
它只是改变时间戳;内容是相同的。
调试这一点很困难,因为它似乎很少进行更改。
我在 2.2.0 之前的任何 Git 版本中从未见过这样的事情。发生了什么事,我能以某种方式解决它吗?由于无用的时间戳更新,我突然收到大量增量备份更改。
Git 在磁盘上保留的信息多于在存储库中记录所有信息所绝对需要的信息。保留不必要的信息是为了加速某些操作和/或避免重写文件。决定何时删除一些不必要的文件的算法使用包文件的修改时间作为决策过程的一部分(请参阅 find_lru_pack)。因此mtime被git中类似缓存的机制使用。在 git 中更改包文件的修改时间而不修改文件(请参阅 freshen_file 函数),以帮助正确缓存并避免驱逐可能再次使用的文件。
如果将 sha1_file 中的 freshen_file 修改为无操作,则不应修改 mtimes。然而,如果在垃圾收集发生时使用与之前相同的数据写入新的提交,这将使您面临潜在的数据丢失(感谢下面的评论指出这一点)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)