我已经尝试了我能找到的所有示例,在libgit2使用指南和坚固的gem github页面上,创建或编辑提交的示例都不起作用。
http://librelist.com/browser//libgit2/2011/2/19/initing-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202ce904180286a4a85
当我尝试提交时,遵循坚固的Github页面上的步骤,我得到了这个;
pry(main)> Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree )
TypeError: wrong argument type nil (expected String)当我尝试遵循libgit2使用指南时,它基本上是说获取提交,然后使用commit.message= like命令编辑它,但后来我得到了noMethodErrors,因为没有'message=‘方法。
libgit2使用指南:http://libgit2.github.com/api.html
坚固的文档0:http://rubydoc.info/gems/rugged/0.16.0/frames
坚固的Github页面:https://github.com/libgit2/rugged
编辑:如何重现此内容;http://pastebin.com/wnta8FWm
x=Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree.oid )但这只会产生与之前完全相同的错误输出。
发布于 2012-09-30 15:27:08
TL;DR -这就是为我解决这个问题的方法:gem install --prerelease rugged
经过一些挖掘和大量的实验,我想我已经找到了问题所在。
当我使用gem install rugged时,它给我的版本是0.16.0。这就是我遇到问题的版本,当我尝试gem附带的测试时,许多测试都失败了,其中许多失败的测试似乎与提交和编写提交有关。
坚固的gem的Rubygems页面显示有0.17.0.b6版本,这让我很困惑,因为我从来没有遇到过gem的'--prerelease‘选项。该版本必须是预发布版本,因为在执行gem install --prerelease rugged操作之后,还安装了0.17.0.b6版本。
现在有了0.17.0.b6,我可以按照文档操作了,没有问题。
另请注意,我读过的文档没有提到它,但ext/rugged_commit.c中的源代码在创建提交时有提到:update_ref=>''选项的注释,您可以使用该选项更新ref以指向新的提交。如果没有此选项,将创建提交并将其写入ODB,但不会更新任何引用,因此无法从任何分支访问提交。
发布于 2012-09-29 16:37:36
Rugged::Commit.create(repo, data)并不是自述文件中的内容。你在运行什么代码?这看起来就像是缺少了一个必填字段。您要填写哪些字段以及如何填写?
https://stackoverflow.com/questions/12649697
复制相似问题