Открыть сервисСервис

Репозиторий: понятие и применение

Репозиторий (от англ. repository, сокращённо «репо») — место хранения данных, а в контексте информационных технологий — обычно сервер или каталог, содержащий файлы программного кода, документацию и метаданные проекта с полной историей изменений. Термин широко используется в системах контроля версий, пакетных менеджерах, базах данных и контейнерных реестрах.

Системы контроля версий

Наиболее частое значение слова «репо» связано с системами контроля версий (СКВ) — программами, отслеживающими изменения файлов и позволяющими нескольким разработчикам работать над одним проектом.

Локальные репозитории

В ранних СКВ (RCS, SCCS) репозиторий располагался на компьютере одного разработчика и хранил историю правок отдельных файлов. Такая схема не обеспечивала совместную работу: обмен изменениями выполнялся вручную, копированием файлов.

Серверные репозитории

Центральные системы (CVS, Subversion) размещали репозиторий на выделенном сервере. Разработчики получали рабочие копии с сервера и отправляли обратно изменения. Преимущество — единая точка хранения; недостаток — зависимость от доступности сервера и отсутствие локальной истории при его недоступности.

Распределённые репозитории

В системах класса DVCS (Mercurial, Bazaar, Git) каждый разработчик содержит полную копию репозитория вместе с историей. Работа возможна офлайн, а слияние изменений выполняется между равноправными копиями.

Git и GitHub

Наиболее распространённой СКВ в начале XXI века стал Git, созданный Линусом Торвальдсом в 2005 году для разработки ядра Linux. Git хранит репозиторий как набор объектов (блоки, деревья, теги) в каталоге .git, обеспечивая целостность данных через контрольные суммы.

Популяризации Git способствовали хостинговые сервисы:

СервисГод запускаОсобенности
GitHub2008Крупнейший хостинг; приобретён Microsoft в 2018 году
GitLab2011Открытая версия с возможностью самостоятельного размещения
Bitbucket2010Интеграция с экосистемой Atlassian

На этих платформах репозиторий доступен через протоколы HTTPS, SSH или собственный протокол Git, поддерживается ветвление, pull request'ы, непрерывная интеграция.

Другие значения термина

Пакетные репозитории

В Linux-дистрибутивах пакетный репозиторий — сервер, с которого менеджер пакетов (APT, DNF, Pacman) загружает установочные пакеты программ и метаданные. Примеры — Ubuntu Archive, Fedora Copr, Arch Linux Archive. Репозитории бывают официальными и сторонними (PPA, AUR).

Реестры контейнеров

Docker Hub, Quay.io, GitHub Container Registry — репозитории образов контейнеров. Каждый образ помечен тегом (версией) и хранится слоями для экономии места.

Репозитории данных

В корпоративных ИТ централизованные репозитории данных (data warehouse, master data management) собирают информацию из разных систем для аналитики и отчётности.

Библиотечные и музеологические репозитории

Вне ИТ «репозиторий» означает хранилище рукописей, архивных документов, музейных предметов. В цифровой гуманитаристике — база данных, где размещены оцифрованные объекты культуры.

Типичные операции с репозиторием

  • клонирование (clone) — создание локальной копии удалённого репозитория;
  • извлечение (fetch) — загрузка обновлений без слияния;
  • вытягивание (pull) — загрузка и автоматическое слияние изменений;
  • отправка (push) — передача локальных коммитов в удалённый репозиторий;
  • форк (fork) — создание собственной копии чужого репозитория на хостинге;
  • ветвление (branch) — параллельная разработка в пределах одного репозитория.

Структура репозитория Git

Минимальный Git-репозиторий — каталог с подкаталогом .git, где хранятся объектная база, ссылки (refs) на ветки и теги, журнал операций (reflog) и конфигурация. Рабочее дерево содержит актуальные версии файлов. Дополнительно размещается файл .gitignore, определяющий игнорируемые пути.

Значение

Репозитории стали инфраструктурной основой современной разработки ПО: в них хранится исходный код большинства открытых и проприетарных проектов, на них строятся процессы непрерывной интеграции и поставки (CI/CD). Понятие «репо» также употребляется в сленге разработчиков как синоним «проекта» или «каталога с кодом».

Источники: Pro Git (Скотт Чакон, Бен Страуб); документация Git (git-scm.com); документация APT и Docker; статьи ACM Queue о распределённых системах контроля версий.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru