Add In-Memory Repository Support

Offen
#900 17 Kommentare 20 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Muss geklärt werden
Aktivitätsstatus
Veraltet
Tech-Stack
csharp, git
Bereich
tooling

Rechercherichtung

Beginne mit der Überprüfung des IRepository-Vertrags und der Repository-Implementierung und prüfe anschließend, welche Unterstützung libgit2 für Repositorys bietet, die nicht auf dem Dateisystem basieren. Definiere die erforderliche Abstraktion für In-Memory- und andere nicht dateibasierte Datenspeicher. Die Fertigstellung soll dadurch nachgewiesen werden, dass Repository-Operationen wie clone, create und push ohne direkten Festplattenzugriff funktionieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

FeatReq

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.

Vorherrschende Sprache
C#
Sterne
3.5k
Forks
925
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus libgit2/libgit2sharp

Alle Issues in libgit2/libgit2sharp

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.