windows和linux对齐svn客户端版本共享使用svn工作目录

可能有不少人的开发软件方式,是在windows上做代码开发,而在linux做版本编译。那么,通过linux samba服务共享代码目录给windows,在windows开发代码后,直接在linux命令行工具中进行编译,是很不错的工作方式。

但是,通过windows的tortoiseSVN客户端下载代码到samba目录是一个相对缓慢的过程,有时甚至会出现checkout失败。这其中的缘由,是windows svn客户端相当于做了一次二道贩子:文件从远端svn服务器获取下来,但文件却真实存储于另外一个linux远端。

那么,能否在linux将代码直接checkout出来,但是,在windows上的tortoiseSVN客户端也可以同时使用同一个svn工作目录呢?

最开始发现在两端的svn客户端版本存在差异的情况下,是难以工作的,但推测,如果两端的svn客户端工具是同一版本,则应该可能是可以同时工作的!


此种对齐svn客户端的思想,最初只是一个想法,但在最近经历过一次linux svn checkout失败后,进而更加深和印证了这种推测!

想到,其中最关键的,就是svn使用的sqlite的元数据数据库需要保持互操作性!

在linux svn checkout分支时,报'E200030: near "OLD": syntax error, executing statement ...',这是一个典型的sqlite操作数据库语句失败。找一个干净的初始化的虚拟机环境,安装svn组件,发现工作的十分良好,所以,就怀疑出现问题环境的svn使用了与标准环境不同的sqlite库,通过查阅已安装sqlite组件版本对比,和ldd svn依赖库分析,修改了svn客户端引用sqlite库的不一致后,在失败的环境,也顺利checkout出来了版本:)

此问题说明了,linux svn 在跨sqlite版本时可能存在一些瑕疵,也更加深了自己当初的猜测,如果windows和linux svn客户端想共享使用svn工作目录,其中关键点就是windows和linux的svn客户端版本需要对齐,且更深入的是要求对端系统能够操作另外一个对端系统所形成的svn的sqlite元数据库wc.db

例如,linux svn客户端版本是1.7.x或1.10.x,  windows的tortoiseSVN客户端的版本也同时保持是1.7.x或1.10.x,通过试验是可以同时工作!

我想,如果您用的是git进行代码版本管理,如果也想两边互操作,在遇到问题则对齐之,应该也没有啥问题的!

这是同版本保证的互操作性:)

你可能感兴趣的:(小工具,linux,windows,svn,checkout,互操作)