程序开发 · 2024年7月26日

如何使用 golang 计算字符串的 git blob sha

当前位置: > > > > 如何使用 golang 计算字符串的 git blob sha

来源:stackoverflow
2024-04-20 12:27:40
0浏览
收藏

欢迎各位小伙伴来到,相聚于此都是缘哈哈哈!今天我给大家带来《如何使用 golang 计算字符串的 git blob sha》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

给定一个字符串,如何计算它的 git BLOB SHA。我尝试使用golang提供的api计算字符串上的sha,但它与git blob sha不匹配。

如何使用 golang 获取与 git blob sha 相同的 sha

正确答案

git 计算 blob sha 的方式有点不同。它在前面添加一个标头 blob <length>\x00<content>

这里<length>是内容的字节长度,\x00是结束分隔符,<content>是实际的内容字符串。

我创建了下面的函数,它返回给定字符串的 git blob sha

func computeGitBlobSHA(s string) string {
    p := fmt.Sprintf("blob %d\x00", len(s))
    h := sha1.New()
    h.Write([]byte(p))
    h.Write([]byte(s))
    return hex.EncodeToString(h.Sum([]byte(nil)))
}

因此调用 computegitblobsha("hello") 将返回 5ab2f8a4323abafb10abb68657d9d39f1a775057,这是实际的 git sha。

请拨打 查看此信息

如果需要,您可以使用 echo -n 'hello' | 进行验证。 git hash-object --stdin

本篇关于《如何使用 golang 计算字符串的 git blob sha》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注公众号!