visualSVN(win)迁移到subvision(linux)

说明:
Windows服务器深度中毒,真的是蛋疼。因此决定从Windows转换到linux下。需要保留原有的版本信息,用户密码等。原先win2003使用的是visualSVN 2.5.4.msi,linux下编译安装的是subvision 1.6.20,win客户端使用TortoiesSVN。
把svn从win平台切换到linux平台,有两个问题:
第一个就是用户,密码。visualSVN使用apache的htpasswd,htpasswd密码采用md5加密;而我编译安装subvision时,./configure时并没有支持apache,subvision以daemon形式运行。用户密码passwd皆是明文。因此这里需要手动修改passwd,手动输入密码,此时密码为明文。
第二个则是,win下的visualSVN下并没有针对各个版本库进行权限配置,而是统一配置。因此你会发现在visualSVN版本库上级目录,有三个文件:authz(统一的认证文件包含成员,组,权限等信息),authz-windows(不懂),htpasswd(对应用户,密码)。而具体版本库/conf/authz,passwd,svnserve.conf都是默认配置,没有具体指定用户,密码,权限。如果你需要svn的版本库较少时,一个个改倒也无所谓。当你有4,50个版本库,能够统一认证会是件很爽的事。你总不希望svn从win换到linux,还要一个个配权限。

实现:
1.编译安装subvisionSVN 1.6.20
具体可以参考 Linux下svn1.6编译安装及使用说明

2.导入导出svn版本库

# svnadmin dump E:SVNRepositoriesrepo1 > E:repo1.dump
# cd /home/svn
#svnadmin load repo1 < repo1.dump

网上是采用svnadmin来导入导出版本库,但我用subvision 1.6.20 load版本库时,会出现没有formate等问题。因此我是直接从win拷贝各个版本库到linux下。

3. 修改各个版本库的./conf/svnserve.conf为以下内容。

# vim /home/svn/repos1/svnserve.conf
[general]
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = /home/svn/passwd # 指明密码文件路径,这里所有版本库指定统一passwd,实现统一认证
authz-db = /home/svn/authz # 访问控制文件,这里所有版本库指定统一authz,实现统一认证
realm = /home/svn/repos1 # 认证命名空间,请根据版本库名称更改,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
//其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错。

 
4.修改统一权限文件/home/svn/authz,这里注意去掉//那几行,写出来是用于说明,不懂会不会有问题

# cat /home/svn/authz //内容为下
//*=表示默认,未授权用户everyone无法read
[/]
*=
//这里是添加组
[groups]
F2E = test1,test2
PHP = test3,test4
android = test5,test6
ios = test7,test8
ui = test9,test10
//针对具体版本库设置权限,*=r表示默认everyone可读;F2E,php组,test11读写。
[repos1:/]
*=r
@F2E = rw
@PHP = rw
test11 = rw

 
5.修改统一的用户密码文件/home/svn/passwd

# cat /home/svn/passwd  //内容如下
[users]
test1 = 123456
test2 = 123456
......
test11 = 123456

 
6.重启svn

# ps -ef|grep svn
# kill pid
# /usr/local/subversion/bin/svnserve -d -r /home/svn/

//剩下的就是测试,可以使用test1,test5,test11测试。

附录:
空!

发表评论

邮箱地址不会被公开。 必填项已用*标注