Всем привет.
У нас есть git-овая репа, в репе много файлов.
Изредка приходится доливать туда изменения "снаружи".
В итоге получается, что при выполнении git merge origin/branch_with_new_code_snaruji образуется дофигища конфликтов.
Приходится в одиночку на локальной тачке резолвить все конфликты и потом делать git push.
Вопрос: есть ли в гите какой-нибудь хитрый способ распараллелить этот процесс?
Может можно запушить код вместе со всеми конфликтами, а потом "каждый хватает файл, резолвит конфликт, пушит"?
Или какие-то другие неочевидные способы?
У вас есть целевая ветка development, и несколько веток фичей: feature_1, feature_2.
1) после (почти?) каждого принятого пул-реквеста все программисты мержат development в ветку своей фичи
2) ветка фичи по возможности делается минимальной и заливается на development как можно быстрее
Так конфликтов будет максимум на 5 минут и не будет необходимости параллелить мердж. А при любой непонятке вы зовете человека, который сделал успешный пул-реквест и вдвоем разбираетесь в этом.
Судя по тому, что вы в девелопмент стараетесь запушить, а не выходит - вы не делаете мердж с девелопментом каждый день и собираете все конфликты, откладывая их на последний день.
Да, как-то так.
Однако делать merge чаще, чтобы конфликтов было меньше - не получается.
Поэтому хочется найти чисто технический способ чинить много конфликтов параллельно!
Павло Пономаренко, Внешние факторы. Насяльника говорит "фигачь фичу! merge потом будешь делать!"
Исторически сложилось так, что у нас несколько этапов: фигачим фичи, правим баги, релизим продукт, доливаем много кода из "мастера", мучительно резолвим конфликты, уходим на следующий круг.
Вова, ну вы ведь профессиональный программист, а не раб, которого гонят батогами.
Скажите начальнику: "Процесс мержа - часть процесса разработки фичи".
Вам надо фиксить отвратительный процесс, а не искать костыли. Пока у вас есть серьезная проблема, которая реально сказывается на команде - поднимите этот вопрос и исправьте процесс.
Вова, ну так те, кто говорит начальнику откуда узнают, какой у вас процесс? Откуда они знают, делаете ли вы мерж каждый день или раз в две недели? Для них изменится только то, что уменшится количество багов, которые добавляются из-за тяжелого процесса мержа.
Они не знают, какой у нас процесс :)
Но очень нервно реагируют на "нам нужна неделя на merge" :)
И если эту неделю размазать на "один час в день", то начнут спрашивать, "а чем это вы тут занимаетесь?".
Понятно, что есть джира и в ней есть часы, по которым они могут ориентироваться.
Пожалуй отвечу сам себе.
Коллеги в итоге запилили питонячую тулзу для этого.
После мёржа все конфликты записываются в отдельный файлик, а сами конфликтные файлы пушатся в репу.
Потом все дружно достают конфликты из списка, переводят конфликтный файл в удобоваримое (для mergetool) нечто и резолвят.
Профит.