-
记录工作中使用Python 解决问题的愉快经历,兼聊组织开发过程, LiterateProgramming 之Leo 应用
怎么的? --任务提出
部门CVS状态
-
部门在调整了项目组后,重新架构了部门的开发环境,处于中心地位的CVS进行了精心安排
-
专门开发了 CVSmana 管理页面来统一快速的安排CVS和对应的用户的SSH 验证密匙
-
以便,可以针对增长的项目快速进行CVS分配!
-
全部运行在 FreeBSD 5.3-RELEASE-p2-DELPHIJ 中的 CVS 1.11.17-FreeBSD
-
当前邮件技术部 各项目组的专用CVS仓库分布
项目组 | 系统目录 | 说明 | |
原先的CVS | /cvs/root/cvsroot | 现在仅仅作为备份,不建议继续在其上进行开发管理 | |
运营维护项目组 | /cvs/root/runmanage | ||
Webmail产品组 | /cvs/root/webmail] | ||
MTA产品组 | /cvs/root/MTA | ||
Interface产品组 | /cvs/root/sinaInterface | ||
Index产品组 | /cvs/root/sinaIndex | ||
测试管理中心 | /cvs/root/scm | ||
强力系统组 | /cvs/root/sinasys |
-
而且通过 CVSup 每周自动同步到专用的备份机器中
-
本来想就仅仅让研发中心可以接触备份的CVS服务器就好的,还是按照原来的工作方式来统计嘛!
-
但是!!!
每周统计需求
-
研发中心,的每周开发活动统计,面对如此多的仓库,手工来分析就痛苦了!
-
经过反复交流,最终确定了周CVS活动统计的指标性数据为:
-
每周总更新文件数目
-
每周总更新修改次数
-
并且要抽查,备份相应文件
-
其中的"更新"指CVS中 文件提交,增加文件,执行tag命令
-
仅仅是确定需求,就花费了不少时间, 中间变换了多种统计辅助方法,但是都是Python 来快速组织实现,并进行运行的!
-
8过!确认后,快速解决为简单的一个汇报XML文件!
-
-- 点击展开各CVS中各模块的更新情况,并有查阅,下载链接!
-- ZoomQuiet [2005-01-05 09:55:53]
怎么样! --四处尝试
如何快速实现这样的自动分析汇报呢?-
照猫画虎!是也乎!哈哈哈!
系统工具尝试
-
开始想通过 FreeBSD 中的 find,awk,sed 什么的功能来自个儿组合一个分析方案
一定时期内被更新的文件
-
反复尝试后得到:
-
# find /path/to/my/CVS -mtime -7 -type f | wc -l | awk '{print $1}'
输出统计数目 -
那未 Python 组织自动分析所有CVS:
-
/modifiles.py -- 执行脚本
-
执行结果: /statcvs.xml
-
页面解析效果:
-
-
但是如何统计CVS操作的次数?通过对比 CVSROOT/History 记录行数?!
-
最终发现发现--太麻烦!也不好定制-- 放弃
statcvs-xml 尝试
-
后来统一在 statcvs-xml 的JAVA分析工具上!
-
但是依然麻烦!
-
虽然有完善的图表汇报,但是,只能针对模块进行分析,
-
StatCvs-XML 0.9.4 代码活动--分析效果
-
而且只能先 生成log 文件再进行分析!然而log 文件,又要在 check out 模块代码后才能够生成!
-
Quickstart -- 应用的说明
-
最后还是在Python 的帮助下自动将各模块的分析页面进行汇总:
-
形成可积累的XML汇报文件
-
虽然,问题没有完全解决,但是解析XML的XSL模板却是个愉快的体验!
-
/weeklystat.py -- 分析脚本
-
/weeklystat.xml -- 记录文档
-
/weeklystat.xsl -- 解析模板
history 分析!
-
最后还是回想交流需求时,提到的原先CVS统计处理是:
-
每周记录CVSROOT中的 history 文件的行数,对比得到本周的CVS操作次数来估计更新数量!
-
嗯嗯!当然的有 limodou 的先期尝试:
-
获得类似的CVS分析成果
-
哈哈哈!得来全不费工夫!
-
根据具体情况加入设置文件的支持组织为/cvsanalyser.py
-
只要在系统的任何地方可以运行Python脚本,
-
设置/cvsanalyser.conf 文件就可以自动分析CVS活动了!
-
说白了,就是:
-
模拟原先的统计活动,使用Python 来快速实现:
-
自动的从所有CVS仓库中取出 history 文件
-
根据时间限定来过滤出有效的操作记录
-
统计这些记录中的更新次数和文件
-
组织汇报为XML文件,并根据ViewCVS站点的链接,组合出下载,查阅地址!
文学编程!
-
以上的源代码,可以看到有很多 的注释!
-
-- 等等!类似的已经泄露了天机!是 Leo 编辑管理的!1 2 3
#@+leo-ver=4 #@+node:@file cvsanalyser.py ...
-
LeoEnvironment -- Leo 文学编程环境!
ZoomQuiet [2005-01-05 09:56:01]
怎么来? --实现与部属
如何来实现这样的自动统计?
布署步骤
-
安装Python 环境!
-
ViewCVS和自动分析脚本都需要 Python....
-
还有 elementtree -- Python 中精巧的XML 支持包
-
安装 ViewCVS !
-
因为查阅,下载链接指向的是基于 你CVS的ViewCVS站点链接!
-
安装cvsanalyser
-
就几个文件,可以从CVS 中检出,也可以本地下载:
-
放置到随便哪个目录,KO!
-
设置 cvsanalyser:
-
就几项:
-
cvsroot = 你的CVS仓库的系统路径
-
time = 时间区间,以天为单位
-
cvs = CVS仓库列表 用空格 划分
-
viewcvs = 你的CVS的ViewCVS 站点
-
xml = 想要将统计结果输出到哪个XML文件(此文件应该事先有一个初始文件,以便追加引水结果)
-
运行:
-
#python cvsanalyser.py
-
一切正常话,看到一些运行反馈后,XML文件就生成好了!
-
只要 .ico;.css;.xsl 文件和xml 文件在同一目录,直接从浏览器中打开XML 文件就可以看到完善的统计汇报了!
-
自动运行:
-
FreeBSD 中当然是 cron 守护,Win32 中也差不多都是计划任务了
-
类似:
# 可以在 /etc/crontab 中追加 # Zoomq 050105 cvsanalyser run 13 5 * * 5 root python cvsanalyser.py # 表示每周三 05:13 执行 python cvsanalyser.py 以root 用户的身份
-- 当然,如果路径不合,需要使用绝对路径! -
反正都是一样的运行命令
-
不过,提醒的是:
-
cvsanalyser.py 中,有一行现在还需要设置:
-
# 必须正确指定配置文件路径在此 self.cfg.read("/home/zoomq/share/statcvs/cvsanalyser.conf")
-
要指定设置文件的具体路径
-
好了!以上!感谢Python 可以令我快速的实现,任何想法!
Todo
-
进一步参数化脚本,可以在各种系统中正常运行
-
优化设置文件的读取,不再需要定制脚本本身
ZoomQuiet [2005-01-05 09:56:12]
怎么了? --反馈与交流
也想这样来自动分析你的CVS?那未,设置中有什么问题,请在此讨论-- ZoomQuiet (2005-01-05)