2012-06-18 12 views
10

Tenemos una aplicación de código de 2,000,000 líneas en Mercurial. Obviamente, hay mucha información valiosa dentro de este repositorio.¿Qué herramientas o técnicas están disponibles para "importar" mi depósito mercurial?

¿Hay alguna herramienta o técnica para extraer algo de esa información?

Por ejemplo, a lo largo de la historia del proyecto, ¿qué cinco archivos han tenido más cambios? ¿Qué cinco archivos son los más diferentes de lo que eran hace un año? ¿Alguna línea particular de código ha visto mucha agitación?

Me interesa ese tipo de cosas y más.

¿Hay alguna manera de extraer este tipo de información de nuestro repositorio?

+2

Esto no es realmente [tag: data-mining]. Está solicitando estadísticas triviales y sencillas, como las provistas por StatSVN/StatCVS para otros sistemas de control de versiones. Además, esta no es una pregunta de programación. –

+2

De acuerdo, es suficiente. Entonces, ¿cómo puedo sacar estas estadísticas triviales de Mercurial? –

+0

Nick, ¿encontraste algo útil sin tener que tirar por ti mismo? – Rory

Respuesta

10

No conozco ninguna herramienta específicamente hecha para esto, pero las plantillas de registro de Mercurial son muy poderosas para sacar datos del sistema. He hecho un poco de este tipo de análisis en el pasado, y mi enfoque era:

  1. Uso hg log para volcar compromete a un formato conveniente (xml en mi caso)
  2. escribir un script para importar el xml en algo consultable (base de datos, o simplemente trabajar desde el XML directamente si no es demasiado grande)

Aquí está un ejemplo del comando hg log para que te va:

mystyle.txt: (plantilla)

changeset = '<changeset>\n<user>{author|user}</user>\n<date>{date|rfc3339date|escape}</date>\n<files>\n{file_mods}{file_adds}{file_dels}</files>\n<rev>{node}</rev>\n<desc>{desc|strip|escape}</desc>\n<branch>{branches}</branch><diffstat>{diffstat}</diffstat></changeset>\n\n' 
file_mod = '<file action="modified">{file_mod|escape}</file>\n' 
file_add = '<file action="added">{file_add|escape}</file>\n' 
file_del = '<file action="deleted">{file_del|escape}</file>\n' 

Ejemplo invocación usando la plantilla e intervalo de fechas:

hg --repository /path/to/repo log -d "2012-01-01 to 2012-06-01" --no-merges --style mystyle.txt 
4

Pruebe la incorporada en hg churn extensión. Una cosa que me gusta usarlo para, por ejemplo, es para ver un gráfico de barras mensual de confirmaciones de esta manera:

> hg churn -csf '%Y-%m' 

2014-02  65 ************************************* 
2014-03  22 ************* 
2014-04  52 ****************************** 
2014-05  67 *************************************** 
2014-06  31 ****************** 
2014-07  29 ***************** 
2014-08  29 ***************** 
2014-09  61 *********************************** 
2014-10  36 ********************* 
2014-11  23 ************* 
2014-12  32 ****************** 
2015-01  60 *********************************** 
2015-02  20 ************ 

(puede ser que desee configurar alias si encuentra que está utilizando el comando con la suficiente frecuencia)

Cuestiones relacionadas