Про репозитории, и открытый код мы поговорили в прошлый раз. Понятия стали более менее понятными.
Дальше в блогах разработчиков мне всегда встречалось слово git. И всегда разработчики клонировали репозитории через команду git clone. А проекты они хранили на Гитхабе.
Что же это за git (гит) такой? Что за GitHub (Гитхаб)?
Начал читать и пробовать.
git - это программа для управления исходным кодом. Казалось бы, чего этим кодом управлять, это же просто текст. Но нет. Код хранится в репозиториях, с ним работают часто несколько человек, нужна версионность, чтобы можно было откатиться назад. Или распраллелить разработку на несколько команд, чтобы они друг другу не мешали и могли еще скачать себе код локально на машину из репозитория, чтобы с ним работать, а потом грузить обратно. Это лишь малая часть того, с чем придется столкнуться. И всего этого не сделать без программ управления исходным кодом - такой тип программ называют Source Code Management Tools. Программа бесплатная и с открытым исходным кодом. Работает быстро и эффективно от маленьких до очень больших проектов. Программе 19 лет!
История появления гита не такая простая. Во времена ранней разработки ядра Линукса изменения в коде передавались в виде патчей в архивах. В 2002 году команда разработки ядра Линукса стала использовать проприентарную систему БитКипер. Позднее отношения между сообществом, разрабатывавшим ядро Линукса и компанией, которая владела Биткипером, стали портиться и она запретила использовать Биткипер бесплатно. Сообщество стало разрабатывать свой инструмент, взяв за основу лучшие стороны Биткипер, а также устранение слабых сторон, о котрых они узнали за время использования программы. 1
Цели у нового инструмента были такие:
- скорость
- простой дизайн
- поддержка разработки тысячи параллельных веток
- полностью распределённая
- способная работать с огромными проектами, такими как ядро Линукса (скорость и размер данных)
С 2005 года гит стал стандартом в мире разработки для управления исходным кодом.
Работает через консоль, но можно установить GUI. Есть документация.
Github
Настроить гит на сервере можно самостоятельно. Есть разные протоколы обмена данными с репозиторием, в том числе простой http. Потребуется время, чтобы разобраться как настроить роли людей, дать доступы, организовать репозиторий. Это время, которое будет потрачено на администрирование пространства, в котором будет храниться и трекаться наш код.
В какой-то момент некоторые ребята подумали, а что если мы возьмём на себя управление и настройку репозитория? Тогда разработчики смогут получить сразу готовый репозиторий. Тогда им не потребуется тратить время на настройку. Так и появились GitHub, GitLab и многие другие сервисы - которые дают тебе готовый и организованный репозиторий. Может через git начать работать сразу.
Разработчикам удобно - они могут загрузить свой код на хранение, да еще и доп.опции есть: доступ через браузер, возможность разместить свою документацию там же. GitHub бесплатен для закрытых репозиториев.
Нужно, однако, помнить, что все эти инструменты хранятся физически у других компаний, оказывающих этот сервис. Когда проект разрастётся, то нужно будет начинать платить, потому что лимитов бесплатной версии уже будет не хватать. На этом они и зарабатывают.
Гитхаб - это самый известный и популярный сервис для хранения кода. Почему именно он таким стал? Как говорит один из основателей - он просто появился в нужное время и был хорош, потому что разработчики этого сервиса сами им пользовались и хорошо понимали потребности. 2 Это теперь соц.сеть для программистов.
Гитхаб не единственный сервис - есть еще Гитлаб, Битбакет и другие. В том числе инструменты, которые упрощают создание репозитория на своём сервере самостоятельно.
CI/CD
Ещё один термин, который встречался - был
- CI/CD
- Continuous integration / continuous delivery - постоянная интеграция и постоянная доставка (приложения).
Разработка в наше время достигла такой скорости и эффективности, что люди подумали:
А не добавить ли нам автоматизации? Пусть код автоматически компилируется в программу и выполняются автоматические тесты, чтоыб мы не тратили время, а потом пусть это готовое приложение загружается сразу на конечный сервер.
То есть они придумали автоматизировать всю цепочку - как только загружен новый код в репозиторий.
Вот вся эта автоматизация и обозначается термином CI/CD. 3