Цель
У меня есть удаленное 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.
Другие неудачные попытки
- svn export
Вдохновленный этим сообщением , я попытался:
time svn export https://github.com/PackardChan/chk2019-blocking-extreme/trunk z4svn
Но файлы lfs загружаются неправильно.Об этом также сообщается здесь .
архив git
Однако GitHub не поддерживает git-архив .
- глубина = 1
Я пытался, лучше не получалось.Это понятно, поскольку в моем репозитории только один коммит.
Я довольно новичок в git.Итак, я что-то упустил?