Рассмотрим управление git-pull с помощью JGit следующим образом:
- используйте git-fetch и git-merge с setCommit=false (фиксация в тестовом режиме).
- если возникнут конфликты, прочитайте конфликтующие файлы и покажите их во внешнем редакторе слияния (скажем, kdiff3) для ручного слияния.
- продолжить слияние для неконфликтующих файлов (git-merge с setCommit=true)
Как я могу получить доступ к этим конфликтующим файлам (также известным как наши и их файлы) или, по крайней мере, получить доступ к их ObjectId?
вот иллюстрация
oFetchCommand.call()
...
MergeCommand oMergeCommand = m_oGit.merge();
oMergeCommand.setCommit(false); // dry run
MergeResult oMergeResult = oMergeCommand.call();
if (oMergeResult.getConflicts() != null)
{
// ?
// TODO - read the complete 'our' and 'their' files,
// show them in an external editor for manual merge.
}
...
Я предполагаю, что оптимальным решением будет получение ObjectId двух конфликтующих файлов.