我正在寻找可以显示提交 svn 修改文件的频率的东西。我希望能够查看哪些文件经常更改以及更改频率。最好还应按目录对“报告”进行分组,以便能够查看每个项目的更改频率。
哪个工具提供了这样的能力?
(如果这很重要 - 我也在使用 maven 和语言 ism 主要是 java)
在 Subversion 中没有执行此操作的标准工具。但是,我可以看到一种可能的方法,但可能需要一段时间。
首先,您需要生成存储库中所有文件的列表。这应该这样做:
$ svn ls -R $REPO
然后您可以将其用作输入并以某种方式从每个文件生成报告:
$ svn ls -R $REPO | while read $file
do
here be dragons
done
我们需要删除文件(现在特定于 BASH 和 Kornshell):
$ svn ls -R $REPO | while read $file
do
[[ $file == */ ]] && continue
here be dragons
done
然后,我们需要弄清楚如何计算所有的变化。svn log
应该做的。如果我们计算所有仅由破折号组成的行,那应该给我们一个计数:
$ svn ls -R $REPO | while read $file
do
[[ $file == */ ]] && continue
count=$(svn log $REPO/$file | grep "^--*$" | wc -l)
echo "$REPO/$file: $count"
done
这有几个问题:
这是一个开始。您可以-r
通过svn log
. 如果大多数修订来自两年前,您可能不在乎文件是否有很多修订。而且,这可能是 shell 脚本的限制。逻辑可以移植到 Python 或 Perl 并在那里完成更多工作。
虽然有 SVN 内部命令可以生成报告,但我建议尝试使用 Atlassian 的 FishEye 工具。它是一个付费工具,但提供了广泛的详细信息,例如特定用户提交了多少文件,哪个文件提交了多少次,还提供了图形格式的报告。
"while read $file" 行中不应该有 $,例如它应该是 "while read file"。否则它工作正常!