如何使用带有nodegit的Revparse获取提交和树?

时间:2015-09-24 09:46:06

标签: nodegit

我尝试使用nodegit根据引用或oid使用Revparse获取提交树,我认为以下代码可行,但是我得到了getTree未定义的错误:

return git.Repository.open(path_to_repo)
    .then((repo) => git.Revparse.single(repo, "other"))
    .then((commit) => commit.getTree());

如何将Revparse返回的对象转换为提交?

1 个答案:

答案 0 :(得分:1)

所以RevParse.single返回一个Object,它实际上只是一个低级别的libgit2对象。必须检查type以确保它是Object.TYPE.COMMIT。如果是,那么您可以抓住OID并使用它来获取实际的Commit

由于NodeGit实际上只是绑定到libgit2,因此(目前)没有任何方法可以将对象从一个事物转换为另一个事物。你必须自己进行查找。

现在,如果您只是尝试获取给定引用所指向的提交,则可以将代码修改为:

return git.Repository.open(path_to_repo)
    .then((repo) => repo.getReferenceCommit("other"))
    .then((commit) => commit.getTree());