Mercurial лучше справляется со слиянием файлов, когда наборы изменений невелики - PullRequest
5 голосов
/ 03 июня 2011

Допустим, у меня есть ветка разработки для некоторой функции под названием "myDevelopmentBranch" и другая ветка "myOtherBranch", содержащая довольно много изменений, некоторые из которых будут конфликтовать с вещами из "myDevelopmentBranch".Будут ли (потенциально) результаты слияния из «myDevelopmentBranch» в «myOtherBranch» отличаться, если я выполняю коммит чаще, чем если бы я фиксировал реже (например, несколько раз в день против одного или двух раз в неделю)?Мне интересно об этом, так как я хотел бы сказать, что Mercurial (или любой другой VCS) легче отслеживать изменения небольшими порциями, и, следовательно, лучше понять, как их объединить.

Примечание!Я знаю множество причин, по которым следует часто совершать коммиты, это всего лишь технический вопрос, над которым я размышлял.

1 Ответ

5 голосов
/ 05 июня 2011

Слияние устраняет различия между измененными файлами, когда они стоят на кончике обеих ветвей (при условии, что вы объединяете подсказки). Так что, если бы у вас было ...

  • 1 набор изменений A1 на ветви A, который меняет 500 строк, родительский набор изменений Z
  • 1 набор изменений B1 на ветви B, который меняет 500 строк, родительский набор изменений Z

... у вас будет такой же опыт слияния по сравнению с 50 наборами изменений в каждой ветви, которые изменяют по 10 строк в каждой для получения того же конечного состояния файлов в каждой ветви, как указано выше.

Однако, по моему опыту, то, что делает облегчающим слияние, - это не частое коммитирование, а частое слияние. Например, объединение изменений стабильной ветви в ветку разработки для сохранения ветви разработки на основе самой последней стабильной версии небольшими кусочками, вместо того, чтобы ждать, пока не будет выполнена работа над веткой разработки, чтобы обновить ее стабильными изменениями ветви в одном большом укусить. А в некоторых случаях перестановка стабильных веток меняется вместо слияния (в зависимости от вашего рабочего процесса DVCS).

...