獲取 svn 中某個 Author 的全部文件列表

給 chongqingdaxue 上了繳費平臺後, 後期維護主要是由我在負責, 票據打印是一個exe, 更新時, 直接替換exe就能夠了; 支付平臺是一個jsp項目,不能每次改兩個文件就要把整個項目覆蓋一遍, 這樣遠程使用 ssh 更新太慢了, 因此只能將更新了的幾個文件覆蓋上去.html

若是是本身改的幾個文件, 就確定記得是改了哪些的, 但是若是這個功能是由別人改的, 並且改了好幾個文件, 那麼該如何從 svn 方便的找出全部這我的改過的文件呢?java

下面記錄從最開始有想法到最後實現這功能的整個過程(只想要結果的, 直接查看 7 便可):api

1. eclipse 裝了 svn 插件後, 能看到每一個文件後面都列出這個文件的最後更新時間, 更新人app

   clip_image001_thumb 

就想確定有地方記錄了這些文件的信息.eclipse

 

2. 分析源碼目錄下的 .svn 裏的文件, 一開始並沒有發現有記錄各個文件 author 的地方.ssh

裏面的文件很簡單, .svn 文件夾裏就這麼幾個文件, 文件內容也很簡單.jsp

image_thumb

 

3. 因而就懷疑會不會是 subclipse 插件在每次啓動後鏈接 svn, 聯網獲取相關信息. svn

斷網, 重啓 eclipse, 發現仍能列出文件的 author 及最後更新時間, 那麼就有多是記錄在 subclipse 插件本身的路徑下了, 下一步就是要搜索 subclipse 插件的目錄了 ,可是在 subclipse 目錄下找了半天, 也沒發現何與項目有關的東東.spa

 

4. 實在沒轍了, 就想既然是開源的, 那去找 subclipse 的源碼來看看吧.net

在網上找到 subclipse 項目的源碼: openlogic-eclipseplugin-subclipse-1.6.13-all-src-1

把項目導入到 eclipse , 沒找到文檔, 只好直接從源碼下手, 先是想找文件名包含 author 的文件(Ctrl+Shift+R), 可是沒找到, 估計不會把功能拆的這麼細, 那就應該會是在包含 state, status, info 這一些名字的類裏, 果真, 找到一個名字爲 Status.java 的文件, 打開, 看到裏面有

private String lastCommitAuthor;

估計這就是要找的文件了.

可是看了好久也沒看出個因此然來, java 水平通常的人傷不起啊^_^

最後仍是決定從 svn 下手, svn 有沒有提供相應命令.

 

5. svn repository broswer 裏也能看到 Author 及最後更新時間

 clip_image003_thumb1

若是本身從頭寫程序, 調用 svn 提供的 api, 自行鏈接 svn repository, 而後獲取指定項目下全部文件信息, 可是這樣要去看 svn 相關 api, 登陸時的驗證估計也須要費一番工夫, 因此最好是能將本地的信息獲取出來. (分析3已經肯定了信息確定是存在本地的了)


6. 再去分析 .svn 裏的文件, 發現 entries 裏面應該記錄了相關信息

image_thumb4

但是這個並非 xml 格式記錄的, 裏面應該有二進制內容的. 網上找了一下, 說這個 entries 一開始是 xml 格式存放的, 後來 svn 發展穩定後, 爲了追求更高的讀寫速度, 就換成這種二進制形式了; 若是能找到這個文件的讀寫格式, 那麼遍歷項目裏全部 entries 文件, 確定也能分析出指定 Author 的全部文件, 但是網上找了半天, 也沒能查到相關的格式文檔.


7. 後來又想, 我是否是被各類圖形化界面給束縛了, 沒準 svn 自己提供了相應的命令呢, 因而網上找了個使用手冊, 狂看一番, 果真有收穫
   http://svndoc.iusesvn.com/svnbook/1.4/svn.tour.cycle.html#svn.tour.cycle.examine.status

在項目下輸入 svn status –v 能夠查看這個項目的狀態信息. 有如下信息出來後, 就不會錯了, 實在不行, 就直接文本分析這列表就能夠了.

clip_image002_thumb1

使用命令 svn status -v > e:\status.txt 將結果輸出到文本文件.

往下一步, 只要使用管道將包含 ZXF 做者名的文列出來便可

svn status -v | find "ZXF" > e:\status.txt


8. 若是在 cmd 上輸入 svn , 提示無此命令, 那麼多半是由於只安裝了 TortoiseSVN, 按 如下文章下載 Setup-Subversion-1.6.16.msi 後能夠使用 svn 命令了.

   Windows 上沒法使用 svn 等命令的解決方法

 

9. 能夠看到, 最終的解決方法很簡單, 只須要一條命令便可, 而我前面折騰了那麼久, 甚至連 subclipse 的源碼都下載下來了, 還好繞了一大圈最後仍是繞回到使用命令行來解決. 仍是那句話, 會者不難.



環境: Windows7+Subversion1.6

 

==================================================================

看到 oschina 推薦的文章《SVN經常使用命令》, 還不錯, 補個連接:

http://my.oschina.net/flynewton/blog/9047

相關文章
相關標籤/搜索