如何在Mercurial存储库中找到频繁更改的文件?
我跳进了一个新的代码库,目的是使它更稳定。但我很难确定代码中大部分湍流的位置 我正在寻找一种方法,可以找到存储库中哪些文件最常被更改,这样我就可以为一些重构找到一个起点。似乎没有一个内置的Mercurial命令来实现这一点,谷歌似乎也没有什么可以提供的(或者我使用了错误的术语) 目前,我想到的只是编写一个脚本,解析如何在Mercurial存储库中找到频繁更改的文件?,mercurial,refactoring,Mercurial,Refactoring,我跳进了一个新的代码库,目的是使它更稳定。但我很难确定代码中大部分湍流的位置 我正在寻找一种方法,可以找到存储库中哪些文件最常被更改,这样我就可以为一些重构找到一个起点。似乎没有一个内置的Mercurial命令来实现这一点,谷歌似乎也没有什么可以提供的(或者我使用了错误的术语) 目前,我想到的只是编写一个脚本,解析hglog-v命令中的“files:”行,并手动计算文件数。这会起作用,但如果我是第一个不得不这么做的人,我会感到非常惊讶。这样就可以了: hg log --template "{f
hglog-v
命令中的“files:”行,并手动计算文件数。这会起作用,但如果我是第一个不得不这么做的人,我会感到非常惊讶。这样就可以了:
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
,这是我的大部分微型repo。我建议以相反的方式移动
hglogfilename--template“+”|wc-m
以下是一个适用于较旧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
调用。模板仅适用于较新的Mercurial。我很想知道您使用的Mercurial版本是什么,在哪个操作系统上运行?是的,我正在运行2.5。我将加入一个适用于较旧Mercurial的soln。我选择这个作为正确答案,因为虽然它目前只适用于最近更新的Mercurial安装,但随着时间的推移,它更可能适用于其他人更新Mercurial安装。hg locate
将比grep更简单,具有相同的结果。或者hg manifest
(在这两种情况下都没有剪切),我认为使用locate
您必须手动循环所有修订,因为它缺少--all
,而使用manifest
时,--all
选项会消除文件的重复,这样您就不会得到每个文件出现的修订数量的计数。您是否可以显示locate
或manifest
解决方案,以统计更改集最多时修改的文件数?