在 libgit2 中,如何解析短引用名称以获得完整的引用名称或哈希?需要调用什么 libgit2 函数?
问问题
776 次
1 回答
4
libgit2通过使用该函数来支持完整的扩展 SHA-1 语法。git_revparse_single()
为了检索哈希,只需将检索到的对象传递给git_object_id()
函数。
利用git_revparse_single()
将允许复制以下标准 git 命令行用法:
$ git show master
$ git show heads/master
$ git show e90810b
...
Libgit2 代码:
git_repository* repo;
git_object *object;
int error;
... open existing repository ...
/* Short named references
* Note: Might be considered ambiguous if tags/master
* and heads/master both exist
*/
error = git_revparse_single(&obj, repo, "master");
git_object_free(obj);
/* Less ambiguous name */
error = git_revparse_single(&obj, repo, "heads/master");
git_object_free(obj);
/* Short hash as well */
error = git_revparse_single(&obj, repo, "e90810b");
git_object_free(obj);
/* Complex specs */
error = git_revparse_single(&obj, repo, "master@{0}~1^1");
git_object_free(obj);
/* Tree entries */
error = git_revparse_single(&obj, repo, "test/master@{1}:branch_file.txt");
git_object_free(obj);
有关使用的更多信息或示例,您可以查看单元测试。
注意:目前没有内置的公开方法可以从短参考名称中检索规范参考名称。
更新
了不起的@CarlosMartinNieto做到了。
Libgit2 现在公开git_reference_dwim
通过其短名称检索引用(例如master
,,heads/master
...)
于 2012-10-08T15:44:04.640 回答