2008-11-16 11 views
5

Dadas 2 revisiones de archivos Deseo saber cuántas líneas se agregaron/modificaron/eliminaron. Quiero tener esta información para todo el repositorio de miles de archivos. favor que me señale un guión o una herramienta como yo soy muy novato SVN total deCómo determinar las estadísticas de cambio entre las revisiones

estoy trabajando en ventanas

Salida de ejemplo

del archivo ~ NewRevision ~ OldRevision ~ añadió ~ Modificado ~ eliminados

Archivo1.C# ~ 11 ~ # 10 ~ 1 ~ 2 ~ 0

Archivo1.c ~ ~ # 2 # 1 ~ 2 ~ 2 ~ 0

Respuesta

4

Subversion tiene una muy buena herramienta de diferencias integ clasificado dentro de él. Me gustaría utilizar un comando como:

svn diff -rOldRevision:NewRevision URL 

donde URL es la dirección URL de su repositorio (por ejemplo, http://www.mycode.org/svn/trunk). Esto no formateará la salida de diff en la forma que está buscando, pero mostrará cómo se ha cambiado cada archivo entre los dos números de revisión.

Para su formateo, puede usar un grep para contar cuántas adiciones y restas ocurren en cada archivo.

Espero que esto ayude!

2

SVN (o cualquier herramienta similar) no distingue entre una línea modificada y una línea que fue eliminada y reemplazada por otra cosa. Dicho esto, sin embargo, su mejor opción sería obtener un diff (como dijo jordan002) y luego buscar líneas que comiencen con + o -. Para cada -, se borró una línea, por cada +, se agregó una línea (puede hacer que svn ignore el espacio en blanco en el diff con svn diff --diff-cmd diff -x -w -x -u -rOldRev:NewRev en un sistema con Unix diff instalado). Entonces, puedes compararlos. El diff unificado se organizará en trozos (diferentes partes del archivo que se cambiaron) separados por líneas que comienzan con @@, y usted podría, por cada trozo, decir que la menor cantidad de líneas eliminadas y agregadas fue el número de líneas cambiadas, y para cada línea agregada más que eliminada en un trozo, se agregó una línea, y para cada línea eliminada más de lo agregado en un trozo, se eliminó una línea. No es perfecto, pero es relativamente bueno para su evaluación.

Una nota más: si está utilizando esto para evaluar a los programadores, tenga cuidado. LOC no es un buen método para medir la eficacia relativa.

+0

¿Le importaría a alguien escribir una de las respuestas anteriores para mí? Tengo que obtener los datos de al menos 100 archivos. [Por favor, indique si debo anunciar esto como una tarea paga] –

1

También traté de resolver tareas como "cuántas líneas se eliminaron, se agregaron o simplemente se cambiaron en el período de tiempo seleccionado". Así que escribí un simple script de shell (solo para Linux). Recopila algunas estadísticas sipmle sobre modificaciones de código. Más detalles y la escritura compartida que puede encontrar aquí:

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

esperanza de que ayudará a usted y a los demás!

Cuestiones relacionadas