columbos14927 Ответов: 3

Поиск конфликтующих строк и авторов после слияния


Привет,
Я объединяю ветвь "feature_1" в текущую ветвь "master".
После выполнения команды: "git merge feature_1" я получаю несколько несмешанных путей, это конфликты, которые необходимо было разрешить вручную.
Я хотел бы написать скрипт python, который будет проходить по незамкнутым путям и извлекать конкретные строки, вызвавшие конфликт, и авторов этих строк на обеих ветвях "feature_1" и "master".

Спасибо.

Что я уже пробовал:

До сих пор я пытался запустить функцию diff в объекте Git.

3 Ответов

Рейтинг:
2

megaadam

$ git mergetool
Быть вашим другом.


columbos14927

Привет,
После слияния git у меня есть группа несмешанных файлов.
Если я выполню эту команду: git diff --name-only --diff-filter=U
Я получаю список файлов, которые нужно объединить вручную.
То, что я хочу сделать для каждого файла в приведенном выше списке, - это получить номер строки каждого конфликта без запуска git mergetool, так как я хочу сделать это с помощью скрипта автоматически.

Спасибо

Рейтинг:
1

megaadam

Мне очень жаль, что следующее не может быть решением вашей ситуации, но это то, что мне кажется:

Я думаю, что это не совсем технический вопрос. Мне он кажется организационным. Это вопрос "способов работы". Каждый программист должен найти и разрешить свои собственные конфликты. Это совершенно неприемлемо обременять одного человека [вас] незаконченной работой других людей. Они должны научиться пользоваться git mergetool о своих собственных конфликтах.

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

Передавать конфликт в виде filename:linenumber крайне неэффективно, когда они могут графически видеть его на своих собственных экранах, автоматически. И этого все равно будет недостаточно, потому что кому-то все равно придется выбирать между изменениями от двух разных людей.


Рейтинг:
0

megaadam

Нет такого понятия, как "автоматическое слияние". Конфликт слияния возникает, когда два человека внесли "несовместимые" изменения. Человек должен вручную решить, какие изменения сохранить. Команда для запуска такова: git mergetool
Это вызовет редактор, выделяющий конфликты.

Я также рекомендую настроить графический интерфейс для редактирования изменений. Есть много вариантов, этот так же хорош, как и любой другой: Настройка и использование Meld в качестве git difftool и mergetool - Stack Overflow[^]

Хороший способ уменьшить конфликты в будущем-это если все члены команды обновляют свою локальную ветвь и объединяются как можно чаще.


columbos14927

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