使用Jenkins时Jenkins Subversion Plugin与本地Subversion Command不兼容
1、使用场景
在使用jenkins时,先使用Jenkins Subversion Plugin执行checkout或update操作,然后经过一些列操作后在batch命令行调用svn update命令行
2、错误详情
在batch命令行调用svn update命令行时,出现如下错误:
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: The working copy at 'xxx' is too old (format 8) to work with client version '1.8.10 (r1615264)' (expects format 31). You need to upgrade the working copy first.
3、软件环境
Jenkins ver. 1.592
TortoiseSVN 1.8.8(Subversion 1.8.10,安装TortoiseSVN同时安装了Subversion Command)
Jenkins Subversion Plugin 1.54(Jenkins ver. 1.592自带)
4、错误分析
错误很明显,是Jenkins Subversion Plugin与本地Subversion Command不兼容
Jenkins Subversion Plugin 1.54不支持svn 1.8,主要表现在不支持1.8版本的working copy
5、解决问题
只要让TortoiseSVN和Jenkins Subversion Plugin支持的svn版本保持一致即可解决问题
或者降低TortoiseSVN的版本,或者升级Jenkins Subversion Plugin到支持svn 1.8的版本,或者只用其中某一个
(1)降低TortoiseSVN的版本
如果降低TortoiseSVN的版本,应该将其降为1.7还是1.6呢?
先看看Jenkins Subversion Plugin 1.54是基于1.6还是1.7开发的。
通过查看Jenkins Subversion Plugin 1.54的源码(https://github.com/jenkinsci/subversion-plugin/releases/tag/subversion-1.54)
在pom.xml中看到svnkit相关的dependency信息如下:
org.jenkins-ci.svnkit
svnkit
1.7.10-jenkins-1
从中得出,SVNKIT的版本是1.7.10
SVNKit 1.8.7 is compatible both with Subversion 1.8 and Subversion 1.7 working copy formats. No upgrade is required for working copies in 1.7 format.
SVNKit 1.7.13 is NOT compatible with Subversion 1.8 working copy format. It is compatible with Subversion 1.8 servers.
Both SVNKit 1.7.13 and 1.8.7 support 1.6 and older working copy formats without need to upgrade.
可以看出SVNKIT从1.7.8版本开始支持svn 1.6,SVNKIT1.7.10应该既支持svn 1.7又支持svn1.6。
同时,
在Jenkins的系统管理→系统设置中,可以设置Subversion的版本。
所以将TortoiseSVN降为1.7或1.6均可,只要保持
TortoiseSVN与Jenkins设置的Subversion保持一致即可
。
(2)升级Jenkins Subversion Plugin到支持svn 1.8的版本
在Jenkins的系统管理→插件管理页面,关于Subversion Plugin的信息
得知Jenkins Subversion Plugin 当前版本为1.54,最新版本为2.5
查看Jenkins Subversion Plugin的changelog(
https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin)
可以看出,Jenkins Subversion Plugin 2.5已支持svn 1.8
所以将Jenkins Subversion Plugin升级到2.5版本即可。
(3)只用TortoiseSVN带的Subversion Command
如果不想降低TortoiseSVN版本或升级Jenkins Subversion Plugin
可以只用TortoiseSVN带的Subversion Command
因为Subversion Command与Jenkins Subversion Plugin相比:
灵活、功能多(如commit、merge等)