LibGit2Sharp是否确保从存储库克隆的数据与我们收到的数据相同?

时间:2016-11-20 18:17:55

标签: c# git libgit2 libgit2sharp data-integrity

我正在开发一个使用LibGit2Sharp从Git Repositories克隆数据的应用程序。我想知道在克隆完成(成功与否)之后LibGit2Sharp是否进行任何数据完整性检查(如SHA-1),以确保没有数据丢失或被篡改。

2 个答案:

答案 0 :(得分:0)

这不是libgt2sharp langauge绑定的功能,而是底层的libgit2。

现在,事实上,这是涉及运输的业务。

据我所知,不,他们不这样做。您可以像我一样浏览他们的源代码(https://github.com/libgit2/libgit2/blob/cc5966b071b37c38736ce8ad526e612d0703b523/src/transports/smart_protocol.c)。

答案 1 :(得分:0)

Git使用packfiles在存储库之间传输对象。这些packfiles中的每个对象都有一个CRC32校验和,packfiles本身有一个SHA-1校验和预告片。

根据收到的数据检查这两个校验和。这包括根据收到的数据计算对象的名称,而不是通过散列来信任远程。

但这不是关于libgit2sharp或libgit2。这就是Git系统的工作原理。您可以在其技术文档中找到有关数据格式的信息。