libgit2 の ruby バインディング (「頑丈な」gem) を使用してコミットを作成する方法を知っている人はいますか? libgit2 使用ガイドと rugged gem github ページで見つけられるすべての例を試しましたが、コミットを作成または編集するための例はどれも機能していません。
これは、これまでコミットする方法を理解しようとするのに役立ちました。ただし、これは libgit2 自体に対するものであり、ruby バインディングに対するものではありません。http://librelist.com/browser//libgit2/2011/2/19/initing-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202ce904180286a4a85
Rugged 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=
同様のコマンドを使用して編集するだけですが、「message=」メソッドがないため、noMethodErrors が発生します。
libgit2 使用ガイド: http://libgit2.github.com/api.html
Rugged ドキュメント 0: http://rubydoc.info/gems/rugged/0.16.0/frames
Rugged Github ページ: https://github.com/ libgit2/頑丈
編集:これを再現する方法; http://pastebin.com/wnta8FWm
Edit_n+1: Rugged::Tree オブジェクトの代わりにツリーの sha を使用してみました。
x=Rugged::Commit.create( repo, :author=>author, :message=>"Hello world\n\n", :committer=>author, :parents=>parents, :tree=>tree.oid )
しかし、それは以前とまったく同じエラー出力を生成しました。