libgit2 / libgit2/libgit2sharp
ObjectId are materialized too early in git_odb_foreach
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
When enumerating objects in an ObjectDatabase, all ObjectId_s are materialized before enumeration. In a reasonable active repostory this results in a large working set and delay of processing.
-
Proxy should provide an equivalent of git_odb_foreach that is lazy/on-demant and does not materialize all ObjectId_s. (https://github.com/libgit2/libgit2sharp/blob/7f59d22c4fdb7b3d14511aca567e64eefaa43ab2/LibGit2Sharp/Core/Proxy.cs#L1557)
-
ObjectDatabase should use the lazy enumerator from Proxy instead of the ICollection (https://github.com/libgit2/libgit2sharp/blob/7f59d22c4fdb7b3d14511aca567e64eefaa43ab2/LibGit2Sharp/ObjectDatabase.cs#L44)
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
Lisez LibGit2Sharp/Core/Proxy.cs autour de la ligne 1557 et ObjectDatabase.cs autour de la ligne 44. Suivez la manière dont les ObjectId_s sont actuellement exposés et déterminez comment l’énumération de Proxy peut rester lazy ; le travail est terminé lorsque ObjectDatabase énumère sans matérialiser au préalable tous les ObjectId_s.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp, git
- Domaine
- devtools, performance
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100