2016-10-05 68 views
2

我目前正在开发一个flashcard应用程序,其中由用户创建的套牌充当Git存储库。当在应用程序中创建一张卡片时,一个新文件将被提交到存储库,当卡片被更改,文件被更改以及卡片被删除时 - 您就明白了。如何在内存中创建一个git仓库?

应用程序保存的文件格式是gzip Git存储库,因此在任何时候我都不需要将存储库写入磁盘。我怎样才能最好地把治疗甲板作为一个Git仓库来处理?

回答

5

看看libgit2。它支持在内存中的git仓库的场景,也有绑定到许多语言:使用rugged

https://libgit2.github.com

例如,红宝石为libgit2结合,你可以做这样的事情:

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

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

谢谢。尽管我不太了解'Backend'。为什么我需要一个? – 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