2016-07-21 8 views
0

This question спрашивает, как видеть, какие файлы имеют конфликты в слиянии. Я также хотел бы быстро просмотреть списки различий для всех конфликтов (в отличие от различий в слиянии, которые прошли чисто.)Как я могу видеть различия всех конфликтов в слиянии ртути (или git)?

Например, это позволило бы быстро разобрать с некоторыми конфликтами, которые являются просто «шумом», разрешая тем, у кого есть --tool :other--tool :local или --tool :union, не создавая редактор слияния.

Я думаю, что ответы (я формулирую один прямо сейчас) будут аналогичны небольшим различиям для git и mercurial, поэтому я рискну оставить вопрос vc-agnostic.

+0

Как вы отметили в своем собственном ответе, вы в значительной степени должны сделать слияние. На этом этапе еще не разрешенные/не связанные файлы с их конфликтами, записанными в дереве работы, находятся в hg 'set: unresolved()' или gs 'ls-files -unmerged' (последнее больше похоже на боль в использовании, поскольку он настаивает на выводе длинной формы, но есть также 'git diff-files -name-only -diff-filter = U'). – torek

ответ

0

В merurial, если вы сливаетесь или разрешаете с помощью инструмента: merge3, ​​он оставляет маркеры в файлах для любых конфликтов. Набор файлов unresolved() содержит только файлы с конфликтами. Использование Perl для печати только имен файлов и неразрешенные секций (игнорируя чисто слиты разделы):

hg merge --tool :merge3 <branchtomerge> 
hg diff 'set:unresolved()' | perl -ne 'print if m|^\+\+\+ | or m|<<<+ local$| .. m|>>>+ other$|' 
+0

Я только что понял после публикации, хотя, хотя это и делает то, что он говорит, я не могу использовать его, как я хотел. Если я вижу, что конфликт можно разрешить просто, я не могу просто (например,) «решить -t: other», потому что это приведет к аннулированию всех слияний, в которых * не были конфликты. –