Что такое эквивалент LibGit2Sharp для «git pull»?

Я пытаюсь объединить изменения из удаленной ветки в локальный репозиторий, однако мне не удалось заставить это работать должным образом - вероятно, неправильное понимание реализации. Извлечение работает нормально, так как я вижу обновления на сервере, но мне кажется, что я что-то ломаю при попытке извлечения.

Я пробовал:

repo.Checkout( branch.TrackedBranch, CheckoutOptions.None, OnCheckoutProgress );

Кажется, это делает то, что вы ожидаете от вызова Clone. Тоже не могу найти способ слить. Насколько я читал, git pull похож на вызов выборки, а затем слияния.

Я просмотрел некоторые тесты в репозитории, такие как MergeFixture, но оказалось, что это не то, на что я надеялся.


person Xaero Degreaz    schedule 06.02.2013    source источник
comment
Гораздо лучше спросить об этом на github.com/libgit2/libgit2sharp — это очень активное сообщество. Но чтобы ответить на ваш вопрос, происходит слияние. Я был бы рад обсудить больше на github...   -  person Edward Thomson    schedule 06.02.2013
comment
Я знаю, что он активен там, но я задал вопрос в системе отслеживания проблем, и мне было предложено задать его здесь, так что я был :)   -  person Xaero Degreaz    schedule 07.02.2013
comment
@EdwardThomson: Согласно README: Вопрос, связанный с использованием или программированием? Разместите его на StackOverflow, используя тег libgit2sharp ;-)   -  person nulltoken    schedule 07.02.2013
comment
@nulltoken Спасибо за резервную копию :-) Есть идеи, как долго мы говорим о реализации слияния? Сначала я использовал ваш GitSharp, и он кажется немного более полным, чем LibGit2Sharp (я почти уверен, что слияние было реализовано).   -  person Xaero Degreaz    schedule 07.02.2013
comment
Есть идеи, как долго мы говорим о реализации слияния? -› Нет. Я обновлю ответ, когда он будет готов.   -  person nulltoken    schedule 07.02.2013


Ответы (2)


Pull действительно является комбинацией Fetch и Merge.

  • Fetch готов
  • Merge выполняется (как заявил @EdwardThomson)

Я просмотрел некоторые тесты в репозитории, такие как MergeFixture, но оказалось, что это не то, на что я надеялся.

Поскольку процесс полного слияния еще недоступен, тестов пока немного. Однако MergeFixture.cs включает некоторые аспекты слияния

  • Обнаружение конфликтов/необъединенных записей
  • Поиск объединяемых веток (ветвей)

В CommitFixture.cs есть и другие связанные биты.

  • Очистка потенциальных метаданных слияния при фиксации
  • Автоматическое включение родителей при выполнении фиксации слияния

Libgit2 также включает некоторые биты более низкого уровня для разрешения конфликтов, разрешенных пользователем.

Обновлять

Функция Объединение теперь доступна в LibGit2Sharp (см. запрос на включение #608).)

person nulltoken    schedule 07.02.2013

Обновление от апреля 2014 г.

В LibGit2Sharp добавлен удобный метод Pull.

repo.Network.Pull(signature, pullOptions);

Вы можете найти более простые способы использования в тестовых приспособлениях.

person Michael Minton    schedule 22.10.2014
comment
Начиная с версии 0.25.0, в сети больше нет операции Pull... однако есть новый статический объект Commands с функцией Pull. - person Nathan Tregillus; 23.05.2018