File CVS中的文件搅动

File CVS中的文件搅动,file,cvs,File,Cvs,我正在查找cvs存储库中某个特定分支上每个文件的更改次数。我特别寻找所有变化最大的文件。“前40名”列表就足够了。这是作为原始询问者的编辑添加的,我已将其转换为社区wiki答案,因为它应该是答案,而不是编辑 在这种情况下,分支已使用约6个月。如果我设置为该分支中的最新版本(“cvs-z9 co-r r80m-1…”),那么最后一次修订的版本号似乎就是当前分支中的更改数量——如果文件在过去180天内发生了更改,那么它就位于该分支上。我正在使用linux,所以我最终是这样做的: for file i

我正在查找cvs存储库中某个特定分支上每个文件的更改次数。我特别寻找所有变化最大的文件。“前40名”列表就足够了。

这是作为原始询问者的编辑添加的,我已将其转换为社区wiki答案,因为它应该是答案,而不是编辑

在这种情况下,分支已使用约6个月。如果我设置为该分支中的最新版本(“cvs-z9 co-r r80m-1…”),那么最后一次修订的版本号似乎就是当前分支中的更改数量——如果文件在过去180天内发生了更改,那么它就位于该分支上。我正在使用linux,所以我最终是这样做的:

for file in `find . \! \( -name CVS -prune \) -type f -mtime -180`
do
   cvs status "$file" | grep Working.revision | gawk -v FNAME=$file '{ print FNAME gensub(/(\.)([0-9]*)$/, "\\1\\2 churn:\\2  ", 1) }' >> cvs_churn.txt
done
sort -k3 -t: -n cvs_churn.txt | uniq
因此,对于“cvs状态”输出中的每一行,如下所示:

Working revision: 1.2.34
gawk命令将其更改为:

./path/file.c Working revision: 1.2.34        churn:34
然后我可以按“:34”排序


这是可行的,但相当粗糙。我希望其他人能够用更好的方法来回答

我在其他一些问题中也看到了,例如:人们提到了STATCV。这听起来很有趣(比我需要的更多,但其他一些信息也可能有用)。然而,它说它只在“默认”分支上起作用。文档有点不清楚--我可以设置为感兴趣的分支,并将其用于此目的吗