Найти в Дзене
Informatics

Git — распределённая система версий

Локальная система хранит файлы на одном устройстве, централизованная использует общий сервер, а распределённая — общее облачное хранилище и локальные устройства участников команды. В локальной системе удобно работать с большими проектами, но сложно взаимодействовать с удалённой командой. В централизованной системе налажена удалённая работа, но всё привязано к одному серверу. Любой сбой или взлом может повредить файлы проекта. История Разработка ядра Linux велась на проприетарной системе Bitkeeper, которую автор — Ларри Маквой, сам разработчик Linux — предоставил проекту по бесплатной лицензии. Разработчики, высококлассные программисты, написали несколько утилит, и для одной Эндрю Триджелл произвёл реверс-инжиниринг формата передачи данных BitKeeper. В ответ Маквой обвинил разработчиков в нарушении соглашения и отозвал лицензию, и Торвальдс взялся за новую систему: ни одна из открытых систем не позволяла тысячам программистов кооперировать свои усилия . Идеология была проста: взять подх
Оглавление

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

В централизованной системе налажена удалённая работа, но всё привязано к одному серверу. Любой сбой или взлом может повредить файлы проекта.

История

Разработка ядра Linux велась на проприетарной системе Bitkeeper, которую автор — Ларри Маквой, сам разработчик Linux — предоставил проекту по бесплатной лицензии. Разработчики, высококлассные программисты, написали несколько утилит, и для одной Эндрю Триджелл произвёл реверс-инжиниринг формата передачи данных BitKeeper. В ответ Маквой обвинил разработчиков в нарушении соглашения и отозвал лицензию, и Торвальдс взялся за новую систему: ни одна из открытых систем не позволяла тысячам программистов кооперировать свои усилия . Идеология была проста: взять подход CVS и перевернуть с ног на голову, и заодно добавить надёжности.

Начальная разработка велась меньше, чем неделю: 3 апреля 2005 года разработка началась, и уже 7 апреля код Git управлялся неготовой системой. 16 июня Linux был переведён на Git, а 25 июля Торвальдс отказался от обязанностей ведущего разработчика.

Торвальдс так саркастически отозвался о выбранном им названии git (что на английском сленге означает «мерзавец»).

Особенности реализации

Ядро Git представляет собой набор утилит командной строки с параметрами. Все настройки хранятся в текстовых файлах конфигурации. Такая реализация делает Git легко портируемым на любую платформу и даёт возможность легко интегрировать Git в другие системы (в частности, создавать графические git-клиенты с любым желаемым интерфейсом).

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

По умолчанию репозиторий хранится в подкаталоге с названием «.git» в корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории. Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория из корневого каталога этого дерева (или указав корневой каталог в параметрах программы). Репозиторий может быть импортирован с другого узла, доступного по сети. При импорте нового репозитория автоматически создаётся рабочая копия, соответствующая последнему зафиксированному состоянию импортируемого репозитория (то есть не копируются изменения в рабочей копии исходного узла, для которых на том узле не была выполнена команда commit).

GitFlic

-2

Это первый российский облачный сервис для разработки и обслуживания исходного кода программ. На GitFlic можно размещать как open-source проекты, так и приватные. Сервис обеспечивает хранение данных в сертифицированных российских дата-центрах. Они соответствуют требованиям надежности уровня Tier 3 по классификации Uptime Institute. Tier 3 — это стандарт надежности инфраструктуры и оборудования, который присваивается центрам обработки данных. Тот дата-центр, который соответствует стандарту третьего уровня, имеет специальное оборудование, чтобы выполнять ремонт и обслуживание систем без остановки работы.

Gitee

-3

Китайский сервис Gitee существует уже более семи лет, и в настоящее время им пользуются более 5 млн разработчиков и более 100 тыс. компаний. Платформа насчитывает более 10 млн репозиториев. Она выросла из OSChina, крупнейшего в Китае веб-сайта с открытым исходным кодом, который был запущен в 2008 году.

Gogs

-4

Еще один продукт китайской разработки, похожий на GitHub по дизайну. Однако за счет того, что Gogs написан на языке программирования Go, у него низкие требования к системным ресурсам, минимум зависимостей, а также простая установка и настройка.

RhodeCode

-5

Эта система управления репозиториями немецкой RhodeCode ориентирована на компании. Как и Gitlab, она частично поставляется с открытым исходным кодом, поэтому разработчики могут собрать собственную версию системы для работы. К RhodeCode можно подключать не только Git, но и Mercurial (система управления очень большими проектами кода) и Subversion-репозитории (централизованная система для управления версиями кода) с помощью единого интерфейса.

Launchpad

-6

Это платформа для запуска и управления проектами, созданная британской компанией Canonical, которая разработала операционную систему Ubuntu. С 2015 года Launchpad поддерживает Git-репозитории. Их на платформе уже более 26 тыс.