首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用libgit2的Ruby绑定进行提交

如何使用libgit2的Ruby绑定进行提交
EN

Stack Overflow用户
提问于 2012-09-29 11:33:03
回答 2查看 966关注 0票数 1

我已经尝试了我能找到的所有示例,在libgit2使用指南和坚固的gem github页面上,创建或编辑提交的示例都不起作用。

http://librelist.com/browser//libgit2/2011/2/19/initing-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202ce904180286a4a85

当我尝试提交时,遵循坚固的Github页面上的步骤,我得到了这个;

代码语言:javascript
复制
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

代码语言:javascript
复制
x=Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree.oid )

但这只会产生与之前完全相同的错误输出。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,但不会更新任何引用,因此无法从任何分支访问提交。

票数 0
EN

Stack Overflow用户

发布于 2012-09-29 16:37:36

Rugged::Commit.create(repo, data)并不是自述文件中的内容。你在运行什么代码?这看起来就像是缺少了一个必填字段。您要填写哪些字段以及如何填写?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12649697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档