2015-09-24 1 views
1

Я пытаюсь использовать nodegit, чтобы получить дерево коммит на основе справки или OID с помощью Revparse, я думал, следующий код будет работать, но я получаю getTree неопределенных ошибок:Как получить фиксацию и дерево с помощью Revparse с nodegit?

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

Как я передаю объект, возвращенный Revparse, в коммит?

ответ

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()); 
+1

Спасибо! Я решил это: return git.Revparse.single (repo, rev) .then ((object) => git.Commit.lookup (repo, object.id())) then then ((commit) => return commit .getTree()); ' –