Сканирование объектов git для фиксации без проверки - PullRequest
0 голосов
/ 13 мая 2019

Есть ли способ прочитать все файлы, относящиеся к git commit, без запуска git checkout?Разве коммит не указывает на кучу BLOB-объектов в папке .git?Есть ли способ читать эти BLOB-объекты напрямую по идентификатору коммита?или просто запустить git checkout просто?Я просто пытаюсь проверить файлы на наличие уязвимостей, таких как текстовые пароли и т. Д.

Ответы [ 3 ]

1 голос
/ 13 мая 2019

В ордене, чтобы увидеть объект (и получить его на стандартный вывод), вы можете сделать:

git show some-branch-or-revision:file-path
git cat-file -p object-id

Любой из них будет работать.

1 голос
/ 13 мая 2019

... и для просмотра списка файлов, содержащихся в коммите, используйте

git ls-tree -r <commit id>

Этот список будет содержать идентификаторы BLOB-объектов данных файла, поэтому вы можете использовать cat-file, как указано в других ответах.

1 голос
/ 13 мая 2019

Есть git unpack-file $blob_id, который сбрасывает копию содержимого большого двоичного объекта в корне рабочего дерева с именем нежелательной почты, которое он печатает.

Также есть git cat-file --batch, который принимает необязательный формат и еще несколько настроек, и передает все запрошенные выходные данные. Если у вас есть контроль над обработкой ввода вашего инструмента аудита, он будет наиболее эффективным:

git ls-files -s | cut -d' ' -f2- \
| git cat-file --batch='%(objectname) %(objectsize) %(rest)' \
| your audit tool

и для коммита это началось бы git ls-tree -r $thatcommit | cut -d' ' -f3-

...