Как получить исходный конфликтный дифференциал после разрешения конфликта слияния и постановки решения - PullRequest
0 голосов
/ 05 мая 2018

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

Обычный способ сделать это -

git diff >conflict_log

, а затем я копирую и вставляю это в сообщение коммита.

У этого рабочего процесса есть несколько недостатков, которые я бы хотел улучшить:

  • Вы можете забыть сначала сохранить conflict_log, а затем разработчики часто заканчивают повторение слияния, чтобы иметь возможность получить исходный diff
  • Копировать вставку всего различий может быть сложнее, если разность велика и вы работаете над сессией ssh ​​

Я хотел бы создать хук prepare-commit-msg, который автоматически добавит этот diff к сообщению фиксации.

Проблема, с которой я столкнулся, заключается в том, что во время запуска prepare-commit-msg индекс уже был изменен, поэтому git diff работает по-другому и больше не просто отображает исходные конфликты.

Я пробовал использовать версии вроде

git diff hash hash^1 hash^2

А в документации здесь: https://git -scm.com / book / ru / v2 / Git-Tools-Advanced-Merging под "Combined Diff Format" предлагается использовать

git diff --cc

Но я не уверен,

  • я должен использовать HEAD, MERGE_HEAD, ORIG_HEAD, учитывая, что я пытаюсь сделать это в prepare-commit-msg до фактического принятия коммита слияния?

  • Я хочу получить разность, которую git генерирует с маркерами <<<<<< от разрешения конфликтов, до того, как пользователь начал их разрешать, но во время выполнения prepare-commit-msg пользователь уже поставил свои разрешения, Есть ли способ, которым я могу взять diff против этого состояния индекса, вместо текущего состояния?

...