文档章节

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

sailtseng
 sailtseng
发布于 2012/06/07 19:53
字数 1247
阅读 5458
收藏 0

给 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


 

 

© 著作权归作者所有

sailtseng

sailtseng

粉丝 26
博文 144
码字总数 96006
作品 0
杨浦
私信 提问
加载中

评论(2)

指尖上的奋斗
指尖上的奋斗
对了。现在我有个问题向你请教。我的问题目前是这样的:
仓库1的代码,在某个版本被搞到了仓库2,
很多天后的现在现在要把仓库1中的改动同步到仓库2。并且两个仓库都在修改这份代码。
你有没有好的解决办法?
指尖上的奋斗
指尖上的奋斗
看着你的思路。很有意思。很有思路。我也是上午折腾了一上午。我还在研究接口。api呢。后来发现绕的太远了。
CVS获取文件大小的命令

想请教一下CVS里有没有什么命令可以获取某个文件在某个版本的大小。或者是获取到文件的内容也可以。像SVN里可以用svn list得到文件信息列表,用svn cat得到某个文件在某个版本的内容。 注:不...

puweilan
2012/05/08
250
0
linux下svn的常用操作命令总结

导入代码文件到 repo 版本库 我的代码文件存放在 /var/www/html/; svn代码版本库的路径 /application/svndata/repo (也就是刚刚我们创建的版本库的位置); 执行导入命令: svn import /va...

浅景尘
2018/06/26
0
0
SVN清理失败 (svn cleanup) 的解决方法

由于不想描述的原因,导致svn cleanup出现找不到/path/to/.svn/pr.../文件 cd /data/web/domain.com sqlite3 .svn/wc.db sqlite> .tables ACTUALNODE NODES PRISTINE WCLOCK EXTERNALS NODE......

gaolongquan
06/13
0
0
Linux下SVN客户端使用指南

svn add values/strings.xml //--添加 svn st //--查看状态 svn ci //--提交 svn ci -m "svn ci, permission" 1、 将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如......

欧阳俊文
2012/11/11
0
0
svn命令在linux下的使用

1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:s...

Megan_zhou
2013/07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件34-磁盘容量统计

一、前言 磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间、剩余空间、总大小、已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色...

飞扬青云
29分钟前
2
0
tensorflow 安装

https://github.com/tensorflow/tensorflow/releases/tag/v1.14.0 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=......

mbzhong
31分钟前
1
0
Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) What Is XSS? Cross-site scripting (XSS) is a type of web application vulnerability that enables the attackers to inject client-side script into web pa......

两广总督bogang
34分钟前
1
0
Java - IO框架

1个字节(byte)由8bit组成 GB2312或GBK编码:1个英文字母1字节,1个汉字2字节 UTF-8编码:1个英文字母1字节,1个汉字3-4字节 UTF-16编码:1个英文字母2字节,1个汉字3-4字节(Unicode扩展区的一...

丰田破产标志
42分钟前
1
0
龙芯电脑安装debian 10

下载安装器 由于debian的内核不能直接使用,因此我们只需要下载initrd.gz和boot.cfg即可。 https://mirrors.tuna.tsinghua.edu.cn/debian/dists/buster/main/installer-mips64el/current/ima...

gugudu
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部