Как клонировать/извлекать репо, получая только историю
Можно ли загружать репозитарии, ветки и теги, исключая капли и деревья? Я хотел бы иметь возможность просматривать историю и многое другое без скачивания файлов (это для Chromium repo, который представляет собой несколько концертов). Очевидно, что я не смогу увидеть, какие файлы были затронуты фиксацией, но это прекрасно.
Ответы
Ответ 1
Нет, или, по крайней мере, не использовать обычный доступ. Некоторые сайты предлагают веб-доступ, благодаря которому вы можете получать содержимое каждого объекта фиксации, не получая также объекты tree и blob, но обычный процесс приема объектов или тонких пакетов либо усекается на уровне фиксации (через --depth
), либо полный.
Разумеется, вы можете увидеть все видимые теги с помощью git ls-remote
а также с помощью любого разумного веб-интерфейса (было бы странно предоставить что-то вроде GitHub fancy API, если бы вы не предоставили теги таким образом :-)).
Обратите внимание, что перемещение всех коммитов через веб-API может быть чрезвычайно медленным, либо из-за необходимости останавливаться и ждать (если вы программируете его синхронно, а не как потоковый процесс) или из-за программы ограничения скорости на хосте (GitHub и Bitbucket кажутся для ограничения скорости).
Ответ 2
Мы создаем ghuser.io (расширенные страницы профиля GitHub), и любой способ получить историю коммитов без файлов очень помог бы нам масштабироваться.
Затем вам необходимо настроить зеркальный сервер с поддержкой GVFS (Git Virtual File System)/VFS For Git.
С июня 2016 года (вопрос OP) и в настоящее время (4 квартал 2018 года) Microsoft предложила VFS For Git (так как проблема 72 скоро будет решена) (февраль 2017 года) и позволяет вам разрабатывать репозитории TeraBytes (!) без загрузки файлов.
Сам GitHub должен поддержать это скоро.
Смотрите больше на gvfs.io, хотя я подозреваю, что доменное имя, которое теперь переименовано, чтобы отразить новое имя "VFS For Git": https://vfsforgit.org.
( Microsoft/VFSForGit.WWW
выпуск 9 закрыт, 28 ноября 2018 г.)
Ответ 3
Функция "Частичное клонирование" была добавлена в git 2.19.
Документация здесь: https://www.git-scm.com/docs/partial-clone
Для того, чтобы использовать это:
- Вам нужен git> = 2.19 как на сервере, так и на клиенте
- На сервере вам нужно включить функцию:
git config --global uploadpack.allowFilter true
-
git clone --filter=tree:0 REMOTE_URL
Ответ 4
Вы можете достичь этого с помощью GitHub Apis.
https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository