2013-07-11 2 views
14

Мне интересно, что git clone --verbose не очень много. Выход выполнения команды выглядит следующим образом:Get clone verbose mode - показать каждый входящий объект

$ git clone --verbose <repo> 
remote: Counting objects: 184, done 
remote: Finding sources: 100% (184/184) 
remote: Total 184 (delta 66), reused 183 (delta 66) 
Receiving objects: 100% (184/184), 18.90 KiB, done. 
Resolving deltas: 100% (66/66), done. 

Ожидаемое поведение, чтобы увидеть список полученных объектов один за другим. Возможно ли использование некоторых других вариантов?

+0

Забавный факт - если 'git' действительно сделал доклад каждый объект один-на -не, как вы предлагаете, то «git clone 'репозитория ядра Linux будет производить более 2 миллионов строк вывода. Вероятно, это хорошая причина, по которой это не реализовано ... Если вы действительно хотите эту информацию, вы можете попробовать «git rev-list -objects -all' ... – twalberg

+0

Я вижу, вы знаете, что« git rev- list --objects --all "предоставляет тот же порядок объектов, что и« git clone »для« Receiving objects »? Мне нужно это, потому что иногда я получаю сетевую ошибку при получении одного из obejcts, и я хочу fidn именно этот объект в дереве. – erkfel

+0

Я был бы очень удивлен, если бы ваша «сетевая ошибка» каким-либо образом была связана с конкретным объектом, который в настоящее время передается через сокет TCP. Порядок, скорее всего, не такой, как 'git' генерирует и отправляет файл пакета, содержащий запрошенные объекты, и объекты порядка, которые помещаются в файл пакета, могут показаться несколько произвольными. – twalberg

ответ

13

Невозможно перечислить объекты (файлы, коммиты, капли и т. Д.) Один за другим, просто потому, что git упаковывает их в один файл по соображениям эффективности. По той же причине вы увидите только скрытую папку .git при клонировании, файлы будут созданы только в том случае, если был загружен полный пакетный файл.

Если вам интересно, эти файлы будут загружены в .git/objects/pack/ с таким именем, как tmp_pack_XXXXXX. (позже он будет переименован в нечто вроде pack-*.pack с соответствующим pack-*.idx файлом)

0

Я принимаю ответ @Lekensteyn.

Если вы хотите отслеживать удаленные команды git, добавьте в свой терминал следующие переменные окружения. Это поможет вам заглянуть в то, что выполняется за кулисами команды git.

export GIT_TRACE_PACKET=1 
export GIT_TRACE=1 
export GIT_CURL_VERBOSE=1 

Ссылка: https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

Пример Клонирование Результат после экспорта enter image description here

enter image description here

enter image description here enter image description here