Индикатор прогресса для git clone - PullRequest
19 голосов
/ 09 января 2011

Возможно ли получить индикатор выполнения при выполнении git clone? Мне интересно, потому что я сейчас делаю git clone, который занял несколько минут, и мне было бы интересно узнать, скоро ли он закончится.

Ответы [ 5 ]

16 голосов
/ 09 января 2011

Не совсем. Существуют различные этапы git clone:

  1. обнаружение объектов, которые необходимо отправить («Подсчет объектов: nnn»)
  2. сжать и отправить эти объекты
  3. индекс полученной пачки
  4. проверить полученные файлы

Этап 1 включает в себя прохождение графа коммитов от каждой ветви ветвления, где обнаруживаются все коммиты и связанные с ними объекты: поскольку заранее неизвестно, сколько коммитов существует, прогресс этого не может быть измерен. К сожалению, часто это занимает много времени в операции клонирования.

Этап 2 имеет счетчик прогресса, хотя он учитывает объекты, а не объем (поэтому его скорость варьируется, особенно если в репо большие капли)

Этапы 3 и 4 имеют счетчики прогресса, хотя обычно они намного быстрее, чем предыдущие два этапа.

15 голосов
/ 07 мая 2014

Вы можете сделать:

   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
7 голосов
/ 05 августа 2016

В настоящее время я делаю 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() теперь знает, как сделать реальный индикатор прогресса, мы можем отброситьфальшивый и использовать его вместо этого.

2 голосов
/ 06 мая 2014

Возможно, вы захотите взглянуть на папку

$project/.git/objects/pack

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

С помощью этой информации вы сможете увидеть продолжительность.

0 голосов
/ 24 сентября 2014

Как насчет git clone --progress?

...