svn版本管理器,虽然功能上,好用上都比不上git,但是,由于其早期在国内的使用率,还是有很多人到现在还是在使用svn的,早期,Svn服务一般都部署在windows上,使用VisualSVN Server作为svn的管理和服务启动,也非常好用。 但现在,随着linux服务器的普及,现在服务器基本都是linux的了,windows服务器都很少见的,这就涉及到一些,将windows的SVN服务迁移到linux上的情况。
下面就记录一下svn从windows上迁移到linux上的过程。 linux服务器为centos7
第一步:
首先,在linux上安装svn服务
yum install subversion -y
然后在想要的目录下创建SVN库梗目录。如:
mkdir /usr/local/svnrepos
第二部:
登陆到windows服务器上,将windows上的svn库都导出成文件,这里以一个库为例,多个库类似:
在VisualSVN Server的安装目录的bin目录下,用cmd执行如下命令
svnadmin dump D:/Repositories/test > test
这个命令中D:/Repositories/test为版本库的目录,库名为test,导出转存为test文件,test是一个文件,没有后缀
然后将这个文件,上传到centos上。在centos上执行如下命令:
svnadmin create /usr/local/svnrepos/test
svnadmin load /usr/local/svn/svnrepos/test < test
先创建对应的同名库,再将导出的文件,加载到这个库中。即可完全的保留了数据和版本信息。
PS:但是,特别注意,因为在windows中,我们常会用中文来建立库名称,如果我们直接用中文来表示库名,在上传到linux后,就会发现乱码,无法显示,不管怎么改linux系统的语言支持,都无法正常显示,这时,就不需要这样,直接将导入的库文件改名成英文,然后在linux上,创建库的时候,直接创建中文名的库,然后将文件导入进去,这样库名就是中文了。
另外,最好先将linux的系统语言改为中文的utf-8
vim /etc/locale.conf
-----------------------------------------------------
LANG="zh_CN.UTF8"
---------------------------------------------------
source /etc/locale.conf
第三步:
数据虽然迁移了,但是用户和用户权限和组,还是没有迁移,这个需要我们手动进行迁移。windows上VisualSVN Server对用户权限的管理,会生产自己的权限文件, 用户密码文件和用户组文件,都在公共目录下, 共用的。但是用户权限配置文件则是在每个项目库里,而且在导出导入时后不会被导入,因为这些文件都是VisualSVN Server自动生成的,不是svn自身的文件,所以,需要手动。
然后, authz文件中是写用户组和权限配置的文件,而windows上groups文件是单独独立出来的公共文件,而svn的authz不可以用include 来引入别的配置文件,所以,我们只能都使用公共文件来管理所有项目,于是,将zuthz文件和passwd文件都放在公共目录下,即是 /usr/local/svndata 的目录。然后在每个项目的 的服务配置文件中,指明这两个公共文件,如下:
------------------------------------------
anon-access = none
auth-access = write
password-db = /usr/local/svndata/passwd
authz-db = /usr/local/svndata/authz
--------------------------------------------------------------------
这样就都用公共的两个文件来配置权限和用户,而不同的项目有不同目录结构,在authz文件中,可以用过在前面写明项目名来区分:
[test:/]
*=
@group1=rw
@group2=rw
admin=rw
其中,test就是项目名,后面是目录,通过这样在一个文件中区分不同项目库的权限。然后按照这样,将windwos上的权限配置都写入到这个公共authz中即可。
第四步:
完成了上述的数据导入,用户和权限配置后,就可以直接启动svn服务了:
svnserve -d -r /usr/local/svnrepos/
启动后,默认监听3690端口,在防火墙上打开此端口:
firewall-cmd --add-port=3690/tcp --permanent
firewall-cmd --reload
OK,的到此,svn服务搭建ok,
然后在自己电脑上可以通过小乌龟TortoiseSVN客户端来连接svn,连接地址为:
svn://IP:3690/test
IP为svn服务器的IP地址,端口3690,test为项目库的名称。然后会弹出用户名密码输入框,输入用户密码,即可正常使用。
OK,到此,svn成功的从windows迁移到linux上。
但是这样的svn还有一点不好,就是没办法直接查看更目录,来查看有哪些项目库。在连接时必须指定项目库名,这样对于经常不同库之间切换的人来说,就很麻烦,很不方便。对此,就需要apache了,通过apache既可以实现通过http/https请求来访问svn,也可以查看更目录,非常的方便。但是网上对这方便的讲解非常少,而且都年代久远,证明这种方式用的人较少,本人这里也尝试了半天,也还是访问出错。
鉴于这种现状,对于还没使用svn的用户,请不要用svn了,用GIT! svn有的git都有,svn没有的git也有,且这也是时代发展的趋势。这里就到这吧