意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Rugged::Commit类怎么使用

来源:恒创科技 编辑:恒创科技编辑部
2024-02-01 15:56:59

这篇文章主要介绍了Rugged::Commit类怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Rugged::Commit类怎么使用文章都会有所收获,下面我们一起来看看吧。

1.遍历仓库的Commits

Rugged::Walker是用来对仓库的commits集合进行遍历的。


Rugged::Commit类怎么使用

walker=Rugged::Walker.new(repo)#c
walker.sorting(Rugged::SORT_TOPO|Rugged::SORT_REVERSE)#遍历方式(按拓扑逆序,也可以采用时间顺序)
walker.push(hex_sha_interesting)#感兴趣的commit的oid(sha)值,从该sha开始进行遍历
walker.hide(hex_sha_uninteresting)#不希望遍历的sha(由此包括其前面的sha)
walker.each{|c|putsc.inspect}#遍历输出
walker.reset

2.创建Commit

author={:email=>"zouqilin@csu.edu.cn",:time=>Time.now,:name=>"zouqilin"}#代码作者
committer={:email=>"zouqilin@csu.edu.cn",:time=>Time.now,:name=>"zouqilin"}#提交者

Rugged::Commit.create(r,
:author=>author,
:message=>"Helloworld\n\n",#提交信息
:committer=>author,
:parents=>["2cb831a8aea28b2c1b9c63385585b864e4d3bad1"],#父提交
:tree=>some_tree,#构建的根树
:update_ref=>"HEAD"#需要更新的分支名
#=>"f148106ca58764adc93ad4e2d6b1d168422b9796"#返回值,创建的commitsha值(oid)

3.获取Commit的相关属性和目录,文件以及submodule

lastest_cmt=repo.head.target#获取HEAD指向的Commit
root_tree=lastest_cmt.tree#获取根树
entries=root_tree.entries#获取根树的文件和目录(包括submodule)列表
entries.each{|e|putse}#打印
#结果如下
{:type=>:blob,:oid=>"99e7edb53db9355f10c6f2dfaa5a183f205d93bf",:filemode=>100644,:name=>".gitignore"}
{:type=>:tree,:name=>"lib",:oid=>"e1253910439ea902cf49be8a9f02f3c08d89ac73",:filemode=>040000}
{:type=>:blob,:name=>"README.md",:oid=>"81b68f040b120c9627518213f7fc317d1ed18e1c",:filemode=>0100644}

raw_blob=repo.lookup("81b68f040b120c9627518213f7fc317d1ed18e1c")#获取raw_blob从而得到文件大小和内容
raw_blob.size#文件大小
raw_blob.data#ascii编码内容
raw_blob.text#utf-8文本

raw_tree=repo.lookup("e1253910439ea902cf49be8a9f02f3c08d89ac73")
raw.entries#目录下的entry
raw.count#目录下的entriescount
raw.path("lib/string.h")#获取string.h的entry

关于“Rugged::Commit类怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Rugged::Commit类怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恒创行业资讯频道。

上一篇: 如何在Mesos中提高网络隔离效果 下一篇: 手机怎么远程登录云服务器?