2012-06-18 5 views
10

У нас есть 2 000 000 строк кода приложения в Mercurial. Очевидно, что в этом репозитории много ценных данных.Какие инструменты или методы доступны для «datamine» моего ртутного хранилища?

Есть ли какие-либо инструменты или методы для извлечения некоторой информации?

Например, в течение истории проекта, какие пять файлов видели больше всего изменений? Какие пять файлов отличаются от того, что было год назад? Какие-то конкретные строки кода видели много оттока?

Меня интересуют такие вещи и многое другое.

Есть ли способ извлечь этот вид информации из нашего хранилища?

+2

Это не совсем [тег: data-mining]. Вы запрашиваете тривиальную прямую статистику, как это предусмотрено StatSVN/StatCVS для других систем контроля версий. Кроме того, это не вопрос программирования. –

+2

Хорошо, справедливо. Итак, как мне получить эту тривиальную статистику из ртути? –

+0

Ник, вы нашли что-нибудь полезное, не имея собственного рулона? – Rory

ответ

10

Я не знаю каких-либо инструментов, специально предназначенных для этого, но шаблоны журналов Mercurial очень эффективны для получения данных из системы. Я сделал немного такого рода анализ в прошлом, и мой подход:

  1. Использования hg log сваливать фиксации в какой-то удобный формат XML (в моем случае)
  2. Написать скрипт, чтобы импортировать XML в нечто Queryable (база данных, или просто работать с XML напрямую, если это не слишком большой)

Вот пример команды hg log, чтобы ты:

mystyle.txt: (шаблон)

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' 

Пример вызова с использованием шаблона и диапазон дат:

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

Попробуйте встроенный hg churn расширения. Одна вещь, которую я хотел бы использовать его для, например, чтобы увидеть ежемесячный гистограмму фиксаций так:

> 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 ************ 

(может потребоваться настроить псевдонимы, если вы обнаружите, что вы с помощью команды достаточно часто)

Смежные вопросы