debian10搭建svn

第一步:安装所需软件包

root@192:~# aptitude -y install  subversion
subversion 的 (1.10.4-1+deb10u3) 版本已经按要求安装了

centos查看svn仓库地址_版本库

查看是否安装成功,可以查看版本。
svnserve --version

centos查看svn仓库地址_centos查看svn仓库地址_02

提示版本1.13.0,说明已安装成功。

创建版本库目录

创建SVN版本库目录,为后面创建版本库提供存放位置,也是最后启动SVN服务的根目录。

我们在/usr路径下创建svn目录作为版本库目录。

root@192:~# cd /usr/
root@192:/usr# mkdir svn

centos查看svn仓库地址_centos查看svn仓库地址_03

创建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

centos查看svn仓库地址_版本库_04

修改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

centos查看svn仓库地址_版本库_05

配置文件详解
  • authz:权限配置文件,控制读写权限
  • passwd:账号密码配置文件
  • svnserve.conf:svn服务器配置文件

修改svnserve.conf文件

vim svnserve.conf

打开红线标注的#
去掉anon-access、auth-access、password-db、authz-db、realm几项前的注释符号“#”

centos查看svn仓库地址_svn_06

第二处

centos查看svn仓库地址_centos查看svn仓库地址_07

配置项含义:
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

centos查看svn仓库地址_配置文件_08

修改passwd文件

root@192:/usr/svn/dev/conf# vim passwd

只需在末尾添加账号和密码,格式 账号 = 密码,如user1 = 123456,可添加多个。

centos查看svn仓库地址_centos查看svn仓库地址_09

修改authz文件

root@192:/usr/svn/dev/conf# vim authz
在根目录下设置user1、user2读写权限:

centos查看svn仓库地址_centos查看svn仓库地址_10

如果用户比较多,可以使用groups形式设置分组team1,并在根目录下指定分组@team1的权限:

centos查看svn仓库地址_配置文件_11

如果想设置其他用户的权限,可以通过*设置,如设置除@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替换成你创建的版本库名称。

centos查看svn仓库地址_配置文件_12

输入passwd配置好的用户。

centos查看svn仓库地址_svn_13

Checkout completed,SVN访问成功,这就Nice了~

centos查看svn仓库地址_版本库_14

扩展

设置查看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

centos查看svn仓库地址_配置文件_15

创建管理用户权限目录

root@192:/usr/svn/p1/conf# mkdir -p /var/svn/conf
root@192:/usr/svn/p1/conf# cp authz passwd  /var/svn/conf/

centos查看svn仓库地址_svn_16

修改配置文件

修改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

centos查看svn仓库地址_配置文件_17

修改authz文件

[groups] //分组
 p1user = a,b
 p2user = c,d
 
 [/]
 * = #以上没有定义的用户都没有任何权限
 
 [p1:/] //p1的访问控制,c、d无法访问
 @p1user = rw
 
 [p2:/] //p2的访问控制,a、b无法访问
 @p2user = rw

centos查看svn仓库地址_配置文件_18

对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为服务端版本库目录

出现以下报错:

centos查看svn仓库地址_版本库_19

原因

svn服务未启动或者是启动的时候未指定svn仓库路径,svn默认仓库路径为/var/svn,所以我们需要手动指定为/home/svn/

解决方案

#ps–ef|greo svn命令查找出来svn的pid,

#kill -9 svnd的pid进程号

#svnserver –d –r /home/svn/

以上操作完成之后,不用再次重启服务(上条命令就是启动svn且指定仓库路径)。再次进行测试

出现报错:Authorizationfailed

centos查看svn仓库地址_centos查看svn仓库地址_20

检查authz文件是否出错。进行修改

再次测试:

centos查看svn仓库地址_centos查看svn仓库地址_21

显示成功取出版本

提交代码文件:
服务器上没有的文件,在客户端需要先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客户端

centos查看svn仓库地址_svn_22

centos查看svn仓库地址_centos查看svn仓库地址_23

centos查看svn仓库地址_svn_24

centos查看svn仓库地址_svn_25

centos查看svn仓库地址_svn_26

centos查看svn仓库地址_centos查看svn仓库地址_27

centos查看svn仓库地址_svn_28


centos查看svn仓库地址_版本库_29

centos查看svn仓库地址_版本库_30

centos查看svn仓库地址_svn_31

centos查看svn仓库地址_版本库_32

centos查看svn仓库地址_配置文件_33

centos查看svn仓库地址_版本库_34

URL of repository为svn服务器的版本库目录路径

Checkout directory为本地的路径

centos查看svn仓库地址_centos查看svn仓库地址_35

设置子项目权限

需求,想要要求其他员工对我们公司svn项目下面的一个目录有读写权限,其他项目没有读写权限
只需要设置俩个文件 authz passwd

我这是想设置一个成员只对这个目录有读写权限

centos查看svn仓库地址_版本库_36

首先添加账号密码 cat passwd

使用随机生成uuid当作密码
cat /proc/sys/kernel/random/uuid

centos查看svn仓库地址_版本库_37

centos查看svn仓库地址_svn_38

配置权限 cat authz

centos查看svn仓库地址_配置文件_39

清理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缓存

centos查看svn仓库地址_centos查看svn仓库地址_40