[PYTHON] Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format

Zweck

Ich wollte Git Commit-Informationen im CSV-Format erhalten Mit der Option --pretty = format von git log konnte ich es nicht in das gewünschte Format bringen, also gebe ich das Protokoll einmal aus und formatiere es dann.

Umgebung

OS Mac Catalina Pycharm CE python 3.7

Vorbereitung

Holen Sie sich Git-Protokoll

Eine Protokolldatei wird ausgegeben, wenn Sie sie mit einer Konsole wie GitBash aufrufen.

--date-order --date=format:'%Y/%m/%d %H:%M:%S' > git.log```

##### Erwartete Erfassung des Git-Protokolls


#### **` git.log`**
```log

commit f36da445d06d2db7b4f08a508be835f5464ded
Author: nomori<[email protected]>
Date:   2020/10/10 23:50:29
    first commit.
A	.gitignore
A	perse_git_log.py

Implementierung

perse_git_log.py


import re
import csv
import os

COMMIT_ID = 'commit '
STATUS_ADD = 'A	'
STATUS_MOD = 'M	'
STATUS_DEL = 'D	'
GIT_AUTHOR = 'Author: '
GIT_DATE = 'Date:   '

path = './input/git.log'

#Git-Protokolldatei lesen.
array_commit_info = []
with open(path) as git_log_file:
    data = git_log_file.readlines()

for item in data:
    #Entfernen Sie den Zeilenvorschubcode am Ende.
    item = item.replace('\n', '')

    if COMMIT_ID in item:
        #Holen Sie sich die Hash-ID des Commits.
        commit_id = item.replace(COMMIT_ID, '')

    elif GIT_AUTHOR in item:
        #Erhalten Sie festgeschriebene Benutzerinformationen.
        author_tmp = item.replace(GIT_AUTHOR, '')
        #Löschen Sie den Teil der E-Mail-Adresse.
        author = re.sub(' +<.*>', '', author_tmp)

    elif GIT_DATE in item:
        #Datum und Uhrzeit des Commits abrufen.
        date = item.replace(GIT_DATE, '')

    else:
        #Abrufen des Änderungsverlaufs.
        file_status = item[0:2]
        if file_status == STATUS_ADD or file_status == STATUS_MOD or file_status == STATUS_DEL:
            #Dateinamen ohne Git-Status abrufen.
            file_name = item[2:]
            #Halten Sie Informationen in einem Array für die Ausgabe.
            array_commit_info.append([commit_id, author, date, file_name])

print(array_commit_info)

#Ausgabe im CSV-Format.
file_path = './output/'
if not os.path.exists(file_path):
    os.mkdir(file_path)

output_filename = file_path + 'git_output.csv'
with open(output_filename, 'w') as f:
    writer = csv.writer(f)

    #Header-Informationen ausgeben.
    writer.writerow(['COMMIT_ID', 'AUTHOR', 'DATE', 'COMMIT_FILE_NAME'])
    for line_data in array_commit_info:
        #Commit-Informationen ausgeben.
        writer.writerow(line_data)

Ausgabebeispiel

git_output.csv


f36da445d06d2db7b4f08a508be835f5464ded,nomori,2020/10/10 23:50:29,.gitignore
f36da445d06d2db7b4f08a508be835f5464ded,nomori,2020/10/10 23:50:29,perse_git_log.py

Referenz

Recommended Posts

Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Holen Sie sich den in AWS S3 gespeicherten Dateinamen (1000 oder mehr)
Holen Sie sich den Hostnamen in Python
Suchen Sie den Dateinamen einschließlich des angegebenen Wortes und der angegebenen Erweiterung im Verzeichnis
Datum und Uhrzeit im angegebenen Format abrufen
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
Derjenige, der die CSV-Datei teilt, liest und parallel verarbeitet
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Extrahieren Sie nur den Dateinamen mit Ausnahme des Verzeichnisses im Verzeichnis
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
Holen Sie sich den Git-Zweignamen und den Tag-Namen mit Python
Loggen Sie sich mit json mit pygogo ein.
Importfehler: Der Name'Flask 'kann nicht importiert werden, wenn der Dateiname in Flask flask.py lautet
Behandeln Sie CSV mit dem Element, das Sie im Namen der Datei analysieren möchten
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
So erhalten Sie den Variablennamen selbst in Python
Geben Sie den Dateinamen an, wenn Sie eine an CSV angehängte E-Mail senden
Beschreiben Sie das mehrstufige SSH-Ziel in der Konfiguration, melden Sie sich einfach an und kopieren Sie die Datei mit scp
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Lesen Sie die Linkliste im CSV-Format mit dem Graph-Tool
Rufen Sie die Benutzer-ID und den Bildschirmnamen des Teilnehmers in Slack ab
Ein Liner, um den n-ten Commit-Hash in Git zu erhalten
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
[Python] Öffnen Sie die CSV-Datei in dem von Pandas angegebenen Ordner
Abrufen und Erstellen von Knoten, die in der neuen Version hinzugefügt und aktualisiert wurden
[Python] Lesen Sie die CSV-Datei und zeigen Sie die Abbildung mit matplotlib an
Durchsuche den pandas.DataFrame mit einer Variablen und erhalte die entsprechende Zeile.
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
[Shell] So erhalten Sie den Remote-Standardzweig mit Git
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Über die Notwendigkeit eines ersten Schrägstrichs im Abonnenten- und Herausgebernamen
So erhalten Sie den NTP-Servernamen per DHCP und legen ihn fest
Python> 3 Brüche im Format ".3f, .3f, .3f" anzeigen / 3 Koordinatenwerte im Bereich [-1: 1] abrufen
[Django] Importieren und exportieren Sie DB-Tabellen im Excel- oder CSV-Format
Auf jeden Fall bleibt das schnellste serielle Kommunikationsprotokoll in der Datei
Formatieren Sie die CSV-Datei "Nationalfeiertag" des Kabinetts mit Pandas
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Geben Sie auf der AWS Cloud-Produktseite den Namen des AWS-Dienstes in csv ein
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
Speichern Sie die Binärdatei in Python
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Skriptpfad in Python
Lesen und Schreiben von Python CSV-Dateien
Die Geschichte des "Lochs" in der Akte
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Dateipfad mit Pathlib
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
[Python Kivy] So erhalten Sie den Dateipfad durch Ziehen und Ablegen
Lesen und formatieren Sie CSV-Dateien gemischt mit Komma-Registerkarten mit Python-Pandas
Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV
So erhalten Sie mit pandas DataFrame einen bestimmten Spaltennamen und Indexnamen
Abrufen, Testen und Senden von Testfällen im AtCoder-Wettbewerb über die Befehlszeile
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7