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

Я играю с Mercurial, чтобы посмотреть, подходит ли он для использования в нашей компании. Одним из главных преимуществ этого является возможность объединения. Поэтому я поиграл с созданием веток и слиянием их с линией по умолчанию. Тестирование включало просто добавление нового метода (methodA) в один файл Java в одной ветви и добавление другого метода (methodB) в совершенно другое место в том же файле в другой ветви.

Когда я впервые попробовал это в Eclipse, используя опцию team-> merge, я обнаружил, что первое слияние работает нормально (то есть добавлено метод A). Когда я пытаюсь объединить вторую ветку, она говорит мне, что есть конфликт, который я должен разрешить. Это очень прискорбно, так как я думал, что этот простой тип слияния - это именно то, с чем Mercurial должен был справиться с легкостью?

Я попробовал точно такой же тест с использованием командной строки, и на этот раз он работал нормально, то есть оба слияния были успешными без необходимости разрешения конфликтов. Глядя на вывод консоли в eclipse, он использует следующую команду для выполнения слияния:

hg -y merge --config ui.merge=internal:fail -r 611ca2784593525cdafd3082b17d3310037a5d58 -f

тогда как когда я запускаю его сам из командной строки, я просто делаю:

hg merge -r 1234

Является ли использование стратегии слияния «внутренним: неуспешным», вызывающим это в Eclipse ?? И если да, то можно ли изменить поведение по умолчанию, чтобы оно работало так же, как в командной строке?

1 Ответ

8 голосов
/ 10 января 2011

internal:fail говорит Mercurial не пытаться объединить что-либо вообще. См. Mercurial Wiki для более подробной информации.

Кажется, кто бы ни написал плагин Eclipse для Mercurial, он почувствовал, что может лучше контролировать слияние в Eclipse, если Mercurial автоматически не сможет объединить все, а затем выполнить слияние в Eclipse и, вероятно, вызвать hg resolve --mark ..., когда файлы объединяются. 1007 *

Из командной строки Mercurial вы получаете как premerge поведение, которое обрабатывает тривиальные слияния, так и затем, если все еще есть конфликты, вызов инструмента из вашей MergeToolConfiguration , которая имеет наивысший приоритет для этого Тип файла и доступен в вашей локальной системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...