`
zhengdl126
  • 浏览: 2538926 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

svnchanged_export.py 导出svn版本之间的变更文件

 
阅读更多

 

 


======================= 1 基于red hat6.0上自带的python2.6.5安装pysvn1.7.6

查看os版本方法
# lsb_release -a

查看python版本方法
#  python
Python 2.6.5 (r265:79063, Jul 14 2010, 11:36:05)

#  whereis python
python: /usr/bin/python /usr/bin/python2.6-config /usr/bin/python2.6 /usr/lib/python2.6 /usr/lib64/python2.6 /usr/include/python2.6 /usr/share/man/man1/python.1.gz

pysvn官网:
http://pysvn.tigris.org/project_downloads.html





======================= 2 安装pysvn前的准备

 

 

 

-------------2.1 挂载nfs

 

其实和以前的centos5没啥区别,只不过centos的安装是选mini的还真够mini的,啥都要自己yum。这不连nfs都默认不装了。
mount -t nfs 192.168.1.1:/nfs1 /mnt/nfs
直接提示

mount: wrong fs type, bad option, bad superblock on 192.168.1.1:/nfs1,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

需要安装下相关的软件包
yum -y install nfs-utils nfs-utils-lib

这时再尝试依然会出错

mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

原因是rpcbind没启动
chkconfig –list看见是默认启动的,应该是刚装后没启动,手工启动下。
/etc/rc.d/init.d/rpcbind start
然后再
mount -t nfs 192.168.1.1:/nfs1 /mnt/nfs 就正常了

 

 

 

-------------2.2 挂载nfs


#service portmap start
#mount 192.168.1.216:/mnt /mnt
#mount -l


# ll /mnt/



#vim /etc/yum.repos.d/local.repo

[Server]
name=Server Directory
baseurl=file:///mnt/rhel6_64/Server
enabled=1
gpgcheck=0

 

 

-------------2.2 准备安装pysvn其它包

#yum search apr
#yum install apr-devel.x86_64

#yum search apr-util
#yum install apr-util-devel.x86_64

清除自带的subversion
#yum remove subversion*

rpm下载安装subversion subversion-devel

#cd /usr/local/shell/automation/
#rpm -ivh subversion-1.6.11-2.el6_1.4.x86_64.rpm
#rpm -ivh subversion-devel-1.6.11-2.el6_1.4.x86_64.rpm

 

 


======================= 3 安装 pysvn

    wget http://pysvn.barrys-emacs.org/source_kits/pysvn-1.7.6.tar.gz

    tar zxvf  pysvn-1.7.6.tar.gz
    cd pysvn-1.7.6/Source
    python setup.py configure
    make

    \cp -a pysvn /usr/lib/python2.6
    \cp -a pysvn /usr/lib64/python2.6
    \cp -a pysvn /usr/include/python2.6

mkdir -p /usr/local/lib/python2.6/pysvn
cp -a pysvn/* /usr/local/lib/python2.6/pysvn



测试:
#!/usr/bin/python
import pysvn
client=pysvn.Client()
client.update('/data/website/')


# chmod +x test.py
# python test.py



======================= 4 测试svnchanged_export.py 

 

 

wget http://svn-script.googlecode.com/svn/trunk/tools/svnchanged_export.py 


执行
# python svnchanged_export.py -r 7490:7495 --username zheng.dl --password 111111 http://192.168./trunk/06-程序源码/01-源码 /tmp/test/

 

 

 

====================== 5 应用实践

 

----------5.1 两次版本的最终效果是文件没有变化则无法导出该文件:

 

1 对比:手动导出sc 9107:9557 的变更 和 使用py自动导出的变更

 

2 使用BCompare.exe工具对比目录和文件,汇总统计对比检查

发现两个异常文件:


ResultController.php(发生了两次svn变更版本号:9209,9442)
9209 变更 :null -> echo "1111";exit;
9442 变更:echo "1111";exit; -> null

 

BUserDiscount.php(发生了两次svn变更版本号:9271,9552)
9271 变更:klcwebsite -> pkwebsite
9552 变更:pkwebsite -> klcwebsite

 

3 以ResultController.php为例子演示:部分文件没有发布成功的现象

ResultController.php(两次svn变更版本号:9209,9442)
9209 变更 :null -> echo "1111";exit;
9442 变更:echo "1111";exit; -> null

 

例如sc发布脚本执行 9107:9440,那么dev环境ResultController.php文件内容就变更为echo "1111";exit;
当发布脚本执行9107:9557,那么就无法导出ResultController.php(因为文件内容都是null所以没有变更),那么dev环境ResultController.php文件内容依旧为echo "1111";exit;

 

4 结论:

部分文件发布不成功的问题不是由于一次发布文件太多时会漏文件,而是两次版本的最终效果是文件没有变化则无法导出该文件。

 

5 修复

 

5.1api资料
http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_client_diff_summarize

 

summary = \
diff_summarize( url_or_path1,
revision1=pysvn.Revision( opt_revision_kind.base ),
url_or_path2=url_or_path,
revision2=pysvn.Revision( opt_revision_kind.working ),
recurse=True,
ignore_ancestry=False,
depth=depth )

 

The function may report false positives if ignore_ancestry is False, since a file might have been modified between two revisions, but still have the same contents.
如果的ignore_ancestry是假的,两个版本之间,因为文件可能已被修改,但仍然有相同的内容,该函数可能会报告误报。

 

5.2修改py脚本测试


summary = client.diff_summarize(url, revision_min, url, revision_max)
为:
summary = client.diff_summarize(url, revision_min, url, revision_max, True, True)

测试发现修改了参数,问题依然存在。

 

5.3暂时无法通过发布脚本来解决此类问题。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    E:\自动化程序脚本\python获取svn日志信息\svnchanged_export.py

    使用python语言获取svn每个版本的详细Log信息便于分析

    ez_setup.py

    ez_setup.py &gt; cd f:\soft\subversion &gt; python ez_setup.py &gt; svn checkout http://svn.edgewall.org/repos/trac/trunk &gt; cd trunk python setup.py install

    LanguagePack_1.9.7.27907-x64-zh_CN.zip(SVN中文包)

    Subversion(SVN)是一种广泛使用的版本控制系统,它允许用户管理文件和目录的不同版本,便于多人协作开发。在软件开发过程中,SVN帮助开发者跟踪和控制代码的变更,合并不同人的修改,并提供备份和恢复功能。 这个...

    SVN客户端官方汉化包 LanguagePack_1.10.0.28176-x64-zh_CN.msi

    SVN客户端官方汉化包 LanguagePack_1.10.0.28176-x64-zh_CN.msiSVN客户端官方汉化包 LanguagePack_1.10.0.28176-x64-zh_CN.msi

    LanguagePack_1.9.3.27038-x64-zh_CN.msi

    SVN,全称Subversion,是一种广泛使用的版本控制系统,用于管理文件和目录的变更历史,便于团队协作开发。它允许开发者追踪每一次对项目文件的修改,并能回溯到任何历史版本,同时提供了冲突解决机制,确保多人协作...

    SVN\LanguagePack_1.5.3.13783-win32-zh_CN.rar

    在软件开发中,SVN是团队协作的重要工具,能够帮助开发者追踪代码变更,合并不同开发者的改动,并进行回滚等操作。 描述中提到的同样内容"SVN\LanguagePack_1.5.3.13783-win32-zh_CN.rar"进一步强调了这是一个特定...

    org.tmatesoft.svn_1.3.2.eclipse.zip

    标题 "org.tmatesoft.svn_1.3.2.eclipse.zip" 暗示这是一个针对Eclipse集成开发环境(IDE)的Subversion(SVN)客户端插件版本1.3.2的压缩包。Subversion是一款流行的开源版本控制系统,用于管理软件项目中的源代码...

    PLSQL插件SVN_Plugin.dll

    PL/SQL Developer Developer 官网上提供的版本控制插件是VCS,但是VCS还需要依赖其他实现Microsoft SCC 接口的版本控制工具,而且项目中用svn的比较多。因此PL/SQL Developer Developer中应该用svn插件来管理存储...

    SVN 中文帮助文档 TortoiseSVN_zh_CN.chm 1.5.5版本

    非常简明,实用 SVN 中文帮助文档 TortoiseSVN_zh_CN.chm 1.5.5版本 CHM 格式 SVN 中文帮助文档 TortoiseSVN_zh_CN.chm 1.5.5版本 CHM 格式 SVN 中文帮助文档 TortoiseSVN_zh_CN.chm 1.5.5版本 CHM 格式

    LanguagePack_1.10.0.28176-x64-zh_CN

    Subversion是一款流行的开源版本控制系统,用于管理软件项目的源代码和其他文件的变更。SVN的默认界面通常是英文的,但通过安装对应的汉化包,中国用户可以将其界面转换为中文,提高使用时的理解度和效率。 在...

    SVN_BackUp.rar_svn 自动备份_svn备份

    本主题将详细介绍如何在两台不同的服务器之间实现SVN版本库的自动备份,以及利用金山快盘等云存储服务进行云端备份。 1. SVN自动备份原理与配置 SVN的自动备份通常通过cron job或Windows计划任务来实现,结合shell...

    svn.rar_H.264_svn

    标题中的“svn.rar_H.264_svn”暗示了这是一个与版本控制系统Subversion(简称svn)相关的项目,其中包含了H.264编解码器的代码或资源。H.264,也称为AVC(Advanced Video Coding),是一种高效能的视频编码标准,...

    汉化包SVN LanguagePack_1.8.1.24570-zh

    Subversion (SVN) 是一种版本控制系统,它允许用户跟踪对文件和目录的更改,这对于多人协作的项目至关重要。主要功能包括: 1. **版本控制**:每个提交的更改都会被记录下来,可以随时回退到任何历史版本。 2. **...

    svn_linux.zip_svn_svn doc

    然后,通过Apache配置文件(`/etc/apache2/conf-available/svn.conf`)来设定访问规则: ```bash usermod -a -G svn my_user chown -R svn:svn /var/svn/repos/my_repo ``` 4. **集成Apache**:配置Apache服务器...

    SVN_1.8.2.24708最新版(含语言包)客户端服务端VS中文插件全套打包

    SVN服务端、客户端、VS简体中文插件打包下载(2013-10-24) 内含: VisualSVN-Server-2.7.1.msi 服务端 TortoiseSVN-1.8.2.24708-x64-svn-1.8.3.msi 64位客户端 LanguagePack_1.8.2.24708-x64-zh_CN.msi 64位客户端...

    subversion-1.8.19-1.x86_64.rpm

    Linux svn 一键轻松升级到1.8版本 安装命令 rpm -ivh subversion-1.8.19-1.x86_64.rpm 安装前需要依赖包serf-1.3.7-1.x86_64.rpm serf安装包资源:http://download.csdn.net/download/qq_21165007/10232620

    TortoiseSVN_1.9.5.27581_x64

    TortoiseSVN_1.9.5.27581_x64是一个专为Windows用户设计的Subversion(SVN)客户端软件,它在文件管理器界面中集成了版本控制系统的所有功能,使得开发者和团队协作人员可以更加便捷地进行源代码管理和版本控制。...

    TortoiseSVN-1.11.0.28416-x64-svn-1.11.0 中文语言包(64位)

    TortoiseSVN是一款在Windows操作系统上非常流行的版本控制系统客户端,它基于Subversion(SVN)服务器进行工作。这个特定的版本,TortoiseSVN 1.11.0.28416,是64位版本,并且包含了针对中文用户优化的本地化语言包...

    SVN_1.8.3.24901最新版(含语言包)客户端服务端VS中文插件全套打包

    SVN服务端、客户端、VS简体中文插件打包下载(2013-11-18) 内含: VisualSVN-Server-2.7.2.msi 服务端 TortoiseSVN-1.8.3.24901-x64-svn-1.8.4.msi 64位客户端 LanguagePack_1.8.3.24901-x64-zh_CN.msi 64位客户端...

Global site tag (gtag.js) - Google Analytics