libgit2 / libgit2/libgit2sharp

Last Commit message per treeEntry

Offen
#1,733 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Hi i dont know it is implemented now but i want retrieve treeeObject from repository with last commit message in which commit current file / folder was changed. I trying to solve this for 2 days but didnt find any usefull on forums or on docummentation here. Thanks for help.

Reproduction steps

what i tried

var xxx = tree[path];

                // For tree
                if (xxx.TargetType == TreeEntryTargetType.Tree)
                {
                    foreach (var item in (Tree)xxx.Target)
                    {
                        var CommitMessages = _repository.Commits.QueryBy(item.Path);
                        string commitMessage = null;

                        if (CommitMessages != null)
                        {
                            commitMessage = CommitMessages.Take(1).Last().Commit.MessageShort;
                        }

                        treeObjects.Add(new TreeObject {
                            Name = item.Name,
                            Sha = item.Target.Sha,
                            Type = item.TargetType.ToString(),
                            Path = item.Path,
                            CommitMessage = commitMessage
                        });
                    }
                }

But its very slow and not every time it return InvalidOperationException: Sequence contains no elements and its take too much time ... (17secs till error?)

Expected behavior

To retireive treeEntries with at least commit sha Or better with commit itself

Actual behavior

I can retireve treeEntries and then look for Commits but there is problem it stilll pulling tree in commit and it is so slow,

Version of LibGit2Sharp (release number or SHA1)

commit 8950f498511d9e4cc1756193682ac3bb08581166

Operating system(s) tested; .NET runtime tested

.Net core 3

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem Tree-Entry-Beispiel und der Verwendung von _repository.Commits.QueryBy(item.Path), und prüfe anschließend, wie Tree Entries und Commit-Abfragen in LibGit2Sharp dargestellt werden. Vergleiche die angeforderte letzte Commit-SHA oder -Nachricht mit dem aktuellen langsamen Verhalten und dem Fehler bei einer leeren Sequenz. Done sollte eine zuverlässige, effiziente Methode definieren, um jeden Datei- oder Ordnereintrag seinem letzten relevanten Commit zuzuordnen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp, git
Bereich
devtools
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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