c++ - 在libgit2中执行git描述

标签 c++ libgit2

我想像“git describe”在终端中一样工作。

如何获取我的存储库的当前标签?现在我的程序正在打印

09B8A518

每次我尝试这样做时,这个数字都是不同的,所以我不认为它是提交 ID 之类的。

当我在终端中执行“git describe”时,输出为“v0.1.2”

有办法做到这一点吗?

顺便问一下,如何转换“git_describe_result *out;”串起来?

    string path = C://my/local/repo;
    string result;
    git_libgit2_init();

    const char * REPO_PATH = path.c_str();
    git_repository * repo = nullptr;
    git_repository_open(&repo, REPO_PATH);

    git_describe_result *out;
    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
    opts.version = GIT_DESCRIBE_FORMAT_OPTIONS_VERSION;  // GIT_DESCRIBE_OPTIONS_VERSION;

    git_describe_workdir(&out, repo, &opts);
    cout << out << endl;

    git_describe_result_free(out);
    git_repository_free(repo);
    git_libgit2_shutdown();

最佳答案

使用git_describe_formatgit_describe_result转换为字符串。

关于c++ - 在libgit2中执行git描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43474240/

相关文章:

c++ - 当我抛出异常时内存是否被释放?

c++ - 如何将 cv::Mat 转换为 MFC CBitmap

c++ - 修改对内部数据的引用时更新 STL 优先级队列

c++ - 模板参数推导和 const 限定

c++ - 未能看到复合/迭代器设计模式的真正值(value)

python - Pygit2 - merge 没有快进的分支

ruby - 如何在内存中创建一个git仓库?

ruby - 我如何使用 Rugged 来创建和提交文件,就像从命令行一样?

ios - 如何将索引 check out 到工作目录中。它因错误 :Reference 'refs/heads/master' not found 而失败

c - 用 libgit2 实现 'git pull'?