libgit2 / libgit2/libgit2sharp
Feature request: Create blobs in-memory
Personne n'a encore pris cette issue.
- Langage dominant
- C#
- Étoiles
- 3.5k
- Forks
- 925
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I would like to make a diff between two strings with libgit2sharp. The strings hold file contents loaded elsewhere. The diff.Compare-methods only take blobs, and the constructors of the Blobclass don't accept strings or streams and are marked internal. This prevents me from creating blobs directly. I have to write to disk first.
var oldFileContents = @"
Line 1
Line 2
Line 3
";
var newFileContents = @"
Line 1
Line 2 has changed
";
var path = Repository.Init("C:\\tmp");
var repo = new Repository(path);
var oldObjectId = repo.ObjectDatabase.Write<Blob>(Encoding.UTF8.GetBytes(oldFileContents));
var newObjectId = repo.ObjectDatabase.Write<Blob>(Encoding.UTF8.GetBytes(newFileContents));
var oldBlob = repo.Lookup<Blob>(oldObjectId);
var newBlob = repo.Lookup<Blob>(newObjectId);
var diff = repo.Diff.Compare(oldBlob, newBlob); // Works as expected
// git repo for in-memory operations
var in_memory_repo = new Repository();
// This line failes with the LibGit2SharpException "path cannot exist in repository". As far as I can see this is intentional.
var in_memory_blob = in_memory_repo.ObjectDatabase.Write<Blob>(Encoding.UTF8.GetBytes(oldFileContents));
Seeing that libgit2sharp already supports working with diffs and patches in-memory, it would be nice to be able to create blobs from strings or streams.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par suivre la construction de Blob, ObjectDatabase.Write et Diff.Compare dans l’API libgit2sharp. Le comportement demandé consiste à créer des blobs à partir de chaînes ou de streams et à les transmettre à des diffs en mémoire sans écrire sur le disque ni nécessiter de dépôt reposant sur un disque ; validez cela avec les anciens et nouveaux contenus indiqués dans l’issue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp, git
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100