1

我正在进入一个新的代码库,目的是让它更稳定。我正在努力确定的是代码中大部分动荡的位置。

我正在寻找一种方法来查找存储库中哪些文件最常被更改,以便我可以提出一些重构的起点。似乎没有内置的 Mercurial 命令,而且 Google 似乎也没有提供太多东西(或者我使用了错误的术语。)

目前想到的只是编写一个脚本,该脚本将解析hg log -v命令中的“文件:”行并手动计算文件。这会奏效,但如果我是第一个必须这样做的人,我会感到非常惊讶。

4

3 回答 3

2

这将做到:

 hg log --template "{files % '{file}\n'}" | sort | uniq -c | sort -rn
     21 templates/base.html
     19 TODO
      8 content/about.rst
      6 static/screen.css

这显示了 21 个 chngesets touch templates/base.html,这是我的大部分小仓库。

于 2013-02-07T15:42:09.520 回答
0

我会建议以相反的方式移动

  1. 获取文件列表
  2. 对于 p.1 中的每个文件,执行类似hg log FILENAME --template "+" | wc -m
于 2013-02-07T15:44:18.343 回答
0

这是一个适用于旧版 Mercurial 安装的版本:

$ hg grep --files-with-matches --all . | cut -d : -f 1 | sort | uniq -c | sort -rn
 21 templates/base.html
 19 TODO
  8 content/about.rst
  6 static/screen.css

如果文件名中有冒号,则还需要添加--print0和更改cut调用。

于 2013-02-08T01:43:25.350 回答