2026 посуточная аренда Mac для больших Git и Git LFS:
shallow clone, partial clone и календарь канала на 1–3 дня
В окне одного–трёх дней монорепозиторий с Git LFS часто ломается раньше Xcode: топология клона, поэтапные LFS и свободный диск задают время. Гайд для маленьких команд, нужен одноразовый нативный macOS: три боли, матрица, семь шагов, три метрики, ссылки на стабильность загрузок, регион и задержки, SSH/VNC FAQ и арендуемый CI-узел.
Содержание
01. Три боли: полный клон, пики LFS, дрейф sparse
1) Полный клон съедает день ноль: в монорепо много исторических бинарников; при RTT 120–220 мс наивный git clone может занять 8–14 часов. Без инвентаризации глубины и LFS параллельные ретраи усиливают 429 и фрагментацию pack-файлов.
2) Параллельность LFS по умолчанию: монолитный git lfs pull даёт всплеск записи, затем провал скорости; Spotlight и индексация Xcode делят IO. Без изолированного DerivedData дерево «готово», но Archive падает на smudge.
3) sparse и CI: без фикстур — флейки тесты. Правила версионируйте и синхронизируйте с флагами CI. Корпоративный TLS? Сначала гайд по загрузкам.
02. Матрица: shallow vs blobless/partial vs sparse-checkout
Окно 1–3 дня: shallow для последних коммитов, blobless/partial для глубокой истории, sparse для одного поддерева приложения. Регион: латентность.
| Измерение | Shallow | blobless/partial | sparse |
|---|---|---|---|
| История | слабо вне глубины | средне, blobs позже | средне, пути |
| Нагрузка дня 0 | низ–средне | средне + fetch | низко с shallow |
| LFS | часто shallow→LFS | следить за fetch | меньше поверхность |
| Риск | теги/субмодули | старые клиенты | забытые пути |
03. Семь шагов
- Инвентаризация:
git rev-list --count,git lfs ls-files -s. - Топология:
--filter=blob:none+--depth, при необходимости sparse. - База: пропускная способность, первый checkout,
git count-objects -vH. - LFS волнами: пути,
GIT_LFS_CONCURRENT_TRANSFERS3–4. - DerivedData: отдельная папка, запас под Archive.
- Триаж: TLS, 429, smudge раздельно.
- Стирание: репозиторий, кэш LFS, отозвать PAT.
git clone --filter=blob:none --single-branch --branch main https://example.com/org/mono.git
export GIT_LFS_CONCURRENT_TRANSFERS=3
git lfs pull --include="ios/**"
04. Календарь канала 1–3 дня
| Длина | День 0 | День 1 | День 2 |
|---|---|---|---|
| 1 день | blobless/shallow + минимальный LFS | — | — |
| 2 дня | клон + основной LFS | остаток LFS, тесты | — |
| 3 дня | клон, инвентарь, CI | полный LFS | Archive, wipe |
См. гайд по CI-узлу — аренда не заменяет конвейер.
05. Команды и backoff
Для partial сначала git fetch. Зависимости: зеркала и таймауты.
06. Метрики и мифы
- M1: 41–58 % сбоев дня 0 — клон/LFS/диск.
- M2: LFS 8→3–4 экономит ~19–31 % времени ретраев.
- M3: 18–35 ГБ свободно перед Archive.
07. Только ноутбук vs нативная аренда
Минимальный риск — нативный macOS для клона, LFS и Archive. Удалённый доступ, цены, Xcode Cloud.