libgit2のRubyバインディングをコミットする方法
質問
libgit2のRubyバインディング( 'Rugged' GEM)を使用してコミットを作成する方法を知っていますか?私は私が見つけることができるすべての例を、libgit2の使用ガイドとrugged gem githubページで試し、そしてコミットを作成または編集するための試験のどれも作業していません。
これは、Libgit2自体の場合を除き、これまでのところ、Rubyバインディングではなく、これまでのところでコミットする方法を見つけようとしています。 http://librelist.com/browser//19/iNity-a-repository-adding-files-to-the-index-and-committing/#d94ce8df18ff0202CE904180286A4A85
libgit2使用ガイド:>>> http://libgit2.github.com/api.html < BR>
ruggedドキュメント0: http://rubydoc.info/gems/rugged/0.16.0/frames.
rugged githubページ: https://github.com/libgit2/rugged
編集:これを再現する方法 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 )
.
しかし、それはちょうど以前とまったく同じエラー出力を生み出しました。
解決 2
tl; dr ---これは私にそれを修正したものです:gem install --prerelease rugged
掘削と多くの実験の後、私は問題を考え出したと思います。
gem install rugged
をしたとき、それは私に0.16.0バージョンのバージョンを与えました。これは問題を抱えていたバージョンでした、そして私がGEMに付属のテストを試みたときに失敗したテストに失敗しました。
rugged gemのRubyGemsページには、まだgem
の ' - Prerelease'オプションが発生したことがないため、私を混同しました。 gem install --prerelease rugged
バージョン0.17.0.B6をインストールした後(同様に)を実行した後に、そのバージョンは事前になければなりません。
今0.17.0.B6では、問題なく文書に従うことができます。
追加の注意事項、私が読んだ文書は言及していませんが、ext/rugged_commit.c
のソースコードには、REFを更新するために使用できるコミットを作成するときに:update_ref=>''
オプションを指定するコメントがあります。 。このオプションがなければ、コミットは作成されてODBに書き込まれますが、参照は更新されず、コミットは分岐のいずれかからアクセスできません。
他のヒント
Rugged::Commit.create(repo, data)
はReadmeに含まれているものではありません。どのコードを実行していますか?それは単にあなたが必要なフィールドを逃しているように見えます。あなたはどのフィールドを記入していますか?