Новости программы Industrial Software Engineering
Укажите свой email для того чтобы получать полезные материалы по индустриальной разработке программного обеспечения
Новости программы Industrial Software Engineering
Укажите свой email для того чтобы получать полезные материалы по индустриальной разработке программного обеспечения

Git workflow. Ветки и задачи

Почему нужно защищать основную ветку (master). Как управлять изменениями, не боясь запутаться в параллельных задачах
Немного расскажу о рекомендуемом подходе к совместной работе при помощи веток git. Вам нужна защита "мастера". Рекомендуется его защитить от прямых пушей (git push), рекомендуется вести работу в отдельных ветках максимально независимых друг от друга, для того, чтобы у вас было меньше конфликтов, меньше каких-то потенциальных побочных эффектов, когда у вас одна ветка связана с другой и вы хотите смержить пулл-реквест, в котором на самом деле, к примеру, 7 задач. И вы не сможете смержить, пока эти задачи не окажутся сделанными. Полезно, чтобы одной ветке соответствовала одна задача и наоборот. То есть, чтобы изменения "жили" очень маленькими ветками. У вас тогда будет очень много веток, целый "лес" в репозитории, но при этом вы сможете всегда отследить, где и какие изменения были, к какой задаче они относятся. Если это комбинировать с задачами на github, то это будет очень надежный процесс. Если что-то сломается, то вы всегда сможете понять кто виноват, в какой исходник смотреть, где нужно вносить исправления, и так далее.

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

Нужно, чтобы была какая-то понятная процедура: как изменения с пулл-реквестов попадают в "мастер".

Вот такой подход я рекомендую использовать. Он достаточно просто звучит, и достаточно абстрактный. Основной принцип такой - в одной задаче - одна ветка, максимально независимая от всех остальных. Тогда у вас будет минимум конфликтов и минимум побочных эффектов; и все очень надежно.