Короче говоря, потому что слияние часто является другим местом для того, чтобы что-то пошло не так, и нужно всего лишь один раз пойти не так, чтобы люди очень боялись снова с этим сталкиваться (один раз укушенный дважды, если хотите).
Итак, допустим, мы работаем над новым экраном управления учетной записью, и оказывается, что в рабочем процессе «Новая учетная запись» обнаружена ошибка. Хорошо, мы выбираем два разных пути - вы заканчиваете управление учетными записями, а я исправляю ошибку с новыми учетными записями. Поскольку мы оба имеем дело с учетными записями, мы работали с очень похожим кодом - возможно, нам даже пришлось настраивать одни и те же фрагменты кода.
Сейчас у нас есть две разные, но полностью работающие версии программного обеспечения. Мы оба выполнили фиксацию наших изменений, мы оба должным образом протестировали наш код, и независимо друг от друга мы уверены, что проделали отличную работу. Что теперь?
Что ж, пришло время слиться, но ... дерьмо, что теперь происходит? Мы могли бы очень хорошо перейти от двух рабочих наборов программного обеспечения к одному, унифицированному, ужасно сломанному куску недавно ошибочного программного обеспечения, в котором ваше Управление учетными записями не работает, а Новые учетные записи повреждены, и я даже не знаю, сохранилась ли старая ошибка. ,
Возможно, программное обеспечение было умным, и в нем говорилось о конфликте, и настаивали на том, чтобы мы давали ему указания. Ну, дерьмо - я сажусь, чтобы сделать это, и вижу, что вы добавили какой-то сложный код, который я не сразу понимаю. Я думаю, что это противоречит внесенным мною изменениям ... Я спрашиваю вас, и когда у вас появляется минутка, вы проверяете и видите мой код, который вы не понимаете. Один или оба из нас должны занять время, чтобы сесть, составить правильное слияние и, возможно, перепроверить всю эту чертову вещь, чтобы убедиться, что мы ее не сломали.
Тем временем 8 других парней пишут код, как и садисты, я сделал несколько небольших исправлений ошибок и отправил их, прежде чем узнал, что у нас конфликт слияния, и, кажется, настало время сделать перерыв, и, возможно, вы выходной или застрял на собрании или что-то еще. Может, мне просто взять отпуск? Или сменить карьеру.
И вот, чтобы избежать этого кошмара, некоторые люди стали очень бояться обязательств (что еще нового, не так ли?). Мы, естественно, рискуем избегать подобных сценариев - если только мы не думаем, что мы отстой и не собираемся все испортить, и в этом случае люди начинают действовать с опрометчивой энергией. вздох
Итак, поехали. Да, современные системы спроектированы так, чтобы облегчить эту боль, и предполагается, что она сможет легко отступать, перебазировать, обесценивать, freebase, hanglide и все такое.
Но это все больше работы, и мы просто хотим нажать кнопку на микроволновой печи и приготовить обед из 4 блюд, прежде чем мы успеем найти вилку, и все это кажется очень неэффективным - код это работа, он продуктивен, его значимое, но изящное управление слиянием просто не считается.
Программистам, как правило, приходится создавать отличную рабочую память, а затем иметь тенденцию сразу же забывать все эти ненужные и переменные имена и области видимости, как только они закончили проблему, и обрабатывать конфликт слияния (или, что еще хуже, ошибочно обработанное слияние) - это напоминание о вашей смертности.