1

我正在尝试使用 nodegit 来获取基于引用或使用 Revparse 的 oid 的提交树,我认为下面的代码可以工作,但是我得到了 getTree 未定义的错误:

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

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

4

1 回答 1

1

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

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

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

return git.Repository.open(path_to_repo)
    .then((repo) => repo.getReferenceCommit("other"))
    .then((commit) => commit.getTree());
于 2015-09-24T15:31:30.587 回答