C++ 如何在c+;中使用libgit2检查是否需要pull+;?

C++ 如何在c+;中使用libgit2检查是否需要pull+;?,c++,bitbucket,commit,git-pull,libgit2,C++,Bitbucket,Commit,Git Pull,Libgit2,我想检查一下我是否有最新版本的程序。我有我的程序共享到ButButk.Org,我希望我的C++代码写我,如果我需要拉最新的版本,或者我已经有了最新版本。p> 首先,您必须获取远程跟踪分支的状态。没有其他方法可以检查您的分支是否已在远程服务器上更新。为此,许多工具会定期(如每10分钟)自动提取 然后将本地分行与其上游分行进行比较。使用libgit2实现这一点的一种方法是使用revwalk功能。如果您git\u revwalk\u push\u ref上游和git\u revwalk\u hide\

我想检查一下我是否有最新版本的程序。我有我的程序共享到ButButk.Org,我希望我的C++代码写我,如果我需要拉最新的版本,或者我已经有了最新版本。p> 首先,您必须获取远程跟踪分支的状态。没有其他方法可以检查您的分支是否已在远程服务器上更新。为此,许多工具会定期(如每10分钟)自动提取

然后将本地分行与其上游分行进行比较。使用libgit2实现这一点的一种方法是使用
revwalk
功能。如果您
git\u revwalk\u push\u ref
上游和
git\u revwalk\u hide\u 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*walk,2,const char*refname,我应该传递什么作为refname?我已经获取了数据,我需要libgit2中的一些等价物:git diff我添加了一个例子。