2016-10-05 1 views
2

私は現在、ユーザーが作成したデッキがGitリポジトリの役割を果たすフラッシュカードアプリケーションに取り組んでいます。アプリでカードが作成されると、新しいファイルがリポジトリにコミットされます。カードが変更され、ファイルが変更され、カードが削除されると、ポイントが取得されます。メモリにgitリポジトリを作成する方法は?

アプリケーションが保存するファイル形式は、gzipされたGitリポジトリです。したがって、いつでも、リポジトリをディスクに書き込む必要はありません。この方法でデッキをGitリポジトリとして扱うにはどうすればいいですか?

答えて

5

libgit2をご覧ください。これは、メモリ内のgitリポジトリのシナリオをサポートし、また、多くの言語へのバインディングがあります。たとえば

https://libgit2.github.com

を、ルビーはlibgit2のバインディング、ruggedを使用することにより、あなたはこのようなことを行うことができます:

a_backend = Rugged::InMemory::Backend.new(opt1: 'setting', opt2: 'setting') 

repo = Rugged::Repository.init_at('repo_name', :bare, backend: a_backend) 
+0

ありがとうございます。私は本当に「バックエンド」を理解していません。なぜ私は1つ必要ですか? – birdoftheday

+0

バックエンドint彼はlibgit2のコンテキストは、あなたのレポのためのストレージメカニズムです。メモリ内ストレージ、ディスクストレージ、データベースストレージ、キャッシュストレージなどがあります。バックエンドの詳細については、libgit2 [here](http://blog.deveo.com/your-git-repository-in)を参照してください。 -a-database-pluggable-backends-in-libgit2 /) – rpepato

+0

@rpepatoそれが 'clone_at'で使えるかどうか知っていますか?私は文書で見つけることができません – Tiago

関連する問題