Тихая революция в мире Систем Контроля Версий произошла еще в 2008 с появлением Git. С каждым годом всё больше разработчиков доверяют ему самое ценное. Не буду приводить статистику, она немного разнится в опросах, но одно остается верным: Git уже давно доминирует, SVN держится на втором месте, но всё больше отстает.
Итак, давайте познакомимся с Git, который может заменить программисту VSS и SVN:
Стоп! Кто все эти звери и почему их так много? Нужно выбрать одного из них или как?
Нет, вся троица в сумме реализует удобное использование git в компании.
Современный модульный подход к разработке вместо комплексного решения предлагает программисту собрать свой кастомный стек технологий и инструментов.
Голый git имеет своим единственным интерфейсом командную строку. Что вполне согласуется с принципом «необходимо и достаточно». Тем более что основных команд в нем всего около десяти – отменное сочетание простоты и гениальности.
Лисий GitLab реализует Web-сервис – git сервер и насыщенный функциями пользовательский интерфейс. Конкурируя с GitHab по количеству участников и проектов, он постепенно перетягивает команды к себе, так как больше подходит для приватной разработки внутри компаний, не практикующих open space, тьфу, open-source.
Черепашка-гит предоставляет оконный интерфейс Windows – встраивается в контекстное меню и предоставляет свои формы и редакторы для интерактивного взаимодействия с git, т.е. замещает собой командную строку и отвязывает от необходимости постоянно заглядывать на git Web сервер.
Перечислим принципиальные отличия подхода git от прочих аналогичных систем:
- Контроль версий основан не на хранении различий между файлами, а на «потоке снимков» целых файлов на каждый зафиксированный момент времени (коммит);
- Распределенная система позволяет полноценно работать без доступа к серверу, поскольку при инициализации клиента происходит полное клонирование репозитория. При отказе сервера репозиторий может быть восстановлен на новый сервер с любой клиентской машины;
- Основной единицей манипуляции и построения ветвей проекта является коммит. Ветка – не что иное, как указатель на крайний коммит. Инициирующая ветка master ничем не отличается от прочих веток. Можно переименовать её в version1 и ждать пока из неё вырастит более успешная ветка version2, которая и станет развиваться, а работы с веткой version1 прекратятся;
- Нелинейная разработка – общепризнанная киллер-фича git. Отдаленно похожая на принцип блокчейна, цепочка коммитов имеет жесткие связи типа родитель-ребенок, но гибкие возможности для разветвления и слияния;
- Целостность достигается повсеместным использованием хэш-сумм. Считается, что повредить базу данных коммитов и репозитория фактически невозможно;
- Высокая скорость при всех операциях, большинство из которых происходят локально, включая слияние ветвей (на сервере лишь фиксируется уже объединенный коммит);
- Все действия только добавляют новые данные в базу, поэтому любые данные можно восстановить;
- Удобная организация сделанных изменений в виде небольших порций, снабженных описанием;
- Продвинутый сквозной поиск, основанный на регулярных выражениях;
- Приятные фишки, вроде поиска и удаления ненужных пробелов в конце строк.
Выпуск №8, Санкт-Петербург, дата написания 19.01.2023