Прежде, чем это подойдет, я уже просмотрел несколько тем по этой теме, в том числе следующие:
Я собираюсь перейти на Mercurial (из Subversion) для нашей группы разработчиков. Прежде чем я это сделаю, я составлю обычный список плюсов и минусов.
Один из моих "плюсов" - то, что слияние лучше в Mercurial, но пока мне не удается найти убедительных доказательств этого. А именно, на HgInit.com есть заявление, которое мне не удалось проверить:
Например, если я немного изменил функцию, а затем переместил ее в другое место, Subversion на самом деле не запомнит эти шаги. , поэтому когда придет время объединяться, он мог подумать, что новая функция появилась неожиданно. Принимая во внимание, что Mercurial запомнит эти вещи отдельно: функция изменена, функция перемещена, а это означает, что если вы также немного измените эту функцию, гораздо более вероятно, что Mercurial успешно объединит наши изменения.
Это будет чрезвычайно интересная функциональность, но насколько я могу судить, это просто горячий воздух. Мне не удалось проверить приведенное выше утверждение.
Я создал репозиторий Mercurial, создал Hello World, а затем клонировал его. В одном случае я изменил функцию, зафиксировал ее, затем переместил, а затем зафиксировал. В другом я просто добавил еще одну строку вывода в функцию и зафиксировал.
При слиянии я получаю в основном тот же конфликт слияния, что и при использовании Subversion.
Я понимаю, что mercurial может лучше отслеживать переименования файлов и что у DVCS есть и другие преимущества помимо слияния, но меня интересует этот пример. Джоэл Спольски здесь за пределами базы, или я что-то упускаю?
У меня нет опыта в этой области, но похоже, что поскольку Mercurial хранит больше информации, которую он теоретически мог бы сделать лучше при слиянии (если разработчики также часто проверяли). Например, я считаю возможным для Mercurial получить контекстные изменения при сравнении нескольких изменений, например, я изменяю функцию, регистрирую, перемещаю функцию, регистрирую, и Mercurial связывает эти две части.
Однако слияние Mercurial похоже, что на самом деле не использует добавленную информацию и работает так же, как Subversion. Это правильно?