2016-10-05 4 views
2

현재 사용자가 만든 데크가 Git 저장소 역할을하는 플래시 카드 응용 프로그램에서 작업 중입니다. 앱에서 카드를 만들면 저장소에 새로운 파일이 커밋되고 카드가 변경되고 파일이 변경되며 카드가 삭제되면 잘 읽혀집니다.메모리에 git 저장소를 만드는 방법은 무엇입니까?

응용 프로그램이 저장하는 파일 형식은 gzip으로 압축 된 Git 저장소이므로 어떤 시점에서도 저장소를 디스크에 쓸 필요가 없습니다. 이런 방법으로 Git 저장소로 데크를 처리하는 것이 가장 좋은 방법일까요?

답변

5

libgit2를 살펴보십시오. 그것은 메모리 자식 저장소 시나리오를 지원하며, 또한 많은 언어에 대한 바인딩이 있습니다 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

감사합니다. 나는 '백엔드'를 정말로 이해하지 못한다. 왜 내가 필요한거야? – birdoftheday

+0

백엔드 int는 libgit2의 컨텍스트는 저장소에 대한 저장소 메커니즘 일뿐입니다. 메모리 내 저장소, 디스크 저장소, 데이터베이스 저장소, 캐시 저장소 등이 될 수 있습니다. libgit2 [여기] (http://blog.deveo.com/your-git-repository-in)에서 백엔드에 대한 자세한 설명을 볼 수 있습니다. -a-database-pluggable-backends-in-libgit2 /) – rpepato

+0

@rpepato 그게'clone_at '에서 작동하는지 알고 있니? 문서에서 찾을 수 없습니다. – Tiago