获取 svn 中某个 Author 的所有文件列表

给 chongqingdaxue 上了缴费平台后, 后期维护主要是由我在负责, 票据打印是一个exe, 更新时, 直接替换exe就可以了; 支付平台是一个jsp项目,不能每次改两个文件就要把整个项目覆盖一遍, 这样远程使用 ssh 更新太慢了, 所以只能将更新了的几个文件覆盖上去.

如果是自己改的几个文件, 就肯定记得是改了哪些的, 可是如果这个功能是由别人改的, 而且改了好几个文件, 那么该如何从 svn 方便的找出所有这个人改过的文件呢?

下面记录从最开始有想法到最后实现这功能的整个过程(只想要结果的, 直接查看 7 即可):

1. eclipse 装了 svn 插件后, 能看到每个文件后面都列出这个文件的最后更新时间, 更新人

   clip_image001_thumb 

我就想肯定有地方记录了这些文件的信息.

 

2. 分析源码目录下的 .svn 里的文件, 一开始并没有发现有记录各个文件 author 的地方.

里面的文件很简单, .svn 文件夹里就这么几个文件, 文件内容也很简单.

image_thumb

 

3. 于是就怀疑会不会是 subclipse 插件在每次启动后连接 svn, 联网获取相关信息.

断网, 重启 eclipse, 发现仍能列出文件的 author 及最后更新时间, 那么就有可能是记录在 subclipse 插件自己的路径下了, 下一步就是要搜索 subclipse 插件的目录了 ,但是在 subclipse 目录下找了半天, 也没发现何与项目有关的东东.

 

4. 实在没辙了, 就想既然是开源的, 那去找 subclipse 的源码来看看吧

在网上找到 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


 

 

转载于:https://my.oschina.net/zenglingfan/blog/61429

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值