gpt4 book ai didi

git - 我应该担心 `git fsck` 警告 : "contains zero-padded file modes"

转载 作者:太空狗 更新时间:2023-10-29 12:54:49 24 4
gpt4 key购买 nike

在我的 repo 上运行 git fsck,我得到这个输出:

$ git fsck
Checking object directories: 100% (256/256), done.
warning in tree bde551ba2d6882ac7614c25305c24ddc1c75b1c4: contains zero-padded file modes
warning in tree 7cac28aefa67ff63e5ca163de382a3e08b8a7ba5: contains zero-padded file modes
warning in tree c24803abe783decd96c1dbf05d3ac45dbf3ff372: contains zero-padded file modes
warning in tree 51393697adb908ddb5fac540a86ea5a331fc1da5: contains zero-padded file modes
Checking objects: 100% (40275/40275), done.

我应该担心这些警告吗?他们会损坏我的存储库吗?

最佳答案

它不会完全破坏 repo,但它很可疑。零填充文件模式的测试早在 2005 年就开始了:

commit 64071805eda2b57d2b77943bb3f9865d90562ecf
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date: Wed Jul 27 16:08:43 2005 -0700

git-fsck-cache: be stricter about "tree" objects

In particular, warn about things like zero-padding of the mode bits,
which is a big no-no, since it makes otherwise identical trees have
different representations (and thus different SHA1 numbers).

Also make the warnings more regular.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>

不同的 SHA1 值将使 git 相信“树 A”与“树 B”不同,即使它们在所有重要方面都相同(相同的文件和模式,除了一个中的前导零) ,这将使 repo 略大于必要。此外,两个实际上相同的提交(例如,通过重播补丁创建)看起来是不同的。我不知道有什么因此出错,但它可能会混淆各种操作(他们“期望”找到差异,但后来找不到)并且随着时间的推移它可能使存储库膨胀。

另外两个有趣的问题:(1) 如何解决这个问题?我怀疑使用 git filter-branch 可以修复它(通过重放提交以获得“正确的”树对象),但你必须弄清楚哪个分支包含包含这些树的提交,并且还必须清除引用坏树对象的“坏”提交。 (当然,这会给克隆存储库的任何人带来各种痛苦。)(2)这首先是如何发生的?

虽然 git cat-file -p 添加了前导零,但看看 git cat-file 为这些树打印了什么会很有趣,所以这有点痛苦. (git cat-file tree bde551ba2d6882ac7614c25305c24ddc1c75b1c4 转储原始内容,但它们充满了二进制位。仍然可以查看,只需要使用处理二进制内容的东西。)

关于git - 我应该担心 `git fsck` 警告 : "contains zero-padded file modes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com