Какие инструменты или методы доступны для "datamine" моего ртутного хранилища?

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

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

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

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

Есть ли способ извлечь такую ​​информацию из нашего репозитория?

Ответ 1

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

  • Использовать hg log для сбрасывания, фиксирует какой-либо удобный формат (xml в моем случае)
  • Напишите script, чтобы импортировать xml в нечто запрошенное (базу данных или просто работать с 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

Ответ 2

Попробуйте встроенное расширение 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 ************

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