Когда SVN не удается объединить, а Mercurial успешно

Прежде, чем это подойдет, я уже просмотрел несколько тем по этой теме, в том числе следующие:

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

Один из моих "плюсов" - то, что слияние лучше в Mercurial, но пока мне не удается найти убедительных доказательств этого. А именно, на HgInit.com есть заявление, которое мне не удалось проверить:

Например, если я немного изменил функцию, а затем переместил ее в другое место, Subversion на самом деле не запомнит эти шаги. , поэтому когда придет время объединяться, он мог подумать, что новая функция появилась неожиданно. Принимая во внимание, что Mercurial запомнит эти вещи отдельно: функция изменена, функция перемещена, а это означает, что если вы также немного измените эту функцию, гораздо более вероятно, что Mercurial успешно объединит наши изменения.

Это будет чрезвычайно интересная функциональность, но насколько я могу судить, это просто горячий воздух. Мне не удалось проверить приведенное выше утверждение.

Я создал репозиторий Mercurial, создал Hello World, а затем клонировал его. В одном случае я изменил функцию, зафиксировал ее, затем переместил, а затем зафиксировал. В другом я просто добавил еще одну строку вывода в функцию и зафиксировал.

При слиянии я получаю в основном тот же конфликт слияния, что и при использовании Subversion.

Я понимаю, что mercurial может лучше отслеживать переименования файлов и что у DVCS есть и другие преимущества помимо слияния, но меня интересует этот пример. Джоэл Спольски здесь за пределами базы, или я что-то упускаю?

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

Однако слияние Mercurial похоже, что на самом деле не использует добавленную информацию и работает так же, как Subversion. Это правильно?

19
задан Community 23 May 2017 в 11:44
поделиться