2016-04-29 1 views
0

Я попытаюсь объединить ветку в другую, но у меня есть исключение MergeConflictException. Поэтому я стараюсь выставить все репозитории.Index.Conflicts, но без каких-либо изменений.LibGit2Sharp - Minging Branch

string[] conflictArray = new string[10000]; 
try { 
    repository.Merge(branch[selected], GitHelper.getSignature(), options); 
} catch(MergeConflictException e) { 
    if (repository.Index.Conflicts.Count() > 0) { 

     foreach (var c in repository.Index.Conflicts) { 
      repository.Index.Stage(c.Theirs.Path); 
     } 

    } 
} 

Я искать много, чтобы иметь какой-либо помощи, я прочитал MergeFixture.cs от LibGit2Sharp.Tests.

EDIT: извините, я не говорю вам, почему я работаю над этим, но я студент, и мои учителя дали мне этот проект, чтобы сделать с .NET 3.5, поэтому я использую последнюю версию LibGit2Sharp 3.5.

+0

Что вы имеете в виду «без каких-либо изменений»? Выполняете ли вы после разрешения слияния? Обратите внимание, однако, что если вы получаете конфликт слиянием, вам нужно его решить. Если вы создадите все эти файлы без разрешения конфликтов, вы включите в них маркеры конфликтов. Правильная вещь, которую нужно сделать, - либо отказаться, либо спросить пользователя в зависимости от того, какую программу вы пишете. –

+0

Я покажу это, прежде чем задавать вопрос: http://stackoverflow.com/questions/33812895/libgit2sharp-how-to-resolve-a-conflict Я говорю «без каких-либо изменений», потому что каждый раз я имею одно и то же исключение , Можете ли вы помочь мне в разрешении конфликтов? – Daethe

+0

Почему вы загружаете комментарий? Это смущает. – Joseph

ответ

1

MergeConflictException, по общему признанию, вводящее в заблуждение имя. Это не означает, что произошел конфликт слиянием. Это не исключение, это нормально, и это не вызывает исключения. Это означает, что в процессе слияния возник конфликт. (Но больше об этом через секунду.)

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

Но то, что вы почти наверняка хотите сделать, это только начать слияние, если у вас нет никаких изменений в вашем рабочем каталоге. Пожалуйста, закрепите или внесите изменения перед слиянием. Если вы считаете, что у вас действительно нет хостов в вашем рабочем каталоге, то correct yourline endings.

(Обратите внимание, что MergeConflictException больше не существует, он был переименован, чтобы избежать этой путаницы.)

+0

Я использую последнюю версию .Net 3.5 LibGit2Sharp, потому что проект основан на предпосылке, заданной моими преподавателями. Я должен взаимодействовать и интегрировать свои возможности в Git. Я попытался перечислить все пути конфликтов, но заметил, что Ancestor and Theys похожи, но Ours - null. Все эти конфликты произошли с удаленными файлами. Это нормально ? – Daethe

+0

Если у вас конфликт, в котором 'Ours' имеет значение null, то это было удалено в вашей ветке и изменено в другом. Совершенно нормально. –