svn服务器从windows迁移到centos7

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也有,且这也是时代发展的趋势。这里就到这吧



猜你喜欢

转载自blog.csdn.net/weixin_41004350/article/details/78930876