Индикатор выполнения для git клона
Можно ли получить индикатор выполнения при выполнении git clone
? Мне интересно, потому что в настоящее время я делаю клон git, который занял несколько минут, и было бы интересно узнать, скоро ли оно закончится.
Ответы
Ответ 1
Не совсем. Для git clone
существуют различные этапы:
- открыть объекты, которые необходимо отправить ( "Подсчет объектов: nnn" )
- сжать и отправить эти объекты
- проиндексировать полученный пакет.
- проверить полученные файлы
Этап 1 включает в себя хождение по графу фиксации из каждой ветки ветки, находящей все коммиты и связанные с ними объекты: поскольку заранее не существует идеи о том, сколько коммитов существует, прогресс этого не может быть оценен. К сожалению, это часто случается, когда много времени в операции клонирования принимается.
В стадии 2 есть счетчик прогресса, хотя он подсчитывает объекты, а не объем (поэтому его скорость изменяется, особенно если репо имеет большие капли)
Этапы 3 и 4 имеют счетчики хода, хотя они обычно намного быстрее, чем предыдущие два этапа.
Ответ 2
Вы можете сделать:
du -s .git
чтобы отслеживать изменения размера временного содержимого, чтобы получить представление.
watch du -s .git
позволяет отслеживать, не переписывая команду. Что-то вроде однострочного ниже будет периодически давать вам скорость накопления данных в кб в секунду:
delay=5; prev=`du -sk .git/ | cut -f 1`; sleep $delay; while true; do cur=`du -sk .git/ | cut -f 1`; expr \( $cur - $prev \) / $delay ; prev=$cur; sleep $delay; done
Ответ 3
В настоящее время я делаю клон git, который занял несколько минут, и было бы интересно узнать, скоро ли оно закончится.
С git 2.10 (Q3 2016), git clone --progress
будет более подробным.
См. передать 38e590e Джеффом Кингом (peff
)
(Слияние с Юнио С Хамано в совершить a58a8e3 4 августа 2016 г.
clone
: используйте реальный индикатор выполнения для проверки связи
Поскольку первоначальная проверка соединения для клонированного репозиторий может быть медленным, 0781aa4 (clone
: сообщите об этом пользователю когда check_everything_connected
запущен, 2013-05-03) добавил "поддельный" счетчик хода; мы просто говорим "Checking connectivity
" когда он начинается, и "done
" в конце, между которыми нет ничего.
Так как check_connected()
теперь знает, как сделать реальный прогресс метр, мы можем отказаться от нашего поддельного и использовать его вместо этого.
Ответ 4
Возможно, вы захотите взглянуть на папку
$project/.git/objects/pack
При клонировании должен быть файл, начинающийся с tmp_pack_
. Он содержит загружаемый в настоящее время пакет git.
С помощью этой информации вы сможете наблюдать за продолжительностью.
Ответ 5
Как насчет git clone --progress
?