2016-10-05 65 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