svn server搭建过程及注意事项

来源:互联网 发布:手机体育直播软件 编辑:程序博客网 时间:2024/06/06 07:32

此svn server已搭建完毕并投入使用中,期间遇到了一点小问题,特记录如下,以备查找。

svn服务的开启有两种方式:
①自带的svnserve服务(访问地址svn://192.168.1.188/repos/)
②与Apache配合使用 (访问地址http://192.168.1.188:8055/repos/)

下面只记录自带的svnserve服务配置:
1、安装,解压缩下载的svn压缩包到对应文件夹。
例如subversion(建议路径不要有空格与中文)
2、建立版本库,首先建立 e:\svn 空文件夹作为所有版本库的根目录。
然后,进入命令行并切换到安装subversion的bin目录(建议将此目录设为path)。
输入如下命令:svnadmin create e:\svn\repos
注意:若不先建立e:\svn空文件夹,则输入上述命令会提示错误。
3、运行服务进程
在bin目录下输入:svnserve -d -r e:\svn
注:-d参数效果同于-daemon
-r参数效果同于-root
svnserve 将会在端口 3690 等待请求,-daemon(两个短横线)告诉 svnserve 以守护 进程方式运行,这样在手动终止之前不会退出。不要关闭命令行窗口,关闭窗口会把 svnserve 停止。-root设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserve URL的时间。
如果不加root参数,服务url为:svn://192.168.1.188/svn/repos
如果加上root参数,服务url为:svn://192.168.1.188/repos
此处的启动配置会影响服务url,如果输入url错误,会导致访问的时候出现异常。
4、为了验证svnserve正常工作,使用TortoiseSVN -> Repo-browser 来查看版本库。
在弹出的 URL 对话框中输入:svn://192.168.1.188/repos
点OK按钮后就可以看见repos 版本库的目录树结构了,只不过这时 repos 是个空库。

以下是搭建过程中可能出现的问题:
问题一、Error:Can’t connect to host: 由于目标机器积极拒绝,无法连接。
解决办法:首先测试svn的3690端口是否打开:telnet localhost 3690
如果不成功说明服务没有被正常启动,请参考前面步骤。
可以将svn服务添加到系统服务中去。
步骤如下:这样可以避免每次重启后需要手动运行命令的烦恼。
1、在subversion的安装路径下,找到bin文件夹。
2、新建一个autosvnserve.bat文件,内容为:
sc create svnserve binpath= “e:\subversion\bin\svnserve.exe –service -r e:\svn” depend= Tcpip start= auto
sc start svnserve
pause
这里有个需要注意的问题:“start= auto”等号后面要加上一个空格。
3、运行,这时在服务里可找到一个名为svnserve的服务。
在cmd命令行下查看打开的端口:netstat -ano就看到3690端口打开了

问题二、Error:No repository found in svn://192.168.1.110/svn/repos/test
解决方法:
A、测试1:
①运行svnserve -d -r e:\svn\repos\test //指定test根目录为服务的根目录
②运行svn://192.168.1.188,可以正常访问修改test。
③运行svn://192.168.1.188/test
出现svn://192.168.1.188/test non-existent in
B、测试2:
①运行svnserve -d -r e:\svn\repos //指定test上层目录为服务的根目录
②运行svn://192.168.1.188/test,可以正常访问修改Repository
③运行svn://192.168.1.110
出现Error:No repository found in svn://192.168.1.188
C、结论:
①SVN服务启动时指定的根目录不同,会影响相同URL的访问结果。
②SVN在访问指定路径时会从服务的根目录下寻找,即基于我们启动服务时指定的根目录。
③svn://192.168.1.188指向默认的test
svn://192.168.1.188/test指向test
④测试1失败是因为已经把路径直接指向了test的根目录。
⑤测试2失败是因为只是把路径指向了test的上层目录。
解决如下:
svn://192.168.1.188/repos/test而不是 svn://192.168.1.188/svn/repos/test

问题三、配置权限相关
打开建立的版本库文件夹E:\svn\repos\conf
编辑svnserve.conf添加如下几行:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
保证文件中只有这几行是不被注释的
编辑passwd文件,添加内容:
[users]
test = test
注意整个串前后都不要有空格
编辑authz文件,添加内容:
[/]
test = rw
导入文件夹,重启服务,在需要导入的文件夹上右键–TortoiseSVN -> Import 输入url:svn://192.168.1.110/repos/文件夹名,此处文件夹名需要被加上,不然会把文件夹下的所有文件弄到repos文件夹下,数据乱了。
输入用户名密码:test

导入的时候可能出现的问题:Error: Authorization failed
解决:权限问题
这个问题费了点时间,一直以为是拼写url的问题,找了半天没找到,然后确认问题是权限配置错误,查了半天也没看出来,后来弄清楚,是因为导入涉及到在根下写东西,所以必须要有根下的w权限,添加如下配置后问题解决:
[/]
test = rw
注意:
版本库与导入项目最好不要重名,如果重名:
比如把arm下的东东导入到了这个版本库:svn://192.168.1.110/arm。
而配置权限的时候,[arm:/]这才代表工程的根目录,即:svn:// 192.168.1.188/arm
要想配到权限到目录下,就得这么写: [arm:/arm/],不然出错,且问题不容易排除。
Check Out之,svn://192.168.1.188/repos/文件夹名注意大小写区分,不然可能也会出现Error: Authorization failed错误。
至此svn自带服务配置完成,可以进行其他测试如Update,Commit等,都不会再出现问题。

原创粉丝点击