C++ - 获取 GitHub 项目的最新版本

Posted

技术标签:

【中文标题】C++ - 获取 GitHub 项目的最新版本【英文标题】:C++ - Get latest release of a GitHub project 【发布时间】:2018-05-26 06:56:12 【问题描述】:

我有一个程序使用存储在 GitHub 项目中的一组文件。

我想查看该 GitHub 项目的最新发布版本,如果它比本地版本更新,请下载这些文件。

有谁知道如何检查发布版本并从(使用 QT C++)下载?

我的程序是在 Qt 5 中完成的 (https://github.com/bq/QssWeb2Board)

【问题讨论】:

那么您想从您的 C++ 程序中启动一个 git 命令吗?然后你可能想要使用一个库,例如 libgit2 (libgit2.github.com)。您也可以使用QProcess 调用已安装的 git 可执行文件,但是您必须处理各种输出解析。 @pschill 我在考虑使用 GitHub API 使用 GitHub API 时,您需要将命令构建为 http 请求并处理结果。你不认为使用一个唯一目的是解决你所遇到的确切问题的库更容易吗? @pschill 是的。那是一个很棒的图书馆。这似乎对我的目标很重要。但我会试一试。谢谢指出! 【参考方案1】:

检查注释库并进行一些挖掘,我找到了答案。这里是主要代码。谢谢。

QUrl url("https://api.github.com/repos/" + owner +"/" + project + "/tags");
qInfo() << url.toString();
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkAccessManager nam;
QNetworkReply * reply = nam.get(request);

timeout=false;
timer->start(5000);

while(!timeout)
    qApp->processEvents();
    if(reply->isFinished()) break;


if(reply->isFinished())
    QByteArray response_data = reply->readAll();
    QJsonDocument json = QJsonDocument::fromJson(response_data);
    return json[0]["name"].toString();
else
    return QString("Timeout");

【讨论】:

以上是关于C++ - 获取 GitHub 项目的最新版本的主要内容,如果未能解决你的问题,请参考以下文章

获取 github 仓库最新版本号和版本号列表的 API

获取 github 项目库最新版本号的快捷命令

如何从 API 捕获项目的最新 GitHub 版本?

sh [Shell - 从GitHub上的存储库获取最新版本号]从GitHub上的存储库获取最新版本号,不适用不规范发布#github #shell

如何从 Github API 获取最新版本的提交哈希

VisualStudio下如何编译和使用最新版本的OpenCV(修正版)