svn 服务器创建一般分为几个迭代功能,可以循序渐进一步步达到我们需要的功能:
#1 基本svn功能svn import/ci/cout/add/up/delete和基本的读写权限管理#2 svn 备份策略
#3 更高基本和更细致的权限管理划分,例如某某账户只能对某某文件夹进行操作
#4 svn 操作管理,例如提交代码必须填写提交日志,是否可以修改日志
由于项目关系,当前先实现第一个迭代,后期把其余的按照需求在补上,特别是备份。
1.安装包
$ sudo apt-get install subversion
2.创建项目目录
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir ymsrc
3.创建SVN文件仓库
$ sudo svnadmin create /home/svn/ymsrc
$配置svn 相关的配置文件,见下。
注意:svn服务器提供多种访问方式有file,svn,web http等,可以按照需求选择对应的方式。
4.验证访问方式及项目导入:
$ svn co file://localhost/home/svn/ymsrc
5. 增加远程访问,使用root权限运行svnserve,如果不是那么代码仓库文件访问权限要对应修改
sudo svnserve -d
6. 验证访问方式及项目导入
svn co svn://192.168.3.111/home/svn/ymsw
7. 导入文件到服务器
svn import src svn://192.168.3.111/home/svn/ymsw --no-ignore
其中--no-ignore选项表示所有的文件都上传到服务器,要不然由于svn过滤的原因导致某些后缀文件上传不上去,例如.o文件
8. 导出文件
svn co svn://192.168.3.111/home/svn/ymsw
svn配置文件:
配置文件包括权限svnserve.conf 、passwd 、authz三个文件;还有操作控制配置文件hook目录。这里只关注认证方面的配置。
第一个文件是svnserver如果svn访问方式那这里需要配置,主要是采用什么认证文件,例如passwd。而passwd文件是svn账户文件,authz是认证控制文件。
本项目文件配置如下:
svnserve.conf :
### and "none". The sample settings below are the defaults.
anon-access = none
auth-access = write
### The password-db option controls the location of the password
...
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
...
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
passwd:
[users]
test = test
# sally = sallyssecret
authz:
### ('').
[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
[/]
test = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
相关问题:
#1 svn log不显示日志
解决方法: svnserve.conf配置文件里面anon-access 一开始写的是read,不知道什么原因log不显示表现如下,只需要改为none就可以了。
r16 | (没有作者信息) | (没有时间信息) | 1 行
#2 权限访问失败
解决方法:svnserve使用对应的账户运行,例如本项目使用root运行。
#3 虚拟机下载的svn代码,在windows tortoise 查看失败
解决方法:虚拟机的svn客户端和windows tortoise版本保持一致
#4 日志后期无法修改
解决方法:对于提交日志或则上传代码相关的操作控制在hook里面找到对应的文件修改即可。
#5 上传.o文件失败
解决方法: svn默认会过滤掉一些后缀文件,本项目svn import的时候.o文件就被过滤了,只需要加入--no-ignore即可
#6 svn: Can't connect to host '124.207.0.99': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。本地SVN是可以的。使用linux svn客户端上报错误: Can't connect to host: no route to host。
解决方法: centos里面会出现这个问题,是iptables的原因,把iptables stop掉是可以使用的或则加入规则/etc/sysconfig/iptables,加入一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT