文档章节

rugged commit类介绍 (三)

zouqilin
 zouqilin
发布于 2014/10/25 16:55
字数 324
阅读 85
收藏 0

Rugged::Commit类

    1.遍历仓库的Commits

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

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| puts c.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 => "Hello world\n\n",#提交信息
    :committer => author,
    :parents => ["2cb831a8aea28b2c1b9c63385585b864e4d3bad1"],#父提交
    :tree => some_tree,#构建的根树
    :update_ref => "HEAD"#需要更新的分支名
#=> "f148106ca58764adc93ad4e2d6b1d168422b9796"#返回值,创建的commit sha值(oid)

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

lastest_cmt = repo.head.target#获取HEAD指向的Commit
root_tree = lastest_cmt.tree#获取根树
entries = root_tree.entries#获取根树的文件和目录(包括submodule)列表
entries.each{|e|puts e}#打印
#结果如下
{: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#目录下的entries count
raw.path("lib/string.h")#获取string.h的entry



© 著作权归作者所有

zouqilin

zouqilin

粉丝 44
博文 9
码字总数 4504
作品 0
深圳
后端工程师
私信 提问
Git仓库文件版本号遍历算法的优化

背景: 目前Git@OSC使用的基于libgit2的Rugged(http://github.com/libgit2/rugged) Git开发库,替换了原来Gitlab的底层Grit Git开发库,目前遇到的问题时在查找文件的提交历史上效率相当低下...

Zoker
2015/10/09
42
5
rugged 进行git push 操作时 报了401错误

@zouqilin 你好,想跟你请教个问题:我在使用rugged 进行git push 操作时 报了401错误。 C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/rugged-0.24.0/lib/rugged/repository.rb:22 4:in `push': ......

imzack
2016/04/07
348
3
关于今年Git项目开发工作的那些事儿

@罗雅新 @邹奇林 @黄文威 @付晓伟 @李博文 @莫立亮 @曾宪钊 @黄哲彬 在全国人民喜迎人大会议召开之际,接上级精神通知,在这里说下今年Git开发工作的前提,也借这个帖子让新同事介绍下Git的情...

Zoker
2015/03/09
19
4
Android Fragment 使用详解

有关Android Fragment相关内容,我们在Fragment对比Activity - Android碎片介绍一文简单讲了下Fragment的作用以及它的生命周期,今天主要讲些Fragment的管理控制、性能优化以及和Activity的传...

鉴客
2011/12/12
8.7K
0
PostgreSQL DBA(2) - 数据库参数设置#2

本节简单介绍了PostgreSQL数据库的参数设置,包括参数的含义以及参数的推荐设置等。 典型的,假设数据库主机OS为Linux 64bit,内存为8G,存储阵列使用RAID 5(带宽约为200MB/s,IOPS约为200),主机没...

EthanHe
2018/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何优雅地检测JavaScript中的空闲时间?

是否可以在JavaScript中检测“ 空闲 ”时间? 我的主要用例可能是预取或预加载内容。 空闲时间: 用户不活动或没有使用CPU的时间 #1楼 如果不使用jQuery,则仅使用普通JavaScript: var inac...

技术盛宴
41分钟前
31
0
获取枚举值的属性

我想知道是否可以获取枚举值而不是枚举本身的属性? 例如,假设我有以下枚举: using System.ComponentModel; // for DescriptionAttributeenum FunkyAttributesEnum{ [Description(...

javail
今天
78
0
concurrently 启动多个serve时命令行输出混乱

在script中配置中加入参数 -r "start": "npx concurrently -r \"npm:serve\" \"npm:web\"" 输出比较整洁 输出混乱, 会将有用的信息冲掉...

阿豪boy
今天
48
0
每天AC系列(三):电话号码的字母组合

1 题目 Leetcode第17题。 数字2-9映射字母,给出一个包含字符串的数字,列出字母的所有组合。 2 递归 拿到这样的题目想到了递归实现,创建一个Map映射对应的字母,然后把它传给递归函数,同时...

Blueeeeeee
今天
44
0
Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
114
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部