В системах контроля версий репозиторий — это структура данных, которая хранит метаданные для набора файлов или структуры каталогов . [1] В зависимости от того, является ли используемая система контроля версий распределенной, как Git или Mercurial , или централизованной, как Subversion , CVS или Perforce , весь набор информации в репозитории может дублироваться в системе каждого пользователя или может поддерживаться на одном сервере . [2] Некоторые из метаданных, которые содержит репозиторий, включают, среди прочего, историческую запись изменений в репозитории, набор объектов коммита и набор ссылок на объекты коммита, называемые заголовками .
Основная цель репозитория — хранить набор файлов, а также историю изменений, внесенных в эти файлы. [3] Однако то, как именно каждая система контроля версий обрабатывает хранение этих изменений, сильно отличается. Например, Subversion в прошлом полагалась на экземпляр базы данных, но с тех пор перешла на хранение своих изменений непосредственно в файловой системе. [4] Эти различия в методах хранения, как правило, привели к разному использованию контроля версий разными группами в зависимости от их потребностей. [5]
В программной инженерии система контроля версий используется для отслеживания версий набора файлов, обычно для того, чтобы позволить нескольким разработчикам совместно работать над проектом. Репозиторий отслеживает файлы в проекте, который представлен в виде графика .
Распределенная система управления версиями состоит из центрального и филиальных репозиториев . Центральный репозиторий существует на сервере. Чтобы внести в него изменения, разработчик сначала работает с филиальным репозиторием, а затем фиксирует изменения в первом.
Code Forge — это веб-интерфейс к системе контроля версий. Пользователь может просматривать репозитории и их составляющие файлы на самой странице.
Хотя форжи в основном используются для выполнения операций по контролю версий, некоторые форжи позволяют пользователям размещать статические веб-страницы , загружая их исходный код (например, HTML и JavaScript , но не PHP ) в репозиторий. Обычно это делается для того, чтобы предоставить документацию или целевую страницу для программного проекта.
Использование репозиториев в качестве места для загрузки веб-документов позволяет интегрировать контроль версий и, кроме того, обеспечивает быструю итерацию, поскольку изменения передаются через систему контроля версий вместо необходимости загружать файл через такой протокол, как FTP . [6]
Примерами такого рода услуг являются GitHub Pages и GitLab Pages .