fbpx

Коммитить, пушить, мержить. Приобщимся к сленгу разработчиков и попытаемся разобраться, что такое системы контроля версий, почему в работе команды без них никак. Какие они бывают, чем похожи и чем отличаются. И зачем все это рекрутеру.

Присоединяйся к HRPR в сетях

Если разработчик работает себе тихонько над проектом один, сам пишет код, автоматические тесты (проверка кода на наличие ошибок — багов), рефакторит (улучшает коддля легкости внесения последующих изменений), выпускает релизы (версия продукта с ощутимыми изменениями для пользователя), то, может, система контроля версий ему и не нужна (на самом деле нужна). Но если над проектом работает несколько человек, все они вносят изменения и без системы контроля версий никак не обойтись. Давайте поговорим подробнее что же это такое.

Система контроля версий (VCS) — специальная программа для разработчиков, которая отслеживает изменения в коде и управляет этими изменениями. Вы создаете аккаунт в система контроля версий, заливаете в репозиторий (хранилище) код вашего проекта и даете разработчикам доступы к этому репозиторию. Теперь команда может работать одновременно над проектом и в любой момент получить актуальное состояние кода. В системе контроля версий видно кто, когда и какие изменения внес. Если была допущена ошибка, можно “откатить” эти изменения назад и исправить код.

Системы контроля версий возникли эволюционно, каждый день разработчики сталкивались со следующими проблемами:

  • затирания и потери изменений в коде,
  • потери части исходного кода.
  • конфликт изменений, сделанных разными разработчиками

При возникновении этих проблем приходилось проверять код глазами, что увеличивало риск просмотреть что-то и допустить ошибку, а также исправлять все конфликты руками. Системы контроля версий сама отслеживает изменения и подсвечивает несоответствия между версиями. Некоторые конфликты система может исправить сама, но при сложных конфликтах нужно непосредственное вмешательство специалиста.

Итак, наш словарь:

Коммитить — разработчик сохраняет изменения в коде, но локально, на сервер они не улетают, а ждут одобрения техлида проекта. Когда техлид просмотрел и одобрил код, он пишет “reviewed”, все, код можно пушить.

Пушить — заливать закоммиченные изменения на сервер, код добавляется в репозиторий (хранилище кода) и может исполняться машиной.

Мержить — разрешать конфликты, которые возникают при слиянии версий (изменения внесенные разными разработчиками). То есть, система сама подсказывает, где и какой конфликт возник, а также варианты его разрешения: оставить код разработчика 1, оставить код разработчика 2, исправить код вручную. Первые 2 варианта может исполнить VCS, третий вариант реализует разработчик — просматривает конфликтный код и ищет компромиссное решение.

Рассмотрим несколько популярных систем контроля версий:

Subversion (SVN) — одна из первых систем контроля версий, по сравнению с более современными проигрывает в функционале. Одноступенчатая работа — можно только коммитить (в этом случае код сразу попадает на сервер, а не сохраняется окально), пушить нельзя,  мержить сложно. Из особенностей — для работы всегда нужна сеть, может подтормаживать. Вполне в состоянии справиться с нуждами небольшого проекта, так как не позволяет работать распределенно.

Git — одна из самых популярных VCS с двухступенчатой работой: сначала нужно коммитить, потом пушить. Это здорово выручает, если есть проблемы с интернетом. Система была разработана в 2005 году создателем операционного ядра Linux — Линусом Торвальдсом. Сейчас Git используется в огромном количестве коммерческих проектов и проектов с открытым кодом.

CitHub — также популярнейшая система контроля версий, это веб-продукт, основанный на Git. Был разработан в 2008 году на  Ruby on Rails и Erlang. Github доступен в бесплатной версии для проектов с открытым исходным кодом. Именно и зарекомендовал себя как площадка для работы над Open Source проектами. Под каждым бесплатным аккаунтом можно создать неограниченное количество репозиториев, но публичных!  Для больших проектов предусмотрены различные платные пакетные тарифы.

Дополнительные функции Github:

  1. создание портфолио. Описание проектов привязывается к публичному репозиторию и вуаля — готово портфолио разработчика с кодовой базой, что дает возможность оценить его навыки еще до собеседования.
  2. создать страницу — резюме в доменной области github.io, где описать навыки, опыт и дать ссылку на проекты. Очень удобно, не нужно покупать хостинг и всегда можно дать ссылку рекрутеру на это резюме (описание опыта и портфолио — отличное сочетание).
  3. глобальный поиск. Для разработчика: поиск проектов, разбор ошибок, код с комментариями.
    Для рекрутеров: поиск сотрудников по резюме. Можно использовать просто поисковую строку, но есть и специальные инструменты:

Awesome Autocomplete for GitHub — поиск релевантных страниц пользователей и репозиториев, текст вводится в поисковую строку.

OctoHunt — поиск осуществляется по техническому стеку (языки, фрейворки, платформы и т.д.) и локации (Минск, Чикаго, Беларусь, США). Списком выдаются странички-резюме, релевантные запросу.

 Github Email — поиск имэйла по имени профиля разработчика.

Better Search for GitHub — похож на OctoHunt, но более с широким функционалом поиска по технологиям и даже репозиториям.

GitHub User Languages — инструмент для визуализации, приложение собирает и обрабатывает информацию по навыкам и опыту разработчиков и строит наглядные диаграммы.

CoderStats — приложение для анализа страницы кандидата с последующим выведением рейтинга в сравнении с коллегами.

GitHub Hovercard — выдаст всю информацию о пользователе: актуальную компанию, где трудится специалист, репозитории, локацию и количество фолловеров.

Glossary Tech — поможет начинающим специалистам разобраться в терминологии GitHub сразу же на странице сайта.

Bitbucket — система управления версиями из DevOps‑предложения Atlassian, поэтому легко интегрируется с другими его продуктами (Jira, Confluence). Богатый функционал намекает, что система подходит для больших сложные коммерческих проектов, которые не выкладывают код в публичный доступ, а наоборот оберегают его от раскрытия коммерческой тайны. Есть бесплатный вариант создания приватных репозиториев, но в таком случае владелец аккаунта может предоставить доступ только 4 другим пользователям для совместной работы. Для небольшой команды (5 человек) или стартапа этого вполне достаточно.

На Bitbucket в разы меньшее количество пользователей, чем на Github, ведь он появился значительно позже и многие не знают про условия бесплатного пользования.

Преимуществами Bitbucket в том, что в нем встроена интеграция с другими продуктами Atlassian. Если команда большая удобнее работать с Jira, если небольшая и задач немного, то подойдет и Trello. Также можно настроить права на развертывание кода на сервере, чтобы избежать случайных и нежелательных изменений в коде. Еще в Bitbucket есть система устранения инцидентов и откатывать изменения, приведшее к инциденту.

В целом, Bitbucket больше подходит для работы распределенных команд, а GitHub хорош для индивидуальных проектов. Сейчас GitHub все еще более популярен, но не обязательно так будет и через 5 лет.

Теперь вы знаете, что такое система контроля версий, какие они бывают, для чего нужны, сможете определить, с какой системой контроля версий взаимодействовал разработчик, был ли вообще этот опыт, нужно ли разработчику обучение или ментор на первое время. Также эти знания помогут вам грамотно составить заявку на вакансию и саму вакансию. Кроме того вы сможете искать специалистов на Github и Bitbucket с помощью специальных инструментов для поиска, многие из которых бесплатные.

На занятиях в школе HRPR вы пройдете технический ликбез.

Чтобы знать, какие особенности при поиске самых разных специалистов.

07

СЕНТЯБРЯ 2021

Старт группы HRPR. 125 часов занятий и подготовка вашего резюме для скорейшего входа в профессию.

Последнее из блога

hrpr school blogITHR & IT-Рекрутингвопросы на зачет
24 июня, 2021

SWIFT vs Objective-C: кто востребованнее?

Спрос на разработчиков iOS увеличивается с ростом количества пользователей мобильных устройств. Игры, приложения и другое программное обеспечение для Apple пишется на языках Swift и Objective-C. Рекрутер должен понимать, какой язык…
IT-МенеджментITHR & IT-Рекрутингвопросы на зачет
23 июня, 2021

Почему OKR удается внедрить не всем IT-компаниям?

Метод OKR (Objective and Key Results) — это один из способов управления IT-компанией, разработанный Джоном Дорром. В отличие от реалистичных метрик KPI, определяемых менеджментом, метод OKR предполагает постановку амбициозных целей,…
hrpr school blogITHR & IT-Рекрутингвопросы на зачет
17 июня, 2021

Xamarin для рекрутеров

Xamarin — это фреймворк платформы .Net, принадлежащий компании Microsoft. Он используется для разработки мобильных приложений на языках программирования C# и Xaml. Популярность получил благодаря своим кроссплатформенным возможностям, т.е. разработчик может…
hrpr school blogITHR & IT-Рекрутингвопросы на зачет
17 июня, 2021

Stack Overflow. Давайте поищем разработчиков там

В нашем блоге были статьи о том, как искать всех разработчиков на GitHub, как искать специалистов по машинному обучению на Kaggle, как искать дизайнеров на Dribbble и Behance, а сейчас…