Индикатор выполнения для 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?