Я хочу проверить, есть ли у меня последняя версия программы. У меня есть моя программа, разделенная на bitbucket.org, и я хочу, чтобы мой код на C++ написал мне, если мне нужно вытащить последнюю версию или у меня уже есть последняя версия.Как проверить, требуется ли pull с помощью libgit2 в C++?
1
A
ответ
1
Во-первых, вы должны получить, чтобы получить состояние удаленных ветвей отслеживания. Нет другого способа проверить, была ли ваша ветка обновлена на пульте дистанционного управления. Для этой цели многие инструменты автоматически выбираются периодически (например, каждые 10 минут).
Затем сравните местную ветку с ее восходящим потоком. Один из способов сделать это с помощью libgit2 - использовать функциональность revwalk
. Если вы выберете git_revwalk_push_ref
вверх по течению и git_revwalk_hide_ref
, то локальная ветка, пройдя по диапазону, вы можете подсчитать, сколько коммитов находится за вашей локальной ветвью. Сделайте противоположное, чтобы получить количество коммитов вперед.
Пример:
git_revwalk *walker;
git_revwalk_new(&walker, repo);
git_revwalk_push_ref(walker, "refs/remotes/origin/master");
git_revwalk_hide_ref(walker, "refs/heads/master");
git_oid id;
int count = 0;
while (!git_revwalk_next(&id, walker))
++count;
// 'count' is the difference between remote and local
Хорошо, но, например, функция git_revwalk_push_ref имеет два параметра: 1, git_revwalk * ходить ||||| 2, const char * refname ||||| Что я должен передать как имя? –
Я уже извлек данные, и мне нужен какой-то эквивалент этого в libgit2: git diff –
Я добавил пример. –