ubuntu下SVN服务器安装配置
1.安装包
sudo apt-get install subversion
2.添加svn管理用户及subversion组
$ sudo adduser svnuser 添加用户
$ sudo addgroup subversion 添加用户组
$ sudo addgroup svnuser subversion 将用户加入到组
3.创建项目目录
sudo mkdir /home/svn 创建文件
cd /home/svn
sudo mkdir myproject 创建SVN服务目录
sudo chown -R root:subversion myproject更改用户属主属组
sudo chmod -R g+rws myproject 添加组写权限
4.创建SVN文件仓库
sudo svnadmin create /home/svn/myproject
5.访问方式及项目导入:
设置访问方式:
svn co file:///home/svn/myproject
或者
svn co file://localhost/home/svn/myproject
* 注意:
如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
将项目导入到SVN 文件仓库:
svn import -m "New import" /home/svn/myproject file:///home/svnuser/src/myproject
一定要注明导入信息
6.访问权限设置
修改 /home/svn/myproject下:svnserve.conf 、passwd 、authz
注意:三个文件,行最前端不允许有空格
编辑conf/svnserve.conf
把如下两行取消注释
password-db = password
authz-db = authz
# [general] 补充说明
anon-access = read
auth-access = write
password-db = passwd
其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。
编辑conf/passwd
[users]
mirze = 123456
test1 = 123456
test2 = 123456
编辑conf/authz
[groups]
admin = mirze,test1
test = test2
[/]
@admin=rw
*=r
这里设置了三个用户mirze,test1,test2密码都是123456
其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限
7.启动SVN服务
svnserve -d -r /home/svn/myproject
描述说明:
-d 表示svnserver以“守护”进程模式运行
-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
如: svn://192.168.12.118/myproject
这时SVN安装就完成了.
局域网访问方式:
例如:svn checkout svn://192.168.12.118/myproject --username mirze --password 123456 /var/www/myproject
此种方法使用subversion自带的svnserve进行配置,对于局域网已经适用,要想在WLan上适用要适用apache方式配置。
8.整个库的导出与导入
svnadmin dump myrepos > dumpfile; 在启动库的情况下执行此命令可已将库导出到dumpfile中,myrepos为库的目录。
svnadmin load newrepos < dumpfile; 启动你创建的库,执行此命令可以将原库中的内容导入到新库中。newrepos是新库的目录
问题列表
(1) svnserve.conf:xxx:Option exected
这是由于svnserve.conf文件中的配置没有顶格写,配置文件svnserve.conf要求配置项前面没有空格,在解除注释项的时候要随手删去行首的空格
(2) Can‘t open file ‘/home/svn/fitness/db/txn-current-lock‘: Permission denied
因为在创建版本库的时候用的是root权限,所以svn用户就更新不了db/目录下的文件了(因为提交会更新SVN服务器上版本库中的db/目录)。解决方案就是把db/目录下的文件都放权给操作用户。操作如下:
sudo chmod -R g_rws myproject/db
(3) Svn: ‘xxxxx ’isn‘t in the same repository as ‘xxxxx’
在创建版本库的时候,我们使用了如下命令
sudo svnadmin create /home/svn/myproject
在conf/authz配置文件中我们设置相应的
[/] @admin=rw *=r
而如果我们使用如下命令创建版本库:
sudo svnadmin create /home/svn
这个时候在登录版本库的时候就提示不是同一个版本库。对此要设置conf/authz为
[myproject:/] @admin=rw *=r