debian10搭建svn
第一步:安装所需软件包
root@192:~# aptitude -y install subversion
subversion 的 (1.10.4-1+deb10u3) 版本已经按要求安装了
查看是否安装成功,可以查看版本。
svnserve --version
提示版本1.13.0,说明已安装成功。
创建版本库目录
创建SVN版本库目录,为后面创建版本库提供存放位置,也是最后启动SVN服务的根目录。
我们在/usr路径下创建svn目录作为版本库目录。
root@192:~# cd /usr/
root@192:/usr# mkdir svn
创建SVN版本库
在上一步建立路径基础上,创建版本库,如dev。
root@192:/usr/svn# pwd
/usr/svn
root@192:/usr/svn# svnadmin create dev
root@192:/usr/svn# ls
dev
root@192:/usr/svn# ls dev/
conf db format hooks locks README.txt
修改SVN配置
进入conf目录,查看需要修改的配置文件。
root@192:/usr/svn/dev/conf# pwd
/usr/svn/dev/conf
root@192:/usr/svn/dev/conf# ls
authz hooks-env.tmpl passwd svnserve.conf
配置文件详解
- authz:权限配置文件,控制读写权限
- passwd:账号密码配置文件
- svnserve.conf:svn服务器配置文件
修改svnserve.conf文件
vim svnserve.conf
打开红线标注的#
去掉anon-access、auth-access、password-db、authz-db、realm几项前的注释符号“#”
第二处
配置项含义:
anon-access = none|read|write 决定非授权用户的访问级别。none 表示无访问权限,read 表示只读,write 表示可读可写,默认为 read。
auth-access = none|read|write 决定授权用户的访问级别,使用与上面相同的访问级别。默认为 write。
password-db = filename 指定账号密码数据库文件名。filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为passwd。
authz-db = filename 指定权限配置文件名,filename 是相对仓库中 conf 目录的位置,也可以设置为绝对路径,默认为authz。
realm = realm-name 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的账号密码数据库文件passwd。
认证域知识延伸:
在SVN客户端登录时,会提示realm认证域,如下图的认证域My First Repository
。
修改passwd文件
root@192:/usr/svn/dev/conf# vim passwd
只需在末尾添加账号和密码,格式 账号 = 密码
,如user1 = 123456
,可添加多个。
修改authz文件
root@192:/usr/svn/dev/conf# vim authz
在根目录下设置user1、user2读写权限:
如果用户比较多,可以使用groups形式设置分组team1,并在根目录下指定分组@team1的权限:
如果想设置其他用户的权限,可以通过*
设置,如设置除@team1分组外其他用户只读权限:
[/]
@team1 = rw
* = r
启动SVN服务
执行SVN启动命令,其中参数-d
表示以守护进程的方式启动, -r
表示设置的根目录。
svnserve -d -r /usr/svn/
关闭svn命令:
killall svnserve
本地访问SVN服务
在windows系统中,安装TortoiseSVN软件,创建一个本地目录,右键选择SVN Checkout测试下,URL填写svn://IP/dev
,dev替换成你创建的版本库名称。
输入passwd配置好的用户。
Checkout completed,SVN访问成功,这就Nice了~
扩展
设置查看log日志
想查看提交的svn log日志,需要进一步配置。
编辑svnserve.conf,设置:
anon-access = none
编辑authz文件中添加:
[/]
* =
这样通过鼠标右键TortoiseSVN->show log就可以查看svn提交的历史记录了。
多个项目管控配置
SVN配置文件是很灵活的,如果想使用统一的账户和权限去管控多个项目,可以将多个项目的authz和passwd文件统一放在一处,在多个项目的svnserve.conf文件中配置这两个文件的绝对路径,并在authz中对不同的项目设置用户访问权限。
如:a、b、c、d这4个用户,p1、p2两个项目,其中a、b只能访问p1,c、d只能访问p2。
创建版本库目录
mkdir /usr/svn
创建多个版本库
shell
root@192:/usr/svn# svnadmin create p1
root@192:/usr/svn# svnadmin create p2
root@192:/usr/svn# ls
dev p1 p2
创建管理用户权限目录
root@192:/usr/svn/p1/conf# mkdir -p /var/svn/conf
root@192:/usr/svn/p1/conf# cp authz passwd /var/svn/conf/
修改配置文件
修改p1的svnserve.conf文件:
anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = p1
修改p2的svnserve.conf文件:
anon-access = none
auth-access = write
password-db = /var/svn/conf/passwd
authz-db = /var/svn/conf/authz
realm = p1
password-db和authz-db都使用统一管理用户权限目录,使用绝对路径。
修改password-db文件
root@192:/var/svn/conf# pwd
/var/svn/conf
root@192:/var/svn/conf# ls
authz passwd
root@192:/var/svn/conf# vim passwd
修改authz文件
[groups] //分组
p1user = a,b
p2user = c,d
[/]
* = #以上没有定义的用户都没有任何权限
[p1:/] //p1的访问控制,c、d无法访问
@p1user = rw
[p2:/] //p2的访问控制,a、b无法访问
@p2user = rw
对password-db和authz文件的修改立即生效,不必重启svn。
启动svn服务
svnserve -d -r /usr/svn/
访问不同项目SVN
同样TortoiseSVN软件,选择SVN Checkout测试。
访问项目p1 URL
svn://IP/p1
访问项目p2 URL
svn://IP/p1
统一的配置文件,不同项目限定了不同用户访问,这样就实现了管控多个项目的SVN配置。
以上就是Linux系统搭建SVN服务器详细教程的所有内容,希望对大家有所帮助。
linux客户端连接测试:
客户端需要安装:
[root@client conf]# yum -y install subversion
checkout 把整个版本库下载下来
[root@client conf]# svn checkout svn://10.10.7.155/test //test为服务端版本库目录
出现以下报错:
原因:
svn服务未启动或者是启动的时候未指定svn仓库路径,svn默认仓库路径为/var/svn,所以我们需要手动指定为/home/svn/
解决方案:
#ps–ef|greo svn命令查找出来svn的pid,
#kill -9 svnd的pid进程号
#svnserver –d –r /home/svn/
以上操作完成之后,不用再次重启服务(上条命令就是启动svn且指定仓库路径)。再次进行测试
出现报错:Authorizationfailed
检查authz文件是否出错。进行修改
再次测试:
显示成功取出版本
提交代码文件:
服务器上没有的文件,在客户端需要先add预提交,再commit,如果服务器端已有的文件,直接commit
#svn add /root/davesvn/test
#svn ci /root/davesvn/test -m “创建新文件” //ci是commit的缩写, -m是添加注释
//提交,俗称存入
# 提交test.txt文件
[root@localhost test]# vim test.txt
[root@localhost test]# svn add test.txt
A test.txt
[root@localhost test]# svn commit test.txt -m "test-version1"
Authentication realm: My First Repository
Password for 'root': #输入虚拟机root密码
Authentication realm: My First Repository
Username: svn #输入svn配置文件内创建的用户
Password for 'svn': #输入用户密码
------
ATTENTION! Your password for authentication realm:
```
My First Repository
```
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
## '/root/.subversion/servers'.
Store password unencrypted (yes/no)? yes #输入yes
Adding test.txt
Transmitting file data .
Committed revision 1.
Windows客户端连接测试
需要安装svn客户端
URL of repository为svn服务器的版本库目录路径
Checkout directory为本地的路径
设置子项目权限
需求,想要要求其他员工对我们公司svn项目下面的一个目录有读写权限,其他项目没有读写权限
只需要设置俩个文件 authz passwd
我这是想设置一个成员只对这个目录有读写权限
首先添加账号密码 cat passwd
使用随机生成uuid当作密码
cat /proc/sys/kernel/random/uuid
配置权限 cat authz
清理svn缓存
)]
设置子项目权限
需求,想要要求其他员工对我们公司svn项目下面的一个目录有读写权限,其他项目没有读写权限
只需要设置俩个文件 authz passwd
我这是想设置一个成员只对这个目录有读写权限
[外链图片转存中…(img-iZ9mv5lP-1657183641543)]
首先添加账号密码 cat passwd
使用随机生成uuid当作密码
cat /proc/sys/kernel/random/uuid
[外链图片转存中…(img-QZafRZsS-1657183641543)]
[外链图片转存中…(img-1uMy9kBP-1657183641544)]
配置权限 cat authz
[外链图片转存中…(img-0kOEX6k9-1657183641544)]
清理svn缓存