CVS中的文件流失

时间:2012-05-18 19:15:18

标签: file cvs

我希望找到每个文件在cvs存储库中特定分支上发生更改的次数。我特别想找到所有变化最大的文件。 “前40名”名单就足够了。

1 个答案:

答案 0 :(得分:0)

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

在这种情况下,分支机构已经使用了大约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 status"中的每一行输出如:

Working revision: 1.2.34

gawk命令将其更改为:

./path/file.c Working revision: 1.2.34        churn:34

然后我就可以排序":34"。

这很有效,但它很粗糙。我希望其他人可以用更好的方法回答。

我在其他一些问题中看到过,例如:Free CVS reporting tools人们提到过statCVS。这听起来很有趣(超过我的需要,但其他一些信息也可能有用)。但是,它说它只适用于"默认"科。文档有点不清楚 - 我可以设置为感兴趣的分支,并将其用于此吗?