Как реализовать предварительный просмотр конфликта слияния с помощью libgit2? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь реализовать веб-сайт управления контентом, во многом это похоже на упрощенный github.

часть управления версиями и совместной работы основана на git с использованием libgit2.

НоЯ не могу найти способ реализовать предварительный просмотр конфликта слияния, который бы сообщал пользователю, является ли ее изменение чистым для слияния или нет, и какие строки имеют конфликт.

пример здесь https://github.com/libgit2/libgit2/blob/master/examples/merge.c

выполняет слияние с функцией git_merge, однако эта функция напрямую изменяет текущий индекс.

Я также проверил альтернативу с открытым исходным кодом github, но теперь я забыл его имя.В этом проекте использовалась библиотека из eclipse ide, которая предоставляет функцию предварительного просмотра конфликта.

Как мне реализовать это с помощью libgit2, и есть ли пример кода?

1 Ответ

0 голосов
/ 30 января 2019

Как вы заметили, функция git_merge изменяет рабочий каталог и индекс.Вы можете использовать функцию git_merge_commits, чтобы выполнить слияние в памяти двух коммитов и вернуть полученный индекс.

Затем можно выполнить итерацию по индексу в поисках конфликтов или просто вызвать git_index_has_conflicts если вы хотите знать, существуют ли конфликты.

...