>> Merge не делается до проверки работоспособностикаким образом это реализуется?
допустим, имеем такие ветки - master, testing, issue1, issue2
ветки issue* основаны на master, пусть даже одновременно (хотя на практике будет не так)
issue1 уже слита в testing и протестирована. есть MR на слияние issue2 в testing. Как мне получить состояние ветки testing после апрува MR для проверки работоспособности, не выполняя собственно MR? Я так понимаю, только вручную делать merge в локальной копии и потом push? но если issue2 по каким-то причинам сливается частично, то это получается достаточно трудозатраная операция с увеличенным шансом на ошибку... и всякие CI/CD сюда уже не прикрутить. или я ошибаюсь?
>> При таком подходе CI будет запускать сборку на новый коммит в PR-ветке, а также на новые коммиты в таргет-ветке (master).
я еще до настройки CI не дошел. и если есть возможность собирать MR перед их аппрувом - это решает много проблем. надо будет почитать на эту тему.
но с другой стороны - вероятность ошибки все равно полностью не исключается, и может произойти ситуация, что изменения таки нужно временно откатить из testing (не обязательно даже по причине ломающих изменений) - в такой ситуации можно каким-то образом выпилить конкретные MR (или на крайний случай - комиты) из ветки, чтобы потом можно было бы без проблем их накатить заново? Rebase, насколько я понимаю, откатит все изменения с какого-то момента, в том числе и те MR, которые нужно оставить. Не накатывать же их заново
>> master/develop/release
я пока остановился на master/testing/issue*
master - в любой момент может быть отправлен на prod
testing - ветка на dev сервере, где тестируются и апрувятся изменения
issue* - соответственно ветки для исправлений/новых фич
и у меня имеется некоторое недопонимание, на основании какой ветки нужно создавать ветки для issue - master или testing? пока в этом проекте я работаю один, а заказчик апрувит изменения пачками, мне удобнее каждый новый issue делать на основе testing, чтобы потом меньше мержить. но у меня стойкое ощущение, что это не совсем корректно в случае командной работы, т.к. например я могу сделать ветку с включением тех изменений, которые позже могут быть откачены, и это со временем обязательно приведет к проблемам. в master же всякого рода откаты - это уже исключительная ситуация, насколько я понимаю.
ну а release же должен быть tag-ом на master, или тут тоже есть какие-то подводные камни и лучше держать для этого отдельную ветку?