我们在 Mercurial 中有一个 2,000,000 行的代码应用程序。显然,这个存储库中有很多有价值的信息。
是否有任何工具或技术可以挖掘其中的一些信息?
例如,在项目的历史中,哪五个文件的变化最大?哪五个文件与一年前最不一样?是否有任何特定的代码行出现大量流失?
我对这类事情甚至更多感兴趣。
有没有办法从我们的存储库中提取这种信息?
我们在 Mercurial 中有一个 2,000,000 行的代码应用程序。显然,这个存储库中有很多有价值的信息。
是否有任何工具或技术可以挖掘其中的一些信息?
例如,在项目的历史中,哪五个文件的变化最大?哪五个文件与一年前最不一样?是否有任何特定的代码行出现大量流失?
我对这类事情甚至更多感兴趣。
有没有办法从我们的存储库中提取这种信息?
我不知道有什么专门为此而设计的工具,但是 Mercurial 的日志模板对于从系统中获取数据非常强大。我过去做过一些此类分析,我的方法是:
hg log
将提交转储为某种方便的格式(在我的情况下为 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
试试内置的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 ************
(如果您发现自己经常使用该命令,可能需要设置别名)