2012-06-18 44 views
10

我們在Mercurial中有2,000,000行代碼應用程序。很顯然,這個倉庫中有很多有價值的信息。什麼工具或技術可用於「數據庫」我的mercurial存儲庫?

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

例如,在項目的歷史上,哪五個文件發生了最大的變化?五個文件與一年前的文件最爲不同?任何特定的代碼行看到了很多流失?

我對這種事情很感興趣。

有沒有辦法從我們的倉庫中提取這種信息?

+2

這不是真的[標籤:數據挖掘]。您正在尋求StatSVN/StatCVS爲其他版本控制系統提供的簡單,直接的統計數據。另外,這不是一個編程問題。 –

+2

好吧,夠公平的。那麼如何從mercurial獲得這些微不足道的統計數據呢? –

+0

尼克,你有沒有發現任何有用的東西,而不必滾動你自己的? – Rory

回答

10

我不知道任何專門爲此做的工具,但Mercurial的日誌模板對於從系統中獲取數據非常有用。我做了一下這種在過去的分析中,我的做法是:

  1. 使用hg log轉儲提交一些方便的格式(在我的情況,XML)
  2. 寫一個腳本導入

    mystyle.txt::(模板)

    XML到的東西可查詢

下面是一個例子hg log命令,讓你去(數據庫,或只是從XML直接,如果它不是太大工作)使用模板和日期範圍

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

(可能要設置別名,如果你發現你正在使用的命令往往不夠)