LibGit2Sharp, как решить конфликт?

Используя libgit2sharp, я объединяю изменения от двух пользователей:

public void Merge(string branchName)
{
    using (Repository repo = new Repository(this._settings.Directory))
    {
        var branch = repo.Branches[branchName];
        MergeOptions opts = new MergeOptions() { FileConflictStrategy = CheckoutFileConflictStrategy.Merge };
        repo.Merge(branch, this._signature, opts);

        if (repo.Index.Conflicts.Count() > 0)
        {
             //TODO: resolve conflicts
        } 
    }
}

Даже если стратегия настроена на слияние, конфликты все равно появляются. Я не нашел способа разрешить конфликт. У объекта Conflict нет метода Resolve.

Есть ли способ разрешить конфликт из кода, кроме удаления файла или его переименования? Есть ли функция автоматического разрешения?

Спасибо за любую помощь!

1 ответ

Решение

LibGit2Sharp выполняет автоматическое слияние. Если вы видите конфликты, то файлы не могут быть объединены. Пример неразрывного конфликта - это когда обе ветви изменяют одну и ту же область одного и того же файла.

В этом случае LibGit2Sharp запишет файл в рабочий каталог с разметкой вокруг конфликтующего региона. Например, если какой-то файл foo.txt имеет конфликт, это может выглядеть так:

<<<<<<< HEAD
this is a change in HEAD
=======
this is a change in the other branch
>>>>>>> other branch

Чтобы разрешить конфликт, поместите содержимое, которое вы хотите принять, в рабочий каталог, а затем подготовьте его, используя Repository.Index.Add("foo.txt"),

Другие вопросы по тегам