2016-11-20 4 views
-2

Я работаю над приложением, которое использует LibGit2Sharp для клонирования данных из Git Repositories. Я хочу знать, что ли LibGit2Sharp выполняет проверку целостности данных, например, SHA-1 после завершения клона (успешно или нет), чтобы гарантировать отсутствие данных или их подделку.Does LibGit2Sharp гарантирует, что клонированные данные из репозитория совпадают с тем, что мы получаем на нашем конце?

ответ

0

Это не функциональность привязок langauge libgt2sharp, а подкладка libgit2.

Теперь на самом деле это бизнес транспорта.

Насколько я могу судить, нет, они этого не делают. Не стесняйтесь просматривать их исходный код (https://github.com/libgit2/libgit2/blob/cc5966b071b37c38736ce8ad526e612d0703b523/src/transports/smart_protocol.c), как я.

+0

На самом деле я попытался сравнить клоны Git, предоставленные libgit2sharp и git bash. Количество файлов и папок не одинаково (очевидно, размер на диске тоже). Я просмотрел эту ссылку, которую вы отправили мне. Я видел, что они проверяют отправленные пакеты и принятые пакеты, но они не делают никаких проверок SHA, не так ли? –

0

Git использует packfiles для передачи объектов между репозиториями. Каждый объект в этих packfiles имеет контрольную сумму CRC32, а сами файлы packfiles имеют трейлер контрольной суммы SHA-1.

Обе эти контрольные суммы проверяются на данные, которые получены. Это включает в себя вычисление имени объектов на основе полученных данных, а не доверение удаленного с хешированием.

Но это не о libgit2sharp или libgit2. Так работает система Git. Информацию о формате данных вы можете найти в его технической документации.