libgit2 / libgit2/pygit2

How to efficiently generating the diffstat?

Offen
#894 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
1.7k
Forks
408
Ø Merge
2 T. 57 Min.
Gemergte PRs (30 T.)
7

Beschreibung

Hi,

I need some help to efficiently generating the diffstat. I would like to get the number of lines added and deleted from one commit to another, like the following command does:

git log --stat

I wrote the following code, but it is pretty slow.

for raw_parent in self.__raw_commit.parents:
    diff = self.__raw_commit.tree.diff_to_tree(raw_parent.tree)
    self._stats.insertions += diff.stats.insertions
    self._stats.deletions += diff.stats.deletions
    self._stats.files_changed += diff.stats.files_changed

Do you know a better way to capture this information?

Best regards,

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 der Python-Schleife über self.__raw_commit.parents sowie den Einstiegspunkten tree.diff_to_tree und diff.stats und vergleiche anschließend ihr Ziel mit git log --stat. Ermittle, ob pygit2 oder libgit2 eine effizientere Möglichkeit bietet, Einfügungen, Löschungen und geänderte Dateien abzurufen; abgeschlossen ist die Aufgabe, wenn der Ansatz identifiziert ist und äquivalente diffstat-Werte erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
git, python
Bereich
developer-experience, tooling
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

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