Git-хук для конфликтов слияния

Есть ли git-хук, который я могу использовать для конфликтов слияния? После неудачного git merge было бы здорово иметь возможность написать скрипт, открывающий все файлы с конфликтами в $EDITOR. К сожалению, хук post-merge не запускается, если есть конфликты, и из того, что я видел на справочной странице githooks, других подходящих хуков нет.

Мне интересно, не пропустил ли я что-то, или есть ли другие альтернативы, кроме псевдонимов «git merge» для функции или что-то в этом роде.

Спасибо, Крис


person flooose    schedule 10.03.2012    source источник
comment
Вы можете использовать собственный инструмент слияния, который является просто редактором, а не настоящим трехсторонним инструментом слияния, и запускать git mergetool при возникновении конфликтов.   -  person CB Bailey    schedule 10.03.2012
comment
Хорошее предложение. Я не рассматривал это, потому что мне действительно не нравятся какие-либо инструменты слияния, и я обнаружил, что лучше исправлять свои конфликты непосредственно в редакторе. Я нашел это как возможное решение, и я думаю, что настройка mergetool — определенно правильный путь. Теперь вопрос, что делать с моим вопросом? Нажимать «Ответить на ваш вопрос» внизу страницы или ничего не делать?   -  person flooose    schedule 11.03.2012
comment
Вопрос без прямого ответа. Уточнение может помочь. Из событий, которые git поддерживает для перехвата, в том числе (на основе .git/hook/*.sample файлов по умолчанию): 1. post-checkout 2. post-commit 3. post-merge 4. post-receive 5. post-update 6. pre-applypatch 7. pre-commit 8. pre-push 9. pre-rebase ... делает одно или больше применимо во время конфликта слияния? Поскольку git принудительно устанавливает root владельца и ограничивает разрешения во время конфликтов слияния, обычные пользователи не могут разрешать конфликты слияния. Хук конфликта слияния позволит установить полезное владение, разрешения.   -  person pd_au    schedule 26.01.2020
comment
Я никогда не запускал git от имени пользователя root и должен был столкнуться с проблемами с правами доступа, если вы говорите правду.   -  person flooose    schedule 27.01.2020


Ответы (2)


Как предложил Чарльз Бейли, лучший способ сделать это — настроить инструмент слияния. Используя это руководство, я придумал простой способ конфликты слияния, открытые в моем редакторе:

[merge]
  tool = emacs
[mergetool "emacs"]
  cmd = $editor \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

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

person flooose    schedule 01.08.2014

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

for i in $(git ls-files -u | cut -f 2 | sort -u); do $EDITOR $i; done
person binarycreations    schedule 02.11.2012