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

Репозиторий — понятие и виды

Репозиторий (от англ. repository, сокр. «репо») — хранилище данных, предназначенное для централизованного хранения, управления и версионирования информации. В наиболее распространённом употреблении термин обозначает сервер или каталог, где размещён исходный код программного обеспечения вместе с его историей изменений. Репозиторий — базовый инструмент систем контроля версий, таких как Git, Subversion (SVN) и Mercurial.

Репозиторий в системах контроля версий

Назначение

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

Устройство репозитория Git

Git — наиболее популярная на 2020-е годы СКВ. Репозиторий Git представляет собой каталог, содержащий подкаталог .git, где хранятся все данные проекта: объекты (блобы, деревья, коммиты, теги) и ссылки (указатели веток HEAD, веток и тегов). Git работает с локальными репозиториями: у каждого разработчика на компьютере полная копия истории, что отличает его от централизованных систем вроде SVN.

Основные понятия:

  • Локальный репозиторий — копия на машине разработчика, включая всю историю.
  • Удалённый (remote) репозиторий — версия на общем сервере (например, GitHub, GitLab, Bitbucket), с которой синхронизируются локальные копии.
  • Ветка (branch) — независимая линия разработки внутри репозитория.
  • Коммит (commit) — снимок состояния файлов с метаданными: автор, время, сообщение.

Централизованные репозитории

В Subversion репозиторий — единое серверное хранилище, доступ к которому осуществляется по сети. Каждый файл хранится в виде цепочки изменений (ревизий), а рабочая копия разработчика содержит только текущее состояние. Централизованная модель проще в администрировании, но требует постоянного доступа к серверу.

Хостинг-платформы для репозиториев

Крупнейшие веб-сервисы, размещающие репозитории Git:

ПлатформаОператорОсобенности
GitHubMicrosoftКрупнейший хостинг, интеграция с множеством сервисов CI/CD
GitLabGitLab Inc.Открытая версия (Community Edition), встроенная CI/CD
BitbucketAtlassianИнтеграция с Jira и другими инструментами Atlassian
Codebergнекоммерческая организацияХостинг на базе Gitea, ориентированный на сообщества

В России для размещения репозиториев также используются собственные платформы и локальные инсталляции GitLab/Gitea на корпоративных серверах.

Виды репозиториев

По назначению:

  • Исходный код (source code) — основной тип, содержит программный код, конфигурации, скрипты сборки.
  • Пакетные (package repositories) — хранилища бинарных пакетов для операционных систем: APT (Debian/Ubuntu), YUM/DNF (RHEL/Fedora/CentOS), Pacman (Arch Linux). В них хранятся скомпилированные программы с метаданными зависимостей.
  • Docker-репозитории — образы контейнеров, распространяемые через Docker Hub или приватные реестры.
  • Репозитории научных данных — цифровые архивы публикаций и наборов данных (например, arXiv, Zenodo).

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

В Git базовые команды работы с репозиторием:

  • git init — создание нового локального репозитория.
  • git clone — копирование удалённого репозитория на локальную машину.
  • git add, git commit — фиксация изменений.
  • git push, git pull — отправка и получение изменений из удалённого репозитория.
  • git branch, git merge — создание и слияние веток.
  • git log, git diff — просмотр истории и сравнение версий.

Применение

Репозитории используются не только в разработке ПО. Они применяются в документообороте, конфигурации серверов (Infrastructure as Code), хранении дистрибутивов Linux, ведении обучающих материалов. Понятие «репо» прочно вошло в лексикон программистов и системных администраторов.

Историческая справка

Первыми СКВ с репозиториями были SCCS (1972, AT&T) и RCS (1982). Централизованные системы CVS (1986) и Subversion (2000) получили широкое распространение в 2000-е. Git, созданный Линусом Торвальдсом в 2005 году для разработки ядра Linux, привнёс распределённую модель: каждый разработчик владеет полным репозиторием, что резко повысило устойчивость к сбоям и удобство ветвления.

Источники:

  • Pro Git (Scott Chacon, Ben Straub), Apress
  • Руководство по Git (git-scm.com)
  • Subversion Book (Version Control with Subversion), O'Reilly
  • «Разработка интерфейсов в Git», лекционные материалы ведущих российских технических вузов
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru