Как считать конфликты при сравнении 3 версий файлов?

Я пытаюсь сравнить 3 файла с "diff3". Я стремлюсь подсчитать количество конфликтов, которые требуют ручного слияния (когда обе версии отличаются от исходной версии).

Основной синтаксис diff3 mine older yours но я не могу узнать, как получить только конфликты. Я должен знать, есть ли две секции конфликта, три секции конфликта или 140.

Спасибо

1 ответ

Когда git обнаруживает конфликты в ваших файлах, он оставляет маркеры разрешения конфликтов для каждого конфликта в этих файлах, которые выглядят примерно так:

<<<<<<< HEAD
Hello world
=======
Goodbye
>>>>>>> <sha>

Если вы выполните простой поиск файлов для этих маркеров конфликтов и передадите их в счетчик слов, вы можете получить общее количество конфликтов:

grep --recursive '<<<<<<< HEAD' * | wc --lines

Вот версия, которая использует git status в частности, список файлов, которые имеют маркеры конфликта, что должно дать вам меньше файлов для поиска для использования grep:

git status --porcelain | \
grep --extended-regex '^(A|U){2}' | \
cut --characters 4- | \
xargs grep 'HEAD' | \
wc --lines
Другие вопросы по тегам