Более быстрая альтернатива клону git lfs из удаленных репозиториев GitHub? - PullRequest
0 голосов
/ 27 апреля 2019

Цель

У меня есть удаленное GitHub-репозиторий , которое использует git-lfs для хранения больших двоичных файлов.

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

Базовый подход (git lfs clone)

В качестве тестакак другие будут загружать мой репозиторий, я выполнил следующую команду на высокопроизводительном узле входа в систему (с 72 процессорами Intel Xeon) в кластере Linux, используя диск gpfs ​​и с этими версиями git и git-lfs.

  • git version 2.10.2
  • git-lfs / 2.3.4 (GitHub; linux amd64; go 1.9.1; git d2f6752f)
$ time git lfs clone --progress git@github.com:PackardChan/chk2019-blocking-extreme.git
Cloning into 'chk2019-blocking-extreme'...
remote: Enumerating objects: 138, done.
remote: Counting objects: 100% (138/138), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 138 (delta 20), reused 138 (delta 20), pack-reused 0
Receiving objects: 100% (138/138), 148.16 MiB | 36.59 MiB/s, done.
Resolving deltas: 100% (20/20), done.
Git LFS: (64 of 64 files) 7.29 GB / 7.29 GB                                                              

real    4m51.156s
user    7m14.044s
sys 0m28.360s

Thisзаняло около 5 минут даже в высокопроизводительном узле.И я заметил, что последняя строка вывода достигает 7.29 ГБ всего за 36 секунд.В остальное время работает git update-index -q --refresh --stdin (из того, что я узнал из команды top -c).

Поэтому я считаю, что производительность можно существенно улучшить, если можно пропустить update-index.Как упоминалось в «Целях», если скорость можно улучшить, я не против отказаться от контроля версий git.

Другие неудачные попытки

  1. svn export

Вдохновленный этим сообщением , я попытался:

time svn export https://github.com/PackardChan/chk2019-blocking-extreme/trunk z4svn

Но файлы lfs загружаются неправильно.Об этом также сообщается здесь .

архив git

Однако GitHub не поддерживает git-архив .

- глубина = 1

Я пытался, лучше не получалось.Это понятно, поскольку в моем репозитории только один коммит.

Я довольно новичок в git.Итак, я что-то упустил?

1 Ответ

0 голосов
/ 09 мая 2019

Я отвечаю на свой вопрос. Оказывается, проблема в том, что я не запустил git lfs install для настройки ~/.gitconfig.

git lfs install [options]

Выполните следующие действия, чтобы убедиться, что Git LFS настроен должным образом:

  • Установите фильтры clean и smudge под именем "lfs" в глобальной конфигурации Git.
  • Установите крюк предварительного нажатия для запуска git lfs pre-push для текущего хранилища, если оно запускается изнутри. Если "core.hooksPath" сконфигурирован в любой конфигурации Git (и поддерживается, т.е. установлена ​​версия Git как минимум 2.9.0), тогда в этот каталог будет установлен предварительный push-крюк.

После этого у меня есть еще 4 строки конфигурации из git config --list.

filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true

Теперь та же самая команда time git lfs clone --progress git@github.com:PackardChan/chk2019-blocking-extreme.git занимает всего около 1 минуты.

...