2016-05-20 5 views
-2

Ich brauche eine Git-Repository abzufragen, so dass ich mit einem Datensatz aus folgendem Schema am Ende, dass alle Beiträge in das Repository enthält:Wie kann ich ein Git Repository für MSR (Mining Software Repositories) Zwecke abfragen?

user.id, 
user.ip, 
contribution.type, 
timestamp, 
commit.id, 
file, 
branch, 
lines.added, 
lines.deleted 

zum Beispiel:

u1,127.0.0.1,add,2015-01-01 00:00,c123456,/path/to/index.html,master,100,0 
u1,127.0.0.1,mod,2015-01-01 00:00,c123456,/path/to/page1.html,master,3,6 
u1,127.0.0.1,del,2015-01-01 00:00,c123456,/path/to/page2.html,master,0,200 
u2,127.0.0.2,mod,2015-01-02 00:00,c654321,/path/to/index.html,master,2,2 
u3,127.0.0.3,add,2015-01-03 00:00,c234567,/path/to/topic.html,topic,300,1 
u4,127.0.0.4,mod,2015-01-04 00:00,c765432,/path/to/topic.html,topic,21,1 

Hinweis, dass Eine Zeile sollte einen Beitrag zu einer Datei darstellen, nicht ein Commit, dh ein Commit kann sich über mehrere Zeilen erstrecken.

Bisher fummle ich mit git log -g --numstat --decorate --source --date=iso --no-merges --all --format=%aE,%h,%ad,%gd herum. Ich nehme an, dass ich die Ausgabe nachbearbeiten muss, um die Infos von --name-status (contribution_type und Datei) und --numstat (lines.added, lines.deleted) in das oben gezeigte Format zusammenzuführen. Auch habe ich noch nicht herausgefunden, wie ich die IP-Adresse bekommen kann - tragen Git Repositories diese Informationen auf, wenn sie einen "Push" erhalten?

Antwort

1

Verwenden Sie die log Funktion und transformieren Sie die Daten wie gewünscht.

Ich bezweifle, dass Sie alle diese Informationen finden - das Feld user.ip macht keinen Sinn, da die Commits nicht unbedingt in einem Netzwerk sind.