我熟悉how Git creates SHA1 hashes for files (blobs),但不知道如何为标记对象创建它们。我假设他们是,如果我创建一个带注释的标签,但是配方是什么?我该如何在Git之外复制它(例如,在Perl或Python中)?如何创建Git标签对象SHA1?
1
A
回答
0
的图案基本上是:
sha1("tag " + datasize + "\0" + data)
凡data
是git cat-file
输出。人们可以通过管道该输出产生这git-hash-object
像这样:
git cat-file tag v0.30 | git hash-object -t tag --stdin
而且相当于一个Perl的一行是:
git cat-file tag v0.30 | perl -MDigest::SHA1 -E '$/=undef;$_=<>;say Digest::SHA1->new->add("tag ".length()."\0".$_)->hex digest'
看来,一个可以做同样的事情与任何只需将"tag "
替换为适当的对象名即可:"blob "
,"tree "
或"commit "
。
0
这几乎是一样的,尽管提交对象前面的小标题是不同的。您可以使用git cat-file
来查看实际的格式。
1
一个标签对象的内容如下:基于计算出的SHA1值文本
object <commit-sha1>
type commit
tag <tag-name>
tagger <author-with-timestamp>
<tag-message>
。
我该如何在Git之外复制它(例如,在Perl或Python中)?
相关问题
- 1. 创建多个Git标签
- 2. 如何使用struts标签在jsps中创建对象?
- 3. 如何使用JQ为IE创建对象标签?
- 4. 如何使用代码创建对象(标签,按钮)
- 5. 如何在android中创建标签对象?
- 6. 如何根据其SHA1代码识别Git对象类型?
- 7. 创建对象时,自动创建标签对象,Django的REST框架
- 8. 如何创建返回标志对象
- 9. 来自git标签对象的信息
- 10. 在git中重新创建svn标签
- 11. 在竹内创建GIT标签
- 12. 使用子模块创建git标签
- 13. 的Git拒绝用户创建标签
- 14. 如何创建标签? Docpad
- 15. 查找git中所有对象的SHA1's git
- 16. 如何使用Windows加密API来创建RSA-SHA1签名XMLDSIG
- 17. 如何在GAE/J上创建OAuth HMAC-SHA1签名?
- 18. 从现有的git标签创建一个svn标签
- 19. 如何为传统gcc版本创建git标签?
- 20. Git:如何创建一个也包含子模块的标签?
- 21. git-svn:如何为SVN的子项目创建标签/分支
- 22. 如何在Git中创建发布标签
- 23. 如何在Openshift Origin上创建git标签?
- 24. 如何使用GitExtensions for Windows创建Git标签?
- 25. 如何创建用于对象签名的自签名证书?
- 26. 如何在git中使用python和dulwich创建标签列表并创建新标签?
- 27. 如何从父对象创建对象?
- 28. .net如何创建SHA1哈希?
- 29. 创建对象目标C
- 30. svn创建标签标签
啊,我看到'git cat-file'的输出返回实际散列的内容。 – theory