Изучение систем контроля исходного кода и управления версиями

Завершено

Использование управления исходным кодом и версиями является основополагающей практикой DevOps. Это также необходимо для таких методик, как непрерывная интеграция и инфраструктура как код, оба из которых являются важными для достижения полного потенциала DevOps. Организация в нашем примере сценария должна просмотреть текущую стратегию разработки программного обеспечения для совместной работы и перейти к модели распределенного управления версиями, например Git, особенно учитывая планы использования GitHub для управления жизненным циклом программного обеспечения. Однако для этого требуется четкое понимание принципов управления версиями и исходным кодом и их преимуществ, которые мы рассмотрим здесь.

Контроль исходного кода и управление версиями

Снимок экрана системы управления версиями, содержащий несколько файлов и их историю версий.

Термины управления версиями и управления версиями часто используются взаимозаменяемо, и во многих контекстах они ссылаются на одну и ту же концепцию. Как правило, оба из них связаны с практикой управления изменениями кода в общей среде разработки. Однако вы можете столкнуться с более нюансированными ситуациями, где их значение слегка отличается. В этих сценариях система управления версиями назначает систему, которая управляет изменениями файлов исходного кода, а управление версиями включает управление изменениями любого типа файлов в целях, которые выходят за рамки исходного кода. Для обеспечения согласованности мы будем использовать термин управления версиями для представления репозиториев программного обеспечения на основе Git, доступных в GitHub и Azure DevOps.

Каковы преимущества управления версиями?

Управление версиями отслеживает изменения файлов в рамках своей области управления. Это обеспечивает широкий спектр преимуществ:

  • Отслеживание журналов и версий: у вас есть возможность просматривать журнал изменений в любом файле, включая возможность определить, когда произошло каждое отдельное изменение и что было их областью. Это также обеспечивает трассировку, как правило, путем связывания каждого набора изменений с уникальным идентификатором.

  • Откат и восстановление. Если возникла ошибка или проблема, можно легко вернуть изменения для восстановления известной рабочей версии затронутого файла.

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

    Снимок экрана: стратегия ветви с несколькими ветвями, включая основные, исправление ошибок и функции.

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

  • Автоматизация: управление версиями является важной частью непрерывной интеграции и автоматизированных развертываний. Автоматическая сборка и тестирование можно активировать автоматически, когда новая версия кода отправляется в репозиторий управления версиями или объединяется с основной ветвью. Различные версии кода можно развернуть в разных средах.