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")
,