如果我运行git grep
命令n次,大约会出现0.8 * n次的错误。
$ git grep foo_bar_search `git rev-list HEAD` -- dir/subdir >/dev/null
fatal: unable to read tree (bc9e3369c6d6f027075e794fa11db02af3f8fb38)
$ git grep foo_bar_search `git rev-list HEAD` -- dir/subdir >/dev/null
fatal: unable to read tree (473a47dd3895b1db09baf4cf9463f4cbd224d5dd)
$ git grep foo_bar_search `git rev-list HEAD` -- dir/subdir >/dev/null
$ git grep foo_bar_search `git rev-list HEAD` -- dir/subdir >/dev/null
fatal: unable to read tree (b917adbfffd1928c8f6ac0f746a4fdfcf2088029)
$ git grep foo_bar_search `git rev-list HEAD` -- dir/subdir >/dev/null
fatal: unable to read tree (473a47dd3895b1db09baf4cf9463f4cbd224d5dd)
我尝试过:
- 用超级用户运行,排除文件保护的问题
git fsck
没有报告任何问题,只有一些悬空的对象- 克隆存储库,在克隆时没有出现错误,但
git grep
在克隆中显示相同的行为。 - 使用
git cat-file
查看报告的SHA1值,都好像没问题 - 谷歌了一下
最有趣的谷歌搜索结果是:
http://www.spinics.net/lists/git/msg164520.html
这个消息只有3小时。如果git grep
存在竞争条件,那就可以解释一切了。那么他们是在几个核心上并行搜索的吗?(我这里有4个。)我怎样才能禁用它,而不用只开启一个内核重新启动整个机器呢?
$ git --version
git version 1.7.3.4
(这是OpenSUSE 11.4自带的)