共享目录中的索引文件错误

时间:2017-10-30 09:16:25

标签: git git-index shared-directory

我使用VMWare在Windows 8上使用Ubuntu VM,在使用git时出现错误

error: bad index file sha1 signature
fatal: index file corrupt

尝试commit

现在,我找到了解决这个问题的方法(主要的方法,删除.git/index并重试,似乎有点解决方法)但我想了解导致此错误的原因(部分原因是它们倾向于在随机方式)。

我做了一个实验并在~/(常规目录)和/mnt/hgfs/Shared with host/(与Windows主机的共享目录,这是我的笔记本电脑)中运行了几个命令。

在常规目录中,它运行良好,但在共享目录中,它在提交消息上出现上述错误失败。

命令是:

mkdir trial
cd trial
echo hello > world.txt
git init
git add .
git commit -m "msg"

现在我想知道,为什么目录是共享的呢? 一般来说,导致此错误的原因是什么?哪个sha1签名是索引文件的比较(我在运行tree .git时没有找到任何可以存储此类签名的内容)?

1 个答案:

答案 0 :(得分:0)

Edward Thomson's comment是正确的 - 您可以在错误消息和the corresponding source code function verify_hdr中看到这一点,其中包含以下几行:

git_SHA1_Init(&c);
git_SHA1_Update(&c, hdr, size - 20);
git_SHA1_Final(sha1, &c);
if (hashcmp(sha1, (unsigned char *)hdr + size - 20))
        return error("bad index file sha1 signature");

(魔术常数20是计算出的SHA1的字节大小)。

在文件共享中,什么并不清楚是什么导致索引文件中的二进制数据被不适当地修改。但很明显 被不适当地修改,而这种VMWare共享机制对于这种情况不起作用。