gpt4 book ai didi

javascript - 如何使用 nodegit 从标签名称获取提交 sha?

转载 作者:搜寻专家 更新时间:2023-11-01 04:13:20 26 4
gpt4 key购买 nike

我有这个:

nodegit.Reference
.lookup(repo, `refs/tags/${tagName}`)
.then(ref => nodegit.Commit.lookup(repo, ref.target()))
.then(commit => ({
tag: tagName,
hash: commit.sha(),
date: commit.date().toJSON(),
}))

如果 tagName 只是提交的别名,则此代码有效,但如果标签是使用 nodegit 创建的正确标签,它会给我一个错误:

the requested type does not match the type in the ODB

当使用 git show [tagname] 时,它会显示:

tag release_2017-07-21_1413
Tagger: xxx
Date: Fri Jul 21 16:13:47 2017 +0200


commit c465e3323fc2c63fbeb91f9b9b43379d28f9b761 (tag: release_2017-07-21_1413, initialRelease)

那么我如何从这个标记引用中获取提交本身 (c465e)?

最佳答案

使用 peel(type) 有效:

nodegit.Reference
.lookup(repo, `refs/tags/${tagName}`)
// This resolves the tag (annotated or not) to a commit ref
.then(ref => ref.peel(nodegit.Object.TYPE.COMMIT))
.then(ref => nodegit.Commit.lookup(repo, ref.id())) // ref.id() now
.then(commit => ({
tag: tagName,
hash: commit.sha(),
date: commit.date().toJSON(),
}))

关于javascript - 如何使用 nodegit 从标签名称获取提交 sha?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com