Как интегрировать визуальное разрешение конфликтов (P4Merge) в SourceTree

В течение довольно долгого времени я был озадачен отсутствием эффективного разрешения конфликтов в SourceTree.

Предполагается, что процедура интеграции p4Merge или другого инструмента diff/merge в SourceTree. На данный момент p4Merge - мой выбор; теперь мне просто нужно выяснить, как

  • Получить SourceTree, чтобы принять p4Merge в качестве инструмента слияния/разграничения, и
  • Уметь фактически вызывать p4Merge из SourceTree для разрешения конфликтов.

Пока единственное, что мне удавалось сделать, это заставить P4Merge отображать diff в SourceTree. Таким образом, элемент меню Действия/Внешний Diff работает, но элемент меню Действия/Разрешить конфликты/запуск внешнего слияния не отображается (он недоступен).

введите описание изображения здесь

Я выбрал P4Merge как для инструмента Diff, так и для инструмента Merge на вкладке Инструменты/Параметры/Diff в SourceTree. Я не могу поместить ничего в две строки командной строки (даже если бы я знал, что туда положить), потому что они также выделены серым цветом.

изображение диалога параметров/диалогa

Как мне сделать эту работу?

SourceTree находится в версии 1.9.5.0, который должен быть последним на момент написания этой статьи. У P4Merge нет диалогового окна "Справка/О программе", но он был установлен недавно (в течение последних 3 месяцев).

Ответ 1

У меня есть версия SourceTree 1.5.2.0, и я настроил внешний инструмент слияния, как показано на скриншоте. P4Merge устанавливается в C:\Program Files\Perforce и не находится на Path. Я не задал никаких конкретных значений в .gitconfig в отношении инструментов diff/merge (я понимаю, что это "работает на мой машинный ответ", но это было действительно так просто).

вот как я настроил инструмент внешнего слияния

Что касается рабочего процесса, разные команды могут иметь разные подходы. То, что мы делаем в нашей команде для каждой работы функции (обычно это делается только одним разработчиком), является следующим (скриншоты о том, как выполнять каждую операцию в SourceTree, находятся в конце сообщения):

  • Rebase develop branch
  • Создать новую ветку функций
  • Работа над функцией, совершение коммитов (обычно, несколько)
  • Если было разработано много изменений, поскольку временное ветвление было выполнено, мы можем объединить разработку с нашей веткой функций, чтобы разрешить любые потенциальные конфликты и убедиться, что функция все еще работает.
  • Объединить, чтобы развить ветку, за которой следует Push - наш CI настроен на запуск развертывания в тестовую среду, когда новые изменения перенаправляются на разработку ветки
  • Если все хорошо, мы объединяем разветвленную ветвь в master-ветку, которая запускает развертывание в производственной среде

Чтобы переработать: введите описание изображения здесь

Чтобы создать новую ветку из разработки: введите описание изображения здесь

Чтобы объединиться, перейдите в ветвь функции:

введите описание изображения здесь

Вот как SourceTree показывает, что после слияния возникают конфликты: введите описание изображения здесь

Обновление:. Чтобы проверить правильность настройки SourceTree, я предлагаю вам сделать следующее:

  • Загрузите и распакуйте локально небольшой репозиторий с двумя ветвями из https://1drv.ms/u/s!Ahrx2cBEbNLOy1xsUNuZJrUe80Ox
  • Добавьте этот репозиторий в SourceTree, выполнив: File - Clone/New... - Добавить рабочую копию - [select folder 'git -config']
  • Щелкните правой кнопкой мыши ветку с именем "origin/version-2" и выберите "merge"
  • Вы должны увидеть предупреждение о конфликтах слияния, а затем после щелчка правой кнопкой мыши на файле .txt должно появиться следующее:

введите описание изображения здесь

Ответ 2

Я думаю, у вас нет проблем с P4Merge. Вы проблема

Действие/Устранение конфликтов/Запуск Элемент меню внешнего слияния не отображается (он недоступен)

Я думаю, что sourceTree имеет такое поведение, потому что вы не имеете конфликтов в текущей ветке.

Вы можете проверить это легко: Запустите команду git master. -d и посмотреть вывод. Я полагаю, что вывод будет Никакие файлы не нуждаются в объединении.

Если у вас есть неразрешенные конфликты в текущей ветке sourceTree Actions/Resolve Conflicts для меня: введите описание изображения здесь

Пожалуйста, отредактируйте вопрос, если у вас настоящая эмблема с P4Merge, а с другим mergetool sourceTree отлично работает.