Ответ 1
git mergetool
поток предназначен для разрешения конфликтов в одном файле за раз. Следовательно, то, о чем вы просите, не может быть сделано чистым способом. Однако можно создать собственный mergetool, который будет накапливать входные данные из git mergetool
в одном окне gvim
. Хак, который неизбежно должен содержать это "решение", состоит в том, что он должен сделать поток git mergetool
уверенным, что пользовательский mergetool успешно объединил файл, хотя он только что открыл файл в gvim. Это необходимо, так что поток git mergetool
переходит к следующему файлу без каких-либо вопросов. В результате, если вы выйдете из gvim без каких-либо изменений, git все равно будет думать, что все конфликты были разрешены.
Ниже приведена черновик версии такого настраиваемого метода слияния (который открывает файлы в разных окнах gvim, а не в вкладках):
.gitconfig
[mergetool "mygvimdiff"]
cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
trustExitCode=true
mygvimdiff
#!/bin/bash
gvim -d -c "wincmd J" "[email protected]"
# wait till gvim loads the temporary files before
# the git mergetool script deletes them
sleep 1
exit 0
Использование
git mergetool -t mygvimdiff