我希望找到每个文件在cvs存储库中特定分支上发生更改的次数。我特别想找到所有变化最大的文件。 “前40名”名单就足够了。
答案 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。这听起来很有趣(超过我的需要,但其他一些信息也可能有用)。但是,它说它只适用于"默认"科。文档有点不清楚 - 我可以设置为感兴趣的分支,并将其用于此吗?