我正在尝试以编程方式使用
Rugged(
libgit2的Ruby绑定)创建对现有存储库的提交.我试图遵循Rugged
README中提供的文档,但我认为它与代码库的当前状态并不完全匹配.我尝试运行以下代码时不断收到错误:
require 'rugged' # Create an instance of the existing repository repo = Rugged::Repository.new('/full/path/to/repo') # grab the current Time object for Now curr_time = Time.Now # write a new blob to the repository,hang on to the object id oid = repo.write("Some content for the this blob - #{curr_time}.",'blob') # get the index for this repository index = repo.index # add the blob to the index index.add(:path => 'newfile.txt',:oid => oid,:mode => 0100644) curr_tree = index.write_tree(repo) curr_ref = 'HEAD' author = {:email=>'email@email.com',:time=>curr_time,:name=>'username'} new_commit = Rugged::Commit.create(repo,:author => author,:message => "Some Commit Message at #{curr_time}.",:committer => author,:parents => [repo.head.target],:tree => curr_tree,:update_ref => curr_ref)
我得到的当前错误说index.add行有问题.它说TypeError:错误的参数类型为nil(预期的Fixnum).
任何帮助更好地理解如何创建一个坚固的新提交将非常感激.
更新
我刚刚通过运行gem install –prerelease rugged将Rugged 0.16.0更新为Rugged 0.18.0.gh.de28323.我上面详述的代码现在似乎有效.我不确定为什么它不适用于0.16.0.这个人似乎有同样的问题,他们在this answer详述.