Расширение rebaseif mercurial автоматизирует процесс перебазирования при извлечении только в том случае, если слияние может быть выполнено автоматически без конфликтов. (Если есть конфликты, которые нужно разрешить вручную, перебазирование не выполняется, и вы готовы выполнить ручное слияние двух ветвей.) Это упрощает и линеаризует историю, когда разработчики работают с разными частями кода, хотя любое перебазирование вызывает убрать некоторую информацию о состоянии мира, когда разработчик выполнял работу. Я склонен соглашаться с такими аргументами, как это и это, что в общем случае перебазирование не является хорошей идеей, но я нахожу философию перебазирования привлекательной для бесконфликтный случай. Я сомневаюсь в этом, хотя понимаю, что по-прежнему существуют риски логических ошибок, когда изменения происходят в разных частях кода (и автор расширения rebaseif пришел к выводу, что это плохая идея..)
Недавно я прошел через сложный и болезненный bisect, и я думаю, что наличие большого количества слияний коротких ветвей в нашем репозитории было основной причиной, по которой bisect не оправдал подразумеваемого обещания O(lg n). Я обнаружил, что мне нужно запускать bisect --extend много раз, чтобы растянуть диапазон за пределы слияния, проходя по паре наборов изменений за раз, по сути делая деление пополам O(n). Мне также было очень сложно отслеживать, как продвигается биссектриса, и понимать, какую информацию я получил на данный момент, потому что я не мог следить за ветвлением, глядя на графики репозитория.
Существуют ли лучшие способы использования bisect (а также для просмотра и понимания истории изменений) или я прав, что процесс был бы более гладким, если бы мы больше использовали rebaseif в разработке. В качестве альтернативы, можете ли вы помочь мне более конкретно понять, что может пойти не так, используя перебазирование в случае отсутствия конфликта: достаточно ли вероятно, что это вызовет проблемы, которых следует избегать?
Я помечаю это более общим тегом (не только mercurial), поскольку считаю, что rebaseif соответствует более типичному рабочему процессу git: пользователи git могли видеть подводные камни.
0::tip
) здесь. - person Edward   schedule 02.11.2012bisect
остановится, когда найдет точку, в которой качество изменится с хорошего на плохое. Вы можете попытаться улучшить свой тест (если это возможно!), чтобы поймать только новый. Или вы можете инвертировать свой тест и использовать старый плохой результат в качестве начала, чтобы найти следующий переход от плохого к хорошему и начать с него. С моей точки зрения, проще начать с большего и сузить диапазон, чем постепенно расширять диапазон. - person Edward   schedule 03.11.2012