Ручное слияние Mercurial не запускает meld

Прочитав Полностью ручное слияние Mercurial, у меня есть такой .hgrc:

[ui]
merge = meld

[merge-tools]
meld.priority = 1
meld.premerge = False
meld.args = $local $other $base 

[merge-patterns]
** = meld

Однако hg merge -r REV просто работает, и я не понимаю, чего мне не хватает...

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


person Maxime R.    schedule 11.04.2012    source источник


Ответы (2)


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

Вы можете проверить первое с помощью hg showconfig — убедитесь, что вы видите настройки объединения.

Если они появляются, возможно, между двумя наборами изменений, которые вы объединяете, недостаточно конфликта. Даже если для premerge установлено значение false, все равно должно быть что-то, что требует слияния. Есть ли фактические изменения в одном и том же файле в обоих наборах изменений? Возможно, попробуйте hg merge --tool internal:fail, а затем проверьте hg resolve --list, чтобы узнать, что там.

person Ry4an Brase    schedule 12.04.2012
comment
Хорошо, мои настройки объединения подобраны правильно, но, похоже, вы правы в том, что конфликта недостаточно. Входящий набор изменений изменяет некоторые немодифицированные файлы, я думал, что смогу инициировать ручное слияние, чтобы удалить некоторые из этих изменений, но это кажется невозможным. - person Maxime R.; 12.04.2012
comment
Попробуйте hg merge --tool internal:prompt или hg merge --tool internal:dump. Я не знаю, прервутся ли они раньше в процессе, но если они это сделают, возможно, вы можете вызвать объединение вручную? - person Ry4an Brase; 12.04.2012
comment
Спасибо, на самом деле я решил свою проблему, перебазировав входящий набор изменений на гораздо более раннюю версию моего проекта. Это вызвало некоторые конфликты при слиянии, он запустил meld, и у меня появилась возможность вручную выбрать, какие изменения я хочу сохранить :) - person Maxime R.; 13.04.2012
comment
Хорошая сделка. Даже если meld не запускается, вы всегда можете просто запустить редактор и отредактировать исходные файлы, чтобы включить/исключить все, что вы хотите, после слияния, но до фиксации. Добавление нового кода во время слияния обычно не одобряется, но вручную заходить и выбрасывать что-то вполне нормально. - person Ry4an Brase; 13.04.2012

Я следую вашим инструкциям, чтобы использовать MELD при выполнении diff. Я получаю это:

    hg meld file.F
usage:
    meld                       Start with no windows open
    meld <dir>                 Start with VC browser in 'dir'
    meld <file>                Start with VC diff of 'file'
    meld <file> <file> [file]  Start with 2 or 3 way file comparison
    meld <dir>  <dir>  [dir]   Start with 2 or 3 way directory comparison

meld: error: no such option: -a

откуда эта опция -a?

person mattiaspeziali    schedule 12.07.2013
comment
Привет, вы должны задать новый вопрос для этого. Похоже, что mercurial не получает правильный набор аргументов. - person Maxime R.; 13.07.2013