给 chongqingdaxue 上了缴费平台后, 后期维护主要是由我在负责, 票据打印是一个exe, 更新时, 直接替换exe就能够了; 支付平台是一个jsp项目,不能每次改两个文件就要把整个项目覆盖一遍, 这样远程使用 ssh 更新太慢了, 因此只能将更新了的几个文件覆盖上去.html
若是是本身改的几个文件, 就确定记得是改了哪些的, 但是若是这个功能是由别人改的, 并且改了好几个文件, 那么该如何从 svn 方便的找出全部这我的改过的文件呢?java
下面记录从最开始有想法到最后实现这功能的整个过程(只想要结果的, 直接查看 7 便可):api
1. eclipse 装了 svn 插件后, 能看到每一个文件后面都列出这个文件的最后更新时间, 更新人app
我就想确定有地方记录了这些文件的信息.eclipse
2. 分析源码目录下的 .svn 里的文件, 一开始并没有发现有记录各个文件 author 的地方.ssh
里面的文件很简单, .svn 文件夹里就这么几个文件, 文件内容也很简单.jsp
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 及最后更新时间
若是本身从头写程序, 调用 svn 提供的 api, 自行链接 svn repository, 而后获取指定项目下全部文件信息, 可是这样要去看 svn 相关 api, 登陆时的验证估计也须要费一番工夫, 因此最好是能将本地的信息获取出来. (分析3已经肯定了信息确定是存在本地的了)
6. 再去分析 .svn 里的文件, 发现 entries 里面应该记录了相关信息
但是这个并非 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 能够查看这个项目的状态信息. 有如下信息出来后, 就不会错了, 实在不行, 就直接文本分析这列表就能够了.
使用命令 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 命令了.
9. 能够看到, 最终的解决方法很简单, 只须要一条命令便可, 而我前面折腾了那么久, 甚至连 subclipse 的源码都下载下来了, 还好绕了一大圈最后仍是绕回到使用命令行来解决. 仍是那句话, 会者不难.
环境: Windows7+Subversion1.6
==================================================================
看到 oschina 推荐的文章《SVN经常使用命令》, 还不错, 补个连接: