Ветвление и слияние — Руководство по разработчике (серия 3 частей)
Или мой первый набор статей в этом блоге о разработке, я на самом деле не собираюсь напрямую говорить о коде. Вместо этого я собираюсь сосредоточить свое внимание на управлении источниками и на все, что связано с ветвлением и слиянием.
Мы все были там в качестве разработчиков — весело работая над новой функцией только для одной из двух вещей:
- В живой системе есть серьезная ошибка, и вам нужно применить новый Hotfix прямо в эту секунду. Вы ничего не можете с этим поделать, потому что вы на полпути к разработке новой функции
- Вы понимаете, что изменили какой-то код, которого не должны иметь, но не можете отменить в своей IDE, потому что вы закрыли и вновь открыли окно своего редактора
Прежде чем я нашел управление источником, это действительно меня разозлило.
Что такое управление источником?
В первую очередь управление источником (или версией (или версией) дает вам возможность отслеживать изменения в вашем коде, а также откат/отменить любые изменения, которые вы не должны иметь. Это также фантастический инструмент, позволяющий нескольким разработчикам сотрудничать и делиться одной и той же кодовой базой без необходимости пройти USB -драйв по офису (или по всему миру в сегодняшней удаленной рабочей среде).
Разве это не просто волшебство?
Любой, кто сделал какой -либо разумный объем развития, услышал, и, вероятно, наткнулся на GitHub в той или иной форме. GitHub, вероятно, самый известный хранилище исходного кода.
Я использую Azure DevOps в моей организации в минуту, которая основана на GIT, поэтому те же команды/функции, о которых я здесь говорю, применяются ко многим системам управления источниками.
Управление источником звучит круто, но что такое ветвление?
Разветвление
Управление источником решает большинство, если не все, проблемы, возникающие из -за изменений, внесенных в код. Будь то неправильно изменение модульного теста, чтобы он теперь не сбоил или простой тип.
Тем не менее, что вы делаете, когда есть несколько функций, над которыми работают одновременно, несколькими различными разработчиками. Одна единственная версия кода быстро становится кошмаром для управления.
Вы будете рады знать, есть ответ!
За последние 12 месяцев моя любовь к контролю источника выросла в геометрической прогрессии. Главная причина? Взвешивание!
Итак, представьте, что вы работаете над новой функцией в вашем приложении, когда вдруг требуется срочный горячий аппарат. Что вы делаете?
Даже с базовой системой управления источником вы все равно застряли бы с некоторым частично совершенным кодом, который не тестируется. Это оставляет ваш срочный Hotfix, застрявший за какой -то произвольной новой функцией, которая может занять недели.
Вот где входит разветвление.
Ветвление позволяет командам разработчиков легко сотрудничать внутри одной центральной базы кода. Когда разработчик создает филиал, система управления версиями создает копию базы кода на тот момент. Изменения в филиале не влияют на других разработчиков в команде. Дэн Радиган — Atlassian
Слияние
Слияние — это просто процесс объединения двух ветвей вместе. Вы объединяете одну ветвь обратно в другую, и в большинстве случаев это будет функция или филиал Hotfix обратно в более основную/долгосрочную ветвь. Надеемся, что это почти всегда бесшовное, но иногда может возникнуть головные боли.
Головные боли, вызванные конфликтами слияния.
Конфликт слияния — это если два или более разработчиков отредактировали ту же строку кода в том же файле. GIT довольно хорош в работе для себя, но иногда требуется небольшое вмешательство человека.
- Ошибки объединения в коде Visual Studio *
Это сообщение, или аналогично, станет проклятием вашей жизни. Существуют тонны различных стратегий для ветвления и слияния. За следующие несколько статей я собираюсь сосредоточиться на нескольких методах, которые я недавно испытал в моей организации.
Быстрое предисловие, в настоящее время мы являемся командой из двух человек. Требование к системе разветвления и слияния, вероятно, не столь высокое, как если бы вы Microsoft с более 300 разработчиками.
Тем не менее, я твердо верю в установление системы, где вы хотите быть, а не там, где вы сейчас находитесь.
Git поток
Gitflow — это стратегия управления репозиториями GIT, впервые предложенную Винсентом Дриссен. Он определяет, как и когда следует создавать новую ветвь кода, и как следует управлять слиянием вместе с указанными ветвями.
Изображение сделано с nvie.com
Он включает в себя новые филиалы для функций, исправлений ошибок и любых новых выпусков. «Мастер» ветвь всегда сохраняется с точной версией программного обеспечения, работающего в настоящее время в производстве. Отсюда начинается филиал разработки, и любые новые работы по разработке начинаются.
Выпуск поток
Выпуск Flow — это модель Microsoft ветвления, слияния и выпуска. Это то, что я только недавно наткнулся, и мне очень нравится его простота. Вы можете прочитать гораздо больше об этом здесь.
В основном терминам, одна «мастерская» ветвь постоянно работает. Независимо от того, что является новым кодом (функция или Hotfix), он разветвляется от Master.
Мастер всегда должен быть чистым, создаваемым и тестируемым, но не обязательно выпускать готовые.
Разработчик создает новую филиал для работы, которую они выполняют, завершает работу, а затем возвращается в репозиторий.
Затем код объединяется обратно в главную филиал с помощью запроса на притяжение. Проще говоря, запрос на вытягивание позволяет управлять слиянием кода. Правила могут быть установлены для контроля, кто может совершить. Сборка конвейера может даже начать предварительную выгоду от изменений и запустить набор тестов.
Как только релиз готов, из Мастера создается новая ветвь с разумным именем (релиз/v1.0.1). Затем его подталкивают к производству.
Как только системы не используют старую версию, ветвь может быть удалена или архивирована.
Просто, верно?
Стоит ли использовать ветвление и слияние?
Даже если вы разработчик с одним человеком, работая над своими личными проектами, привыкнуть к разветвлению и слиянию-отличное дополнение к вашим наборам.
Когда команда создать новую ветвь так же проста, как
git cakeout -b функция/mynewfeature
Тогда кто действительно может решить, что это не хорошая идея.
В следующих нескольких статей я собираюсь глубже погрузиться в Gitflow и выпустить поток и высказать свое мнение о плюсах и минусах обоих.
Ветвление и слияние — Руководство по разработчике (серия 3 частей)
Оригинал: «https://dev.to/jeastham1993/branching-merging-part-1-should-you-do-it-m9j»