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