Какие инструменты или методы доступны для "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 ************
(может потребоваться настроить псевдонимы, если вы обнаружите, что часто используете команду)