如何在Mercurial存储库中找到经常更改的文件?

时间:2013-02-07 14:50:51

标签: mercurial refactoring

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

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

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

3 个答案:

答案 0 :(得分: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触及templates/base.html,这是我最小的回购。

答案 1 :(得分:0)

我建议以相反的方式行动

  1. 获取文件列表
  2. 对于p.1中的每个文件执行hg log FILENAME --template "+" | wc -m
  3. 之类的操作

答案 2 :(得分: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调用。