Wie erstelle ich ein Git-Commit-Protokoll für den letzten Monat und exportiere es als CSV?

73

Gibt es eine Möglichkeit, ein Git-Commit-Protokoll für den letzten Monat zu erstellen und es als CSV-Datei zu exportieren? Ich suche nach etwas, das ich über die Befehlszeile ausführen kann, oder nach einer App eines Drittanbieters. Ich möchte die folgenden Spalten: Autor, Datum des Festschreibens, Betreff, bearbeitete Datei und Hash.

Justin Jackson
quelle

Antworten:

116

Sie können beispielsweise die Option --sinceund verwenden --prettyvon git log:

git log --since="last month" --pretty=format:'%h,%an,%ar,%s' > log.csv

Weitere Optionen finden Sie im Abschnitt PRETTY FORMATS der Git-Protokoll-Manpage .

Simon
quelle
1
Funktioniert perfekt! Vielen Dank. Gibt es eine Möglichkeit, (in einer separaten Spalte) anzugeben, welche Datei betroffen / bearbeitet wurde?
Justin Jackson
2
Dies ist schwieriger, da im Allgemeinen mehr als eine Datei von einem Commit betroffen ist. Möchten Sie eine Zeile für Datei (also mehrere Zeilen für dasselbe Commit) oder eine (durch Semikolons getrennte?) Liste der pro Commit betroffenen Dateien? In jedem Fall wird dies ein Shell-Skript beinhalten, denke ich.
Simon
1
Das ist nett. Aber gibt es auch eine Option für den letzten Monat vom 1. bis zum letzten Tag?
Hugo der Hungrige
7
Das Hinzufügen von Anführungszeichen würde die CSV-Ausgabedatei verbessern, wenn die Festschreibungsnachrichten Kommas enthalten. "% h", "% an", "% ar", "% s"
dwenaus
Das Ergebnis für mich hat das folgende Format:Commit-ID,User,x hours ago,first line of commit message
Testen
38

Dieser Befehl erstellt eine formatierte CSV, die Hash, Benutzer, Datum / Uhrzeit, Beschreibung, geänderte Dateien, Einfügungen und Löschungen enthält

git log --pretty=format:'"%h","%an","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv
A. Badger
quelle
2
Merge Commits haben die Ausgabe für mich durcheinander gebracht und den --no-mergesParameter hinzugefügt, der dabei geholfen hat. Ich habe auch %x09ein Tabulatortrennzeichen anstelle eines Kommas für die Commit-Texte verwendet, die Kommas enthalten.
Emmanuel Touzery
6

Wenn Sie einen Datumsbereich anwenden möchten, fügen Sie - nach oder - vor in diesem Format "yyyy-mM-d" hinzu.

git log --before="2016-12-1" --pretty=format:'"%h","%an","%ae","%aD","%s",' --shortstat --no-merges | paste - - - > log.csv
Marvin Glenn Lacuna
quelle