2013-08-19 3 views
2

Когда я работаю над конфликтом слияния в Git, появляется мой указанный редактор, и я могу редактировать сообщение слияния Git. Когда я закрываю файл, процесс слияния Git продолжается.Как Git прослушивает изменения из редактора во время конфликта слияния?

Как это делается? Я хотел бы сделать что-то подобное в сценарии bash. Создаете ли вы временный файл и слушаете изменения в этом файле? Или есть другой способ?

ответ

3

В Баш, это будет выглядеть примерно так:

# Launch editor. 'editor' is a fake command shown as example. 
editor -f '/path/to/file' 

returnCode=$? 

# Ensure the process exited without error. 
if [[ $returnCode == "0" ]] ; then 
    # Take action... 
fi 

Git создает подпроцесс, который открывает редактор, а затем ожидает, что подпроцесс, чтобы закончить. Когда подпроцесс завершается из-за закрытия пользователем редактора, он проверяет файл для текста без комментирования. Например, посмотрите на функцию git's launch_editor. Он использует .git/COMMIT_EDITMSG как файл для чтения.

0

Отличный скрипт, который использует vimdiff, чтобы предложить пользователю разрешить конфликты слияния. here.

 using vimdiff on git merge conflicts

Проходя через source of the script должно помочь вам понять, как его сделать.