[原创]Python(pysvn)提取svn版本间改动文件列表
[原创]Python(pysvn)提取svn版本间改动文件列表
by AKara 2010.04.29 @ http://blog.csdn.net/akara @ akaras@163.com
---------------------------------------------------------------------
希望实现一个提取两个svn revision间有变动(增/删/改)的文件的列表
的命令行工具;可以帮我们项目做一些流程中的自动化工作(time -80%!)。
其实这事情,GUI界面的TortoiseSVN就已经可以在Log Message Dialog中通过
点击任两个revision条目来右键Compare revisions完成并存盘;但可惜没有
commandline接口,而且我的想法中还有些特殊的过滤规则和输出格式要求。
直觉上,希望直接pipe一下"svn log url -rR1:R2 -v"之类的输出来做。
但基于svn美化的文本输出还原它底层的数据结构会陷进(造轮子^2)的杯具中。
Google了一下"python svn"发现pysvn这个3rd lib( Python的3rd lib真是
比Lua多一个数量级*_* ),用它便可独立完成普通svn client能实现的功能。
变动文件列表提取就是小菜一碟了。
---------------------------------------------------------------------
动手了。
首先,确定svn server的版本号:
从WEB浏览器上打开要提取的svn仓库URL页面,最下方应该有类似:
"Powered by Subversion version 1.5.5 (r34862). "
的信息。现在可以到http://pysvn.tigris.org找对应版本的PySvn库。
我用的是Python2.5。找到一个版本的PySvn刚好合适:
===========================================
名称 py25-pysvn-svn155-1.6.3-1119.exe
状态 稳定
描述 PySVN 1.6.3 for python 2.5 and svn 1.5.5 installation kit
创建者 barryscott 于 2009年2月11日 星期三
上次修改者 barryscott 于 2009年4月18日 星期六
文件 py25-pysvn-svn155-1.6.3-1119.exe (文件大小: 3332.6)
===========================================
但,这官站访问起来那是异常的慢。-_-
(我的FireFox上要将network.http.keep-alive.timeout改大几倍才能打开)
而且下载也是非常的不稳定,忍不了,找了一个第三方的下载点(瞬间下完):
http://www.urbansim.org/opus/third-party/windows/py25-pysvn-svn155-1.6.3-1119.exe&nbs
相关文档:
需要先安装libxml2-devel libxslt-devel这两个rpm包,如果使用非root用户安装,可以下载libxml2和libxslt的源代码进行安装。 libxml2-devel、libxslt-devel装好后,解压lxml的包,切换到这个包的路径。
加入CFLAGS进行编译和安装,在shell下依次输入如下命令: CFLAGS=-I/usr/include/libxml2:/usr/include/libxslt/ ......
Install Python Eric IDE
1 Download following things
1) Python3.1
2) PyQt for python 3.1
(http://www.riverbankcomputing.co.uk/software/pyqt/download) I am using
PyQt-Py3.1-gpl-4.7.3-2.exe
3) Eric5 IDE
(http://eric-ide.python-projects.org/eric-download.html)
2 ......
队列:
与堆栈类似,通过python的列表类型来实现,参考 help(list)
shoplist=['apple','mango','carrot','banana']
print 'I have',len(shoplist),'items to purchase'
print 'these items are:'
for item in shoplist:
print item,
shoplist.append('rice')
print 'my shopping list is now', shoplist
shoplist. ......
refer from: http://www.daniweb.com/forums/thread115282.html#
python
Syntax
(Toggle Plain Text
)
# respond to a key
without the need to press
enter
import
Tkinter
as tk
def
keypress(
event)
:
if
event.keysym
== 'Escape'
:
root.destroy
......