Индикатор прогресса для git clone

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

5 ответов


Не совсем так. Есть различные этапы git clone:

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

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

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

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


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

   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

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

С Git 2.10 (Q3 2016),git clone --progress будет более многословен.

посмотреть совершить 38e590e Джеффа Кинга (peff)
(объединено Junio C Hamano в совершить a58a8e3 августа. 4-й 2016)

clone: используйте реальный метр прогресса для проверка подключения

потому что начальная проверка подключения для клонированного репозиторий может быть медленным,0781aa4 (clone: позволить пользователю знать, когда check_everything_connected запускается, 2013-05-03) добавлен a "поддельный" индикатор прогресса; мы просто говорим"Checking connectivity" когда начнется, и"


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

$project/.git/objects/pack

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

С этой информацией вы можете быть в состоянии глазное яблоко продолжительность.


как о git clone --progress ?