使用ant从版本控制器上取得特定日期的文件-(task vssget和selector date的使用)

今天接到一个小任务,要求把项目组最近三个月(10,11,12),所有修改过的文件的代码行数统计出来。
代码行数统计的工具已经有了,唯一需要的就是要把哪些文件是在这段特定的时间内修改过的,统计出来。

简单的试操作了一下,要找到哪些文件在这个时间段内修改过,估计就必须检查每一个文件的history了。
这么多的文件,算是一个很费劲的活了。

不过考虑到这个任务的精度要求不高,而且时间是最近的三个月内。
现在也只是刚刚多过了几天而已,在这段时间内,项目组修改的代码很少。

所以考虑取到所有的代码,并且取得的时候按照最后更新的日期取得,然后把最后修改时间不在这段时间内的文件删除,剩下的文件就是我要的文件,用代码统计工具统计一把,数据就有了。

按照这个思路操作,考虑了两种方法。
一种是手动操作,使用vss客户端获取代码,然后直接在操作系统上把所有的文件按照搜索的方式列出来,再按照日期排序,把之前和之后的文件都删掉就行。

下图就是vss的"get Latest Version"的窗口,只要的Set file的地方选择Modification就可以使取得的文件是最后cin的日期,否则就会是当前日期了。


第二种是写点代码实现。我这次选择了ant,好久不用,权当练练手好了。
先写一个获取代码的target,一定要添加属性filetimestamp = "modified"

  1. < target   name = "getSource" >
  2.      < delete   dir = "${local.src.dir}" />
  3.      < vssget   localPath = "${local.src.dir}"  
  4.          serverPath = "${vss.serverPath.dir}"
  5.          ssdir = "${vss.executable.dir}"  
  6.          recursive = "true"
  7.          login = "${vss.username},${vss.password}"  
  8.          vsspath = "${bundle.vss.path}"
  9.          filetimestamp = "modified" />
  10. </ target >

再写一个删除特定日期的文件的target,这回使用到了selector date。

  1. < target   name = "delFile"   depends = ""   description = "--> description" >
  2.         
  3.      < delete >
  4.          < fileset   dir = "${local.src.dir}" >
  5.              < or >
  6.                  < date   when = "before"   datetime = "2008/09/30 23:59:59"   pattern = "yyyy/MM/dd HH:mm:ss" />
  7.                 < date   when = "after"   datetime = "2008/12/31 23:59:59"   pattern = "yyyy/MM/dd HH:mm:ss" />
  8.             </ or >                
  9.          </ fileset >
  10.      </ delete >
  11. </ target >


写完了,一执行,获取一下代码。
然后再把代码统计工具加到build文件中一执行就OK了。

参考:
ant官方手册:http://ant.apache.org/manual/index.html
selector date的说明:http://ant.apache.org/manual/CoreTypes/selectors.html#dateselect
vss相关ant task的说明:http://ant.apache.org/manual/OptionalTasks/vss.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值