Как использовать Libgit2sharp, чтобы определить, является ли файл двоичным? - PullRequest
0 голосов
/ 23 января 2020

Я хотел бы определить, является ли файл (из определенного коммита / ревизии) двоичным или нет. Я знаю, что git имеет какой-то метод, чтобы сделать это, потому что, когда вы переводите двоичный файл, он дает вам другой результат, чем при обычном текстовом файле. Зная об этом, я видел сообщения в Интернете о том, как разнести файл в пустую ветку дерева, чтобы определить, является ли он двоичным. Если файл является двоичным, в нем будут показаны две черточки, в которых номера строк различий будут go.

Например, следующее:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 --numstat HEAD -- logo.png

вернет

-       -       logo.png

Тире есть, потому что этот файл является двоичным файлом. Обычный текстовый файл покажет различия строк.

Я хотел бы использовать этот факт, чтобы определить, является ли файл двоичным или нет, используя Libgit2sharp, но я не могу понять, как это сделать.

Я также открыт для любых альтернативных подходов, если этот слишком обходной.

1 Ответ

1 голос
/ 23 января 2020

libgit2 предоставляет этот heuristi c для BLOB-объектов и буферов. Поскольку вещь, которую вы хотите обработать, это большой двоичный объект, вы можете запросить атрибут IsBinary объекта Blob, представляющего этот объект.

Если вам нужен объект Blob, вы можете найти ревизию с помощью RevParse репозитория. метод, чтобы получить экземпляр GitObject и затем вызвать Peel, чтобы превратить его в BLOB-объект.

...