http://python.org/pics/PyBanner057.gif + :viewcvslogo.png

怎么的? --任务提出

任务的由来

工作中管理部门开发的CVS仓库

部门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文件!

  • :historystat.jpg -- 点击展开各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

    • 页面解析效果:
    • :modifiles-snap.jpg

  • 但是如何统计CVS操作的次数?通过对比 CVSROOT/History 记录行数?!
  • 最终发现发现--太麻烦!也不好定制-- 放弃

statcvs-xml 尝试

  • 后来统一在 statcvs-xml 的JAVA分析工具上!

    • 但是依然麻烦!
    • 虽然有完善的图表汇报,但是,只能针对模块进行分析,
    • 而且只能先 生成log 文件再进行分析!然而log 文件,又要在 check out 模块代码后才能够生成!
  • 最后还是在Python 的帮助下自动将各模块的分析页面进行汇总:

history 分析!

  • 最后还是回想交流需求时,提到的原先CVS统计处理是:
    • 每周记录CVSROOT中的 history 文件的行数,对比得到本周的CVS操作次数来估计更新数量!

  • 嗯嗯!当然的有 limodou 的先期尝试:
    • 获得类似的CVS分析成果
    • cvsdelta设计分析

    • 哈哈哈!得来全不费工夫!
    • 根据具体情况加入设置文件的支持组织为/cvsanalyser.py

    • 只要在系统的任何地方可以运行Python脚本,
    • 设置/cvsanalyser.conf 文件就可以自动分析CVS活动了!

  • 说白了,就是:
    • 模拟原先的统计活动,使用Python 来快速实现:
    • 自动的从所有CVS仓库中取出 history 文件
    • 根据时间限定来过滤出有效的操作记录
    • 统计这些记录中的更新次数和文件
    • 组织汇报为XML文件,并根据ViewCVS站点的链接,组合出下载,查阅地址!

文学编程!

  • 以上的源代码,可以看到有很多 的注释!
  •    1 #@+leo-ver=4
       2 #@+node:@file cvsanalyser.py
       3 ...
    

    -- 等等!类似的已经泄露了天机!是 Leo 编辑管理的!

  • LeoEnvironment -- Leo 文学编程环境!


ZoomQuiet [2005-01-05 09:56:01]

怎么来? --实现与部属

如何来实现这样的自动统计?

布署步骤

  1. 安装Python 环境!
    • ViewCVS和自动分析脚本都需要 Python....
    • 还有 elementtree -- Python 中精巧的XML 支持包

  2. 安装 ViewCVS !
    • 因为查阅,下载链接指向的是基于 你CVS的ViewCVS站点链接!
  3. 安装cvsanalyser
    • 就几个文件,可以从CVS 中检出,也可以本地下载:
    • :cvsanalyser-0.1.rar

    • 放置到随便哪个目录,KO!
  4. 设置 cvsanalyser:
    • 就几项:
      1. cvsroot = 你的CVS仓库的系统路径
      2. time = 时间区间,以天为单位
      3. cvs = CVS仓库列表 用空格 划分
      4. viewcvs = 你的CVS的ViewCVS 站点
      5. xml = 想要将统计结果输出到哪个XML文件(此文件应该事先有一个初始文件,以便追加引水结果)
  5. 运行:
    •   #python cvsanalyser.py
    • 一切正常话,看到一些运行反馈后,XML文件就生成好了!
    • 只要 .ico;.css;.xsl 文件和xml 文件在同一目录,直接从浏览器中打开XML 文件就可以看到完善的统计汇报了!
  6. 自动运行:
    • 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") }}}
      • 要指定设置文件的具体路径
  7. 好了!以上!感谢Python 可以令我快速的实现,任何想法!

Todo

  • 进一步参数化脚本,可以在各种系统中正常运行
  • 优化设置文件的读取,不再需要定制脚本本身


ZoomQuiet [2005-01-05 09:56:12]

怎么了? --反馈与交流

也想这样来自动分析你的CVS?那未,设置中有什么问题,请在此讨论

讨论具体应用时的问题

反馈

  • 不错,过程写得非常详细,很有教学意义。收藏之 -- Limodou 2004/01/05
    • 谢谢!就是感觉好东西一定要告诉大家是也乎!
    • ps. 这些MoinMoin 文档也是Leo 组织的是也乎!

    • :leo-moin.jpg

    • 嘿嘿嘿!混出时有报错,大家尝试过 Leo 后应该知道为什么的吧? -- ZoomQuiet



-- ZoomQuiet (2005-01-05)

CvsWeeklyStat (last edited 2009-12-25 07:14:05 by localhost)