Я хочу проверить, есть ли у меня последняя версия программы. Я поделился своей программой с bitbucket.org, и я хочу, чтобы мой код на С ++ писал мне, если мне нужно получить последнюю версию или у меня уже есть последняя версия.
Во-первых, вам нужно получить данные, чтобы получить состояние удаленных веток отслеживания. Нет другого способа проверить, была ли ваша ветка обновлена на удаленном компьютере. Многие инструменты автоматически выбирают периодически (например, каждые 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
Других решений пока нет …