Как твердость несколько конфликтов с “мерзавцем mergetool”, не имея необходимость закрывать редактора между файлами?

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

  1. Выполните мерзавца mergetool
  2. При подсказке хит Входит для запуска моего различного инструмента (Комбинация или FileMerge, в зависимости от который компьютер)
  3. Разрешите конфликты
  4. Сохраните изменения
  5. Закройте различный инструмент

Если у меня есть больше чем один конфликт, промывка, повториться. Да, это - я открытие и закрытие моего различного средства просмотра однажды для каждого конфликта в слиянии. Так как это запускается из командной строки, закрытие его является единственным способом, которым я знаю о сказать мерзавцу mergetool, что я разрешил этот конкретный конфликт и что это может идти дальше к следующему.

Конечно, существует лучший путь, но я понятия не имею. Мало справки? Этот процесс кажется сумасшедшим неэффективный.

53
задан Ciro Santilli 新疆改造中心法轮功六四事件 6 August 2019 в 04:49
поделиться

3 ответа

На первый взгляд не кажется возможным снова использовать внешнюю различную сессию инструмента.

git-mergetool документация ясно состояния:

, Если пользовательский инструмент слияния правильно указывает на успех разрешения слияния с его кодом выхода , то переменная конфигурации mergetool.<tool>.trustExitCode может иметь значение true.
Иначе, git-mergetool предложит пользователю указывать на успех разрешения после того, как инструмент пользователя выйдет.

, Таким образом, код выхода (или проверка пользователя после выхода различного инструмента ) необходим, подразумевая, что пользователь сначала закрывает внешний различный инструмент.

, Который кажется большим стимулом сократить количество конфликтов на каждом слиянии/переоснове, которого каждый делает попытку;) (безотносительно используемого инструмента VCScs)

Примечание:
Два других мерзавца внешние различные настройки инструментов (" Установка разности и инструментов слияния для Мерзавца в Windows " и" Установка SourceGear DiffMerge с Мерзавцем ") не дают больше надежд, когда это доходит до [1 111] не закрытие внешний различный инструмент...

34
ответ дан VonC 7 November 2019 в 08:49
поделиться

Если Ваш mergetool поддержек выбора вводные файлы в существующем экземпляре, можно определить команду в конфигурации мерзавца:

% git config mergetool.whatever_you_want.cmd 'exec /path/to/merge/tool $LOCAL $MERGED $REMOTE'
% git config merge.tool whatever_you_want

git mergetool тогда выполнит Вашу пользовательскую команду и затем предложит Вам относительно того, был ли файл объединен успешно (вместо рассмотрения кода выхода).

пример я просто взломал вместе для vimdiff:

% git config mergetool.persistent.cmd 'gvim --remote-tab-silent "+set buftype=nowrite" "$PWD/$BASE" && sleep 1; gvim --remote-send ":split $PWD/$REMOTE<CR>:set buftype=nowrite<CR>:vertical diffsplit $PWD/$MERGED<CR>:vertical diffsplit $PWD/$LOCAL<CR>:set buftype=nowrite<CR><C-W>l"'

Это работает достаточно хорошо, я могу начать использовать его сам!

22
ответ дан Brian Phillips 7 November 2019 в 08:49
поделиться

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

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

возможно, что некоторые инструменты слияния могли обеспечить эту функциональность посредством отдельной команды обертки и своего рода IPC, но это будет чрезвычайно инструмент, конкретный и трудный реализовать в универсальной mergetool программе.

12
ответ дан CB Bailey 7 November 2019 в 08:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: