Frage So ermitteln Sie Änderungsstatistiken zwischen Revisionen


Bei zwei Dateiversionen möchte ich wissen, wie viele Zeilen hinzugefügt / geändert / gelöscht wurden. Ich möchte diese Informationen für das gesamte Repository von tausend Dateien haben. Bitte zeigen Sie mir ein Skript oder ein Tool, da ich ein totaler SVN-Neuling bin

Ich arbeite an Windows

Beispielausgabe

Datei ~ NewRevision ~ OldRevision ~ Hinzugefügt ~ Modifiziert ~ Gelöscht

file1.c ~ # 11 ~ # 10 ~ 1 ~ 2 ~ 0

file1.c ~ # 2 ~ # 1 ~ 2 ~ 2 ~ 0


5
2017-11-16 18:38


Ursprung


Antworten:


Subversion hat ein sehr schönes Diff-Tool integriert. Ich würde einen Befehl verwenden wie:

svn diff -rOldRevision:NewRevision URL

Dabei ist URL die URL Ihres Repositorys (z. B. http://www.mycode.org/svn/trunk). Dadurch wird die Diff-Ausgabe nicht in der Form formatiert, nach der Sie suchen, sondern es wird angezeigt, wie jede Datei zwischen den beiden Revisionsnummern geändert wurde.

Für Ihre Formatierung können Sie mit grep zählen, wie viele Additionen und Subtraktionen in jeder Datei vorkommen.

Hoffe das hilft!


4
2017-11-16 18:59



SVN (oder ein ähnliches Werkzeug) unterscheidet nicht zwischen einer modifizierten Zeile und einer Zeile, die gelöscht und durch etwas anderes ersetzt wurde. Das heißt, Ihre beste Wette wäre jedoch, ein Diff zu erhalten (wie jordan002 sagte) und dann nach Zeilen zu suchen, die mit + oder - beginnen. Für jedes - wurde eine Zeile gelöscht, für jedes + wurde eine Zeile hinzugefügt (Sie können dafür sorgen, dass svn Whitespace im Diff ignoriert) svn diff --diff-cmd diff -x -w -x -u -rOldRev:NewRev auf einem System mit Unix-Diff installiert). Dann können Sie sie vergleichen. Das vereinheitlichte diff wird in hunks organisiert (verschiedene Teile der Datei, die geändert wurden), getrennt durch Zeilen beginnend mit @@, und Sie könnten für jedes Stück sagen, dass die kleinere der gelöschten und hinzugefügten Zeilen die Anzahl der geänderten Zeilen war. und für jede hinzugefügte Zeile, die in einem Brocken mehr als entfernt wurde, wurde eine Zeile hinzugefügt, und für jede entfernte Zeile, die in einem Brocken mehr als hinzugefügt wurde, wurde eine Zeile gelöscht. Nicht perfekt, aber relativ gut für Ihre Einschätzung.

Eine weitere Anmerkung: Wenn Sie dies verwenden, um Programmierer zu bewerten, seien Sie vorsichtig. LOC ist keine großartige Methode, um die relative Effektivität zu messen.


2
2017-11-16 19:12



Ich habe auch versucht, eine Aufgabe wie "wie viele Zeilen wurden entfernt, hinzugefügt oder nur in ausgewählten Zeitraum geändert" zu lösen. Also habe ich ein einfaches Shell-Skript geschrieben (nur für Linux). Es sammelt einige kleine Statistiken über Codeänderungen. Weitere Details und ein gemeinsames Skript finden Sie hier:

http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html

Hoffe, es wird dir und anderen helfen!


1
2017-10-22 14:10