首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪些git命令执行完整性检查?

哪些git命令执行完整性检查?
EN

Stack Overflow用户
提问于 2018-03-26 05:32:22
回答 2查看 0关注 0票数 0

为了确定使用git-1.7.4.1在对象数据库中警告用户损坏的速度,我使用了一个单位开关:

代码语言:txt
复制
$ git init repo
Initialized empty Git repository in /tmp/repo/.git/
$ cd repo
$ echo 'very important info' >critical
$ git add critical
$ git commit -m critical
[master (root-commit) c4d6d90] critical
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 critical
$ git ls-tree HEAD
100644 blob 82d423c32c4bb2c52938088e0234db041bf4eaaf    critical
$ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf
very important info
$ echo 'Very important info' | git hash-object --stdin -w
81a3797afe76d339db25c0f9c705a6caa47279c2
$ mv .git/objects/81/a3797afe76d339db25c0f9c705a6caa47279c2 \
     .git/objects/82/d423c32c4bb2c52938088e0234db041bf4eaaf

当然了!git-fsck告示

代码语言:txt
复制
$ git fsck
error: sha1 mismatch 82d423c32c4bb2c52938088e0234db041bf4eaaf

error: 82d423c32c4bb2c52938088e0234db041bf4eaaf: object corrupt or missing
missing blob 82d423c32c4bb2c52938088e0234db041bf4eaaf

git-log对改变很满意

代码语言:txt
复制
$ git log -p
commit c4d6d90467af9ffa94772795d5c5d191228933c1
Author: Greg Bacon <gbacon@dbresearch.net>
Date:   Thu Apr 7 12:20:53 2011 -0500

    critical

diff --git a/critical b/critical
new file mode 100644
index 0000000..82d423c
--- /dev/null
+++ b/critical
@@ -0,0 +1 @@
+Very important info

原样git-checkout...

代码语言:txt
复制
$ rm critical 
$ git checkout .
$ cat critical 
Very important info

特定的调用git-show揭露腐败

代码语言:txt
复制
$ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf
error: sha1 mismatch 82d423c32c4bb2c52938088e0234db041bf4eaaf

fatal: bad object 82d423c32c4bb2c52938088e0234db041bf4eaaf

但不是更广泛的。

代码语言:txt
复制
$ git show
commit c4d6d90467af9ffa94772795d5c5d191228933c1
Author: Greg Bacon <gbacon@dbresearch.net>
Date:   Thu Apr 7 12:20:53 2011 -0500

    critical

diff --git a/critical b/critical
new file mode 100644
index 0000000..82d423c
--- /dev/null
+++ b/critical
@@ -0,0 +1 @@
+Very important info

甚至于git-clone没注意到!

代码语言:txt
复制
$ cd ..
$ git clone repo clone
Cloning into clone...
done.
$ cat clone/critical 
Very important info

具体的git命令模式的完整列表是什么(G.,,,git show $sha1应该在场但不在场git showgit show HEAD)执行完整性检查?

EN

Stack Overflow用户

发布于 2018-03-26 13:33:15

下面是我将如何找到这个结果,尽管我不打算遍历每个源文件来计算执行检查的条件。)

克隆git的源代码:

代码语言:txt
复制
git clone git://git.kernel.org/pub/scm/git/git.git

看看你关心的版本:

代码语言:txt
复制
cd git
git checkout v1.7.1

查找该错误消息:

代码语言:txt
复制
git grep 'sha1 mismatch'

这会导致你object.cparse_object功能。现在查找该函数:

代码语言:txt
复制
git grep parse_object

然后检查38个文件,检查调用该函数的条件。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档