Skip to content

Git LFS ​

Arkvory хранит большие файлы git-репозиториев (Git LFS) и блокировки файлов, нужные проектам Unity и Unreal. Сам git-репозиторий остаётся там, где был (GitHub, GitLab, Gitea), а объекты LFS лежат в репозитории Arkvory с его правами, квотами, проверкой SHA-256, резервными копиями и зеркалами. Решение и границы — ADR 0065.

Подключение репозитория ​

В корне git-репозитория — файл .lfsconfig; его коммитят, и он работает у всей команды:

ini
[lfs]
	url = https://arkvory.example/lfs/games

[lfs "https://arkvory.example/lfs/games"]
	locksverify = true

git-lfs читает locksverify не из общей секции [lfs], а по ключу с адресом сервера lfs.<url>.locksverify, где <url> совпадает с lfs.url. Если git-lfs не подхватил её из .lfsconfig, задайте в локальной конфигурации: git config lfs.https://arkvory.example/lfs/games.locksverify true.

games — репозиторий Arkvory. При первом обращении git спросит учётные данные: имя любое, пароль — ключ Arkvory (персональный токен пользователя или сервисный ключ для CI). Git Credential Manager запомнит их. Ключ только для чтения позволяет clone и pull. Для push и блокировок нужны права записи.

Перенос существующего репозитория: настроить lfs.url, затем git lfs push --all origin, чтобы загрузить уже существующие объекты.

Блокировки ​

bash
git lfs lock Content/Maps/Level01.umap
git lfs locks
git lfs unlock Content/Maps/Level01.umap
  • locksverify = true (для адреса сервера, см. выше): перед push git проверяет, не изменены ли файлы, заблокированные другими.
  • Владелец блокировки показывается по имени пользователя или сервисного аккаунта.
  • Снять чужую блокировку (git lfs unlock --force) может только тот, у кого есть право удаления артефактов в репозитории.
  • Unity и Unreal умеют работать с блокировками LFS через свои плагины контроля версий; Arkvory отвечает по стандартному протоколу.

Что учесть ​

  • Нужен HTTPS: git передаёт ключ в каждом запросе.
  • lfs.url указывает на основной (пишущий) шлюз Arkvory, не на шлюз чтения.
  • Объекты LFS не удаляются политиками хранения: сервер не видит историю git и не может знать, что объект больше не нужен.
  • Зеркало Arkvory получает объекты LFS, и clone с зеркала работает; блокировки не зеркалируются.

Arkvory · ProAnimaStudio