linux下配置svn服务
一、安装
使用yum安装非常简单:
yum install subversion
二、配置
我们这里在 /home下建立一个名为 svn 的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面多了几个文件夹。
[root@localhost /]# cd /home
[root@localhost home]# mkdir svn
[root@localhost home]# svnadmin create /home/svn
[root@localhost home]# ls svn
conf db format hooks locks README.txt
我们这里特别关注一下 conf 文件夹,这个是存放配置文件的
[root@localhost home]# cd svn/conf
[root@localhost conf]# ls
authz passwd svnserve.conf
其中:
· authz是权限控制文件
· passwd是帐号密码文件
· svnserve.conf是SVN服务配置文件
接下来我们依次修改这3个文件。
1.配置passwd
[root@localhost conf]# vi passwd
[users]
boss= 123456
other= 123456
上面的例子中我们创建了2个用户,一个boss,一个other
2.配置authz
[root@localhost conf]# vi authz
[/]
boss= rw
other= r
* =
上面配置的含义是,boss对/home/svn/下所有文件具有可读可写权限,other只有只读权限,除此之外,其它用户均无任何权限,最后一行 *= 很重要不能少。
3. 配置svnserve.conf
1).放开如下注释:
#控制非鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:read
anon-access = none
#控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。即"write"为可读可写,"read"为只读,"none"表示无访问权限。缺省值:write
auth-access = write
#指定账户密码配置文件,当前文件夹下的passwd文件
password-db = passwd
#权限配置文件,当前文件夹下的authz文件
authz-db = authz
#版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)
realm = first
2).注意:
· 最后一行的realm记得改成你的svn目录
· 打开注释时切记前面不要留有空格,否则可能有问题
3).启动与停止
svnserve -d -r /home/svn (启动)
killall svnserve (停止)
上述启动命令中,-d 表示守护进程, -r 表示在后台执行。
3.客户端连接
这里使用TortoiseSVN,没有的同学请自己下载,输入地址svn://你的IP/仓库名字 即可,不出意外输入用户名和密码就能连接成功了。默认端口3690,如无法链接可以查看端口是否开启。
三、部分错误解决办法
1.authorization failed(svn授权失败)
错误主要是conf/auth文件配置错误,可以参考如下配置:
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
#此处的admin是定义一个组,后面的值用逗号隔开,表示组内包含的用户
admin=qinwx,liwz
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
# 此处的[works:/]代表启动目录下的works版本库的根目录。@admin=rw 表示admin群组的用户具有读写权限
[works:/]
@admin=rw
然后你运行svnserve启动服务的时候-r参数需要制定works的上一级目录,要不然也会出现
authorization failed(svn授权失败)错误!
示例路径pwd:/alidata/svn/works
svnserve -d -r /alidata/svn
这样一来auth文件里的[works:/]参数才起作用!
2.在修改文件后show log无法显示日志
上面的时间会自动在2016年和1970年间跳,而且设置不了时间,或者直接就是不现实任何日志信息。
解决方法:
1.编辑svnserve.conf,设置“anon-access=none”
2.在authz中添加
[/]
* =
3.windows 和 linux下 清除svn保存的账号密码信息。
1.windows下
方法1:对于TortoiseSVN软件,右键出TortoiseSVN菜单Settings->Saved Data->Authentication data,Clear
方法2:C:\Documents and Settings\Administrator\Application Data\Subversion\auth
删除auth下面的所有文件夹
如果以上2个方法都不起作用,那么只能卸载TortoiseSVN,再重新安装一次,之后上面的2个方法就能起作用了.
2.linux下
删除 ~/.subversion/auth即可
rm -rf ~/.subversion/auth