Оптимизация работы с GIT

14.07.25

Разработка - Групповая разработка (Git, хранилище)

Все больше команд начинают использовать при разработке 1С GIT. На самом деле производительность GIT так же ограничена и зависима от различных настроек и подходов, как и всеми нами любимая платформа 1С. Для комфортной работы с GIT в случае больших репозиториев необходимо выполнять оптимизацию алгоритмов взаимодействия. Опишу свой опыт. 

Мне кажется, сейчас все больше команд начинают использовать при разработке 1С GIT. Кто-то строит полноценные CI/CD, кто то выгружает код в репозитории только для запуска проверок качества кода. Статей, как организовать взаимодействие 1С - GIT, на Infostart очень много, да и на каждой конференции обязательно что-то об этом рассказывают. Но на самом деле производительность GIT так же ограничена и зависима от различных настроек и подходов, как и всеми нами любимая платформа 1С. Для комфортной работы с GIT в случае больших репозиториев необходимо выполнять оптимизацию алгоритмов взаимодействия. Опишу свой опыт. 

 

Ускорение клонирования.

Чем больше у Вас в репозитории веток, файлов, коммитов - тем команда сlone будет работать медленнее, ведь она копирует все накопленные данные. К счастью, в GIT предусмотрено несколько оптимизаций, о которых я, к сожалению, узнал, уже столкнувшись с проблемой производительности.

 

1. Поверхностные клоны
Одним из эффективных способов ускорения операций клонирования является использование поверхностных клонов. Поверхностный клон извлекает только самые последние коммиты, а не всю историю репозитория. Это значительно сокращает объем передаваемых данных, что ускоряет процесс клонирования.

Чтобы выполнить поверхностное клонирование, используйте опцию с командой:--depth [глубина]

$ git clone --depth 1 https://github.com/yourusername/yourrepo.git

Эта команда извлекает только последний коммит, сокращая время и пропускную способность, необходимые для операции клонирования. Поверхностные клоны особенно полезны для новых членов команды, которым нужно быстро приступить к работе, или для конвейеров CI/CD, для которых требуется только последний код.

 

2. Частичные клоны

В дополнение к поверхностным клонам, узкие клоны также могут помочь оптимизировать производительность. Частичные клоны — это расширенная функция, которая позволяет клонировать только те части репозитория, которые вам нужны. Это особенно полезно для очень больших репозиториев, где загрузка всей истории и всех файлов нецелесообразна. С помощью частичных клонов можно указать, какие файлы или каталоги следует включить, уменьшая объем передаваемых данных.

Чтобы выполнить частичное клонирование, используйте команду:-sparse-checkout

Разберем весь процесс по пунктам (допустим, нам нужно скопировать каталог folder из репозитария project, созданного пользователем user):

  1. копируем пустой репозитарий: git clone –no-checkout https://github.com/user/project
  2. переходим в только что созданный репозитарий: cd project
  3. запускаем sparse-checkout: git sparse-checkout init –cone
  4. делаем частичный чекаут: git sparse-checkout set project/folder

Итак, теперь в локальном репозитарии содержится только необходимая папка.

Следует заметить, что команда sparse-checkout появилась только в git версии 2.25. Поэтому, если Вы увидели ошибку “git: ‘sparse-checkout’ is not a git command”, проверьте текущую версию командой git –version.

 

Новое в версии GIT 2.49

Опция git clone научилась делать вариант shallow clone для одного коммита, который необязательно находится на конце какой либо ветки.

Чтобы выполнить shallow clone, используйте используйте опцию с параметром: revision

$ git clone revision=хеш --depth 1 https://github.com/yourusername/yourrepo.git

 

Обслуживание репозиториев

Надо не забывать проводить обслуживание репозиториев. Все описано в документации, но кто же ее обычно читает). Команда простая:

$ git gc --auto

 

Точно ли Вам нужно хранить в репозитории все?

Так как GIT в первую очередь предназначен для хранения текстов, то хранение двоичных данных ему противопоказано. Если посмотреть на типовую конфигурацию 1С, то в ней помимо кода и файлов XML с описанием метаданных есть драйвера в макетах, картинки. При запуске команды Выгрузить конфигурацию в файлы также в каталоге еще появляется файл cf (конфигурация поставщика). А точно ли нам нужны данные файлы для проведения, например, проверки кода на качество? Чем больше таких файлов мы помещаем в репозиторий, тем медленнее работает GIT. Самый простой способ - это просто удалять такие файлы перед помещением. Если же нам они все же нужны, то можно применить следующие решение.

GIT LFS

Git Large File Storage | Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.

 

Как это работает?

Git LFS заменяет большие файлы в репозитории текстовыми указателями, которые хранятся внутри репозитория, а фактические данные файлов — на удалённом сервере. 

Это позволяет:

  • Уменьшить размер репозитория — большие файлы не хранятся непосредственно в нём, а только указатели. 
  • Ускорить операции с репозиторием, так как Git не загружает большие файлы при каждой операции. 
  • Упростить совместную работу — команды получают только указатели, а фактические файлы загружаются с удалённого сервера по запросу. 

При этом Git LFS сохраняет историю изменений больших файлов, что позволяет отслеживать их и возвращаться к предыдущим версиям. 

 

Полезные настройки.

Не забываем что у Git есть множество настроек, часть из которых может влиять на производительность.

Настройки Git имеют три уровня:

  1. Системный уровень. Применяется ко всем пользователям системы. 
  2. Глобальный уровень. Применяется к текущему пользователю во всех репозиториях. 
  3. Локальный уровень. Применяется только к определённому репозиторию. 

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

 

Настройка
core.packedGitLimit
core.packedGitWindowSize
core.bigFileThreshold
pack.windowMemory
pack.packSizeLimit
status.aheadBehind
protocol.version
core.fscache
core.preloadIndex

 

 

Не буду приводить перевод описания, в инструкции на сайте Git все описано. 

Спасибо всем, кто прочитал, буду рад узнать о Вашем опыте.

Вступайте в нашу телеграмм-группу Инфостарт

ускорение оптимизация гит git усеченный клон коммит частичный clone производительность адаптация

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Программист Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    240    1    0    

0

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Информационная безопасность Инструменты администратора БД Системный администратор Программист 1С 8.3 Беларусь Россия Казахстан Абонемент ($m)

Как реализовать безопасное маскирование данных в процессе CI/CD без создания промежуточных копий баз. Объясняем, как использовать инструмент pg_anon для автоматизации скрытия персональных данных при тестировании и развёртывании, сохраняя целостность и структуру информации. Материал объединяет практику Site Reliability Engineering (SRE) с задачами защиты данных, демонстрируя подход, при котором разработчики и DevOps;инженеры могут работать с реалистичными, но обезличенными данными, не нарушая требования безопасности и конфиденциальности.

1 стартмани

11.09.2026    223    Ninel_S    0    

0

DevOps и автоматизация разработки Администрирование СУБД Групповая разработка (Git, хранилище) Системный администратор Программист Руководитель проекта Стажер 1С 8.3 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1C:ERP Беларусь Россия Казахстан Абонемент ($m)

В четвёртой части серии 1C:SRE-Suite мы переходим к практической автоматизации развёртывания отказоустойчивого кластера PostgreSQL для высоконагруженных систем 1С на Linux. В материале подробно разбирается инженерное решение без HAProxy — с использованием виртуального IP-адреса и vip-manager от CYBERTEC, обеспечивающего прямое подключение к активному мастеру без лишних задержек и точек отказа. Показана структура Ansible-модуля: подготовка ОС, развёртывание etcd, настройка Patroni с параметрами для больших нагрузок 1С. В конфигурационный шаблон Patroni автоматически закладываются параметры, критически важные для высоконагруженных баз данных, запуск vip-manager и полная автоматизация создания трёхнодового кластера. В конце — пошаговый Quick Start и планы развития модуля, включая резервное копирование, оптимизацию ОС Linux и rolling updates PostgreSQL.

1 стартмани

11.09.2026    206    Ninel_S    0    

0

DevOps и автоматизация разработки Администрирование СУБД Групповая разработка (Git, хранилище) Системный администратор Программист Руководитель проекта Стажер 1С 8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Предприятие 8. Транспортная логистика, экспедирование и управление автотранспортом КОРП 1C:ERP Беларусь Россия Казахстан Абонемент ($m)

В корпоративных инсталляциях «1С:Предприятие 8.3» под управлением PostgreSQL всё чаще проявляются архитектурные пределы масштабирования: рост числа пользователей, обязательная маркировка, плотный поток API-интеграций и высокая стоимость простоя. Вводная часть цикла разбирает ключевые факторы современной эксплуатационной нагрузки и формирует инженерную методологию эволюционной модернизации без остановки продуктивного контура. Материал основан на практическом кейсе «Торговый контур» и показывает, как определить целевые метрики (p95, MTTR, APDEX), выстроить наблюдаемость, стабилизировать работу кластера и подготовить инфраструктуру к дальнейшему масштабированию. Публикация задаёт фундамент для последующих частей, посвящённых телеметрии, оптимизации PostgreSQL, CI/CD и архитектурному росту.

1 стартмани

10.09.2026    361    Ninel_S    0    

4

DevOps и автоматизация разработки Linux HighLoad оптимизация Групповая разработка (Git, хранилище) Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Беларусь Россия Казахстан Абонемент ($m)

Системный анализ архитектурных границ масштабирования учетных систем «1С:Предприятие 8.3» под управлением PostgreSQL в ОС Linux. Формулирование инженерной методологии сквозного проекта «Торговый контур», определение измеримых целевых показателей (p95, MTTR, APDEX) и стратегии поэтапной модернизации эксплуатационного контура без остановки промышленных учетных процессов.

1 стартмани

07.09.2026    696    Ninel_S    9    

1

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Абонемент ($m)

Декларативный pipeline в GitHub Actions, тонкости лицензирования в Docker (--net=host), изоляция RUN_ID и интеграция со сборочным конвейером 1C:SRE-Suite. Вторая часть практического руководства (https://infostart.ru/public/2779597): от первого коммита до детерминированного синтаксического гейта на headless-раннере Linux

1 стартмани

03.09.2026    967    Ninel_S    0    

3

DevOps и автоматизация разработки Тестирование QA Групповая разработка (Git, хранилище) Программист 1С:Предприятие 8 Бесплатно (free)

Четыре года в интеграторе я работал с git и EDT. Git после хранилища полюбил сразу: видно, кто и что менял. С EDT сложнее: тормозит, ошибки при обновлении ERP, автономный сервер внутри него работает только с файловой базой. На новой работе команда захотела перейти на git, я развернул EDT, и оно на второй день разрушило проект при загрузке расширения. Тогда я решил дать команде git с привычным Конфигуратором и инструмент, который за минуту доносит коммит до базы через ibcmd, вместо получасовой загрузки из файлов. На новой работе разрешили ИИ, и я написал это приложение с его помощью: от чтения документации и первого ТЗ до идей в электричке. Впервые за годы снова почувствовал себя творцом, а не закрывателем задач. По дороге приросли выгрузка, объединение и проверка конфигурации по коммитам, YAxUnit и режим MCP-сервера. В статье: схемы, скриншоты, грабли и честный список ограничений. Ссылки пока нет: хочу понять, нужно ли это кому-то, кроме меня.

03.09.2026    10066    KatanaDragon511    28    

38

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Бесплатно (free)

Пакетный запуск Конфигуратора 1С на Linux таит опасную ловушку: при критических ошибках утилита DESIGNER завершается с кодом возврата 0 - «всё хорошо». Дефект уходит на продуктив. Мы открываем проект 1C:SRE-Suite - набор проверенных инструментов для надёжной эксплуатации 1С на Linux: • пятислойный сборочный скрипт с защитой от False Success (BOM, кодировки, lock-файлы, diff с Git) • Мягкая ротация процессов "rphost" через RAS API без обрыва сеансов • EDT ; Конфигуратор: CLI-мост для CI/CD на Node.js • Готовые конфиги logcfg.xml и nethasp.ini для боевого сервера • systemd-шаблоны для фонового мониторинга кластера Проект в активной разработке, лицензия MIT. Ждём ваших тест-репортов и PR.

03.09.2026    932    Ninel_S    0    

1
Для отправки сообщения требуется регистрация/авторизация