Реализовать 'git pull' с помощью libgit2?

У меня есть относительно короткий Gist, который должен использовать libgit2 подражать функциональности git pull команда. К сожалению, это не совсем работает.

В итоге, фрагмент:

  • звонки git_repository_open() открыть репозиторий на диске
  • звонки git_remote_load() чтобы получить git_remote * на пульт с именем "происхождение"
  • звонки git_remote_connect() с GIT_DIRECTION_FETCH флаг
  • звонки git_remote_download() извлекать предметы с пульта

В соответствии с git_remote_stats(), объекты действительно извлекаются. Но рабочий каталог не изменяется, чтобы отразить последний коммит. Я попытался добавить:

git_checkout_head(repo, NULL);

... но это не имело значения.

Ввод:

 мастер проверки 

... в терминале приводит к следующему выводу:

 Уже на "хозяине"
Ваша ветвь отстает от 'origin / master' на 1 коммит и может быть быстро перенесена. 

Как мне перемотать вперед?

1 ответ

Решение

Ты должен бежать git pull origin master

или же

git fetch origin + git merge origin/master

Тогда означает, что вам нужна эквивалентная функция слияния libgit2.

функция слияния доступна в libgit2 v0.20

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