Ищем папки, содержащие действительные git голые репозитории - PullRequest
0 голосов
/ 04 февраля 2020

В больших хранилищах, как обнаружить все папки, содержащие только голые git репозитории ?

Я не имею в виду просто поиск обычного контента или некоторого контента git голые репозитории, но реальные действительные репозитории.

ТЕКУЩИЙ ПОДХОД:

Ответ здесь просто найдите папки с базовым c контентом, который может выглядеть как git пустой репозиторий, так что мы могли бы улучшить его, пытаясь выполнить git status для каждой папки, соответствующей этой базовой c структуре, но я не уверен, что это будет лучшим подходом для обеспечения того, чтобы это был пустой репозиторий, Нельзя сказать, что git status возвращает ошибку fatal: this operation must be run in a work tree в пустых репозиториях, что требует от нас предположить, что это означает пустое хранилище. Таким образом, мы должны ожидать, что получим эти выходные данные для каждой проверки и только таким образом предположим, что это действительное git пустое хранилище.

Есть ли лучший способ найти их?

1 Ответ

1 голос
/ 05 февраля 2020

Вы должны обнаруживать их так же, как Git обнаруживает их, что обрисовано в общих чертах в цитируемом вами ответе. Для этого вам понадобятся:

  • каталог objects/;
  • каталог refs/; и
  • либо символическая ссылка HEAD или файл HEAD, которые правильно отформатированы.

Точная спецификация задокументирована в исходном коде в setup.c.

Если у вас есть, как вы подозреваете, репозиторий Git, вы можете перейти в него и запустить git rev-parse --git-dir, который успешно завершится, если вы находитесь в репозитории Git, и завершится неудачно, если вы не , Вы также можете использовать git rev-parse --is-bare-repository и искать true или false, чтобы определить, является ли ваш репозиторий пустым.

Если вы не хотите переходить в репозиторий, вы можете использовать git -C <DIR> rev-parse --git-dir и аналогично для работы с указанным каталогом вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...