【问题标题】:How can I check if pull is needed using libgit2 in c++? [closed]如何在 C++ 中使用 libgit2 检查是否需要拉取? [关闭]
【发布时间】:2017-07-09 21:38:11
【问题描述】:

我想检查我是否有最新版本的程序。我已将我的程序共享到 bitbucket.org ,如果我需要获取最新版本,或者我已经拥有最新版本,我希望我的 c++ 代码可以写给我。

【问题讨论】:

    标签: c++ bitbucket commit git-pull libgit2


    【解决方案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 *walk ||||| 2、const char *refname |||||我应该将什么作为引用名传递?
    • 我已经获取了数据,我需要在 libgit2 中进行一些等效的操作: git diff
    • 我加了一个例子。
    猜你喜欢
    • 2011-03-16
    • 2020-11-03
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多