我尝试使用nodegit根据引用或oid使用Revparse获取提交树,我认为以下代码可行,但是我得到了getTree未定义的错误:
return git.Repository.open(path_to_repo)
.then((repo) => git.Revparse.single(repo, "other"))
.then((commit) => commit.getTree());
如何将Revparse返回的对象转换为提交?
答案 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());