libgit2 / libgit2/libgit2sharp
Add In-Memory Repository Support
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 3.5k
- Forks
- 925
- PR merge metrics
- No merged PRs in 30d
Description
I am building an application that needs to interact with git (clone repo, create repo, push, etc.) but does not have direct access to a disk. I would like to be able to work with a git repo entirely in-memory.
As an aside, I would also like to be able to work with a git repository that is written out to a non-file datastore such as a database.
In general, it would be nice if the logic in Repository was abstracted out away from the disk. It appears that IRepository is not tightly coupled with disk (assuming all of the various methods that take a path are referring to a relative path). However, there appears to be quite a bit of git specific logic bound up in the Repository implementation which makes it difficult to a novice contributor to implement a custom datastore engine (e.g., in-memory, database, etc.).
Researching this topic very briefly, it appears that the underlying libgit2 supports non-filesystem repositories, so I don't believe this is a technical limitation with libgit2.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the IRepository contract and the Repository implementation, then verify what non-filesystem repository support libgit2 provides. Define the abstraction needed for in-memory and other non-file datastores, with completion demonstrated by repository operations such as clone, create, and push working without direct disk access.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, git
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100