问题 有什么工具或技术可用于“数据化”我的mercurial存储库?


我们在Mercurial中有2,000,000行代码应用程序。显然,这个存储库中有很多有价值的信息。

是否有任何工具或技术可以挖掘出一些信息?

例如,在项目的历史中,五个文件发生了哪些变化?五个档案与一年前最不同的是什么?任何特定的代码行看到了很多流失?

我对这类事情感兴趣。

有没有办法从我们的存储库中提取这种信息?


7047
2018-06-18 15:04


起源

这不是真的 数据挖掘。您要求StatSVN / StatCVS为其他版本控制系统提供简单,直接的统计数据。另外,这不是一个编程问题。 - Anony-Mousse
好的,公平的。那么如何才能从这些琐碎的统计数据中获得这些微不足道的统计数据? - Nick Hodges
尼克,你有没有找到任何有用的东西,而不必自己滚动? - Rory


答案:


我不知道有任何专门为此做的工具,但Mercurial的日志模板非常强大,可以将数据从系统中取出。我过去做过一些这样的分析,我的方法是:

  1. 使用 hg log 转换提交到一些方便的格式(在我的情况下为xml)
  2. 编写一个脚本将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

10
2018-06-18 16:27





试试内置的 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 ************

(如果你发现你经常使用命令,可能想设置别名)


5
2018-02-01 11:08