使用ant從版本控制器上取得特定日期的檔案-(task vssget和selector date的使用)
阿新 • • 發佈:2019-02-14
今天接到一個小任務,要求把專案組最近三個月(10,11,12),所有修改過的檔案的程式碼行數統計出來。
程式碼行數統計的工具已經有了,唯一需要的就是要把哪些檔案是在這段特定的時間內修改過的,統計出來。
簡單的試操作了一下,要找到哪些檔案在這個時間段內修改過,估計就必須檢查每一個檔案的history了。
這麼多的檔案,算是一個很費勁的活了。
不過考慮到這個任務的精度要求不高,而且時間是最近的三個月內。
現在也只是剛剛多過了幾天而已,在這段時間內,專案組修改的程式碼很少。
所以考慮取到所有的程式碼,並且取得的時候按照最後更新的日期取得,然後把最後修改時間不在這段時間內的檔案刪除,剩下的檔案就是我要的檔案,用程式碼統計工具統計一把,資料就有了。
按照這個思路操作,考慮了兩種方法。
一種是手動操作,使用vss客戶端獲取程式碼,然後直接在作業系統上把所有的檔案按照搜尋的方式列出來,再按照日期排序,把之前和之後的檔案都刪掉就行。
下圖就是vss的"get Latest Version"的視窗,只要的Set file的地方選擇Modification就可以使取得的檔案是最後cin的日期,否則就會是當前日期了。
第二種是寫點程式碼實現。我這次選擇了ant,好久不用,權當練練手好了。
先寫一個獲取程式碼的target,一定要新增屬性filetimestamp = "modified" 。
- < target name = "getSource" >
- < delete dir = "${local.src.dir}" />
- < vssget localPath = "${local.src.dir}"
- serverPath = "${vss.serverPath.dir}"
-
ssdir
- recursive = "true"
- login = "${vss.username},${vss.password}"
- vsspath = "${bundle.vss.path}"
- filetimestamp = "modified" />
- </ target >
再寫一個刪除特定日期的檔案的target,這回使用到了selector date。
- <
target
name
=
"delFile"
depends
=
""
- < delete >
- < fileset dir = "${local.src.dir}" >
- < or >
- < date when = "before" datetime = "2008/09/30 23:59:59" pattern = "yyyy/MM/dd HH:mm:ss" />
- < date when = "after" datetime = "2008/12/31 23:59:59" pattern = "yyyy/MM/dd HH:mm:ss" />
- </ or >
- </ fileset >
- </ delete >
- </ target >