安装SVN
先输入
svn --version
如果没有安装svn,则会提示你安装命令,根据提示输入
sudo apt install subversion
在这一步,可能会遇到一个问题:无法定位软件包。
解决方法:更新一下源,方法可参考本人的另一篇文章 ubuntu修改源 ,最后一步别忘了,要输入 sudo apt uptate 才会起效果,重启倒是不必要了。
最后,再用 svn --version 验证一下是否安装成功。
最简单的用法
1.新建一个文件夹:
sudo mkdri /opt/svn/test_rep
2.创建SVN版本库
cd /opt/svn/test_rep
sudo svnadmin create ./
然后就可以看到当前目录下多了一些文件,这些和window下创建一个库生成的文件是一样的,如下 :
一个SVN库就这么简单建好了。
conf:存放版本库所用配置文件的目录
db:版本数据存储目录
hooks:存放版本库勾子目录
locks:存储库锁目录,用来跟踪库的访问者
3.启动svn服务:
sudo svnserve -d -r /opt/svn/test_rep
然后在主机这边,输入IP后,不用输入库目录或名称,就可以checkout 一个库了。
上面的只是最基本的功能,因为默认是有库是有读权限的,所以当什么都不配置的时候,是可以把这个库chechout下来的,但果,如果要进一步的功能,就要详细看接下来的进阶操作了。
参考: Ubuntu上svn仓库的搭建详解_Aaron_Run的博客-CSDN博客_ubuntu 创建svn仓库
参考: Ubuntu 搭建SVN服务器(SVN Server)_卓力的博客-CSDN博客_ubuntu搭建svn服务器
停止服务器
killall svnserve
查看是否启动成功
ps aux | grep svnserve
看到以上,就表示启动成功了。
同理,检查是否关闭则反之。
(修改完配置文件后,其实,不用重启,也会马上起作用)
配置文件夹
conf目录下有几个配置文件:
.
svnserver.conf:subversion的配置文件
passwd:subversion账户密码配置文件
hooks-env.tmpl:钩子函数的临时文件
authz:subversion账户权限配置文件
注意:在修改配置之前,请先备份配置文件,这是一个好习惯。
svnserver.conf配置
svnserve.conf主要配置subversion整体权限和读取的对应文件
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
anon-access:控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:read
auth-access:控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 默认值:write
password-db:指定账户密码配置文件名,通过该文件可以实现鉴权访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 默认值:passwd
authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 默认值:authz
realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)
这次只改了3个值:
anon-access = none
auth-access = write
password-db = passwd
passwd文件配置
例如:配置多个用户和对应的密码:
[users]
admin = admin
aaron = 123456
authz文件配置
该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。
[groups]配置段中配置行格式如下:
<用户组> = <用户列表>
版本库路径权限段的段名格式如下:
[<版本库名>:<路径>]
在编辑authz文件时,可以先将用户进行分组,再设置当前分组权限
注意:分组中的账户必须在passwd中存在,多个用户分为一个组时,只需要用逗号隔开
例如:
system = admin,aaron
[repository:/]
@system = rw
* =
其中:[repository:/]表示当前仓库的根目录,@system = rw表示分组system中的admin账户和aaron账户所拥有的权限是读写当前仓库先的更路经,* =表示非验证分组的账户没有任何权限
注意:后期添加目录权限时需要先到仓库中创建提交目录之后再配置该目录权限,如果是先在authz文件中配置了目录权限,再到仓库中创建该目录时,提交该仓库会报错:Access denied
原文如下:
加入的内容为:
[groups]
admin_groups = aaaa
[repository:/]
@admin_groups = rw
* = rw
Subversion启动服务
命令格式:svnserve -d -r 目录 --listen-port 端口号
-r: 配置方式决定了版本库访问方式
--listen-port: 指定SVN监听端口,不加此参数,SVN默认监听3690
由于-r 配置方式的不一样,SVN启动就可以有两种不同的访问方式
方式一,单库启动
r直接指定到版本库(称之为单库svnserve方式)
# svnserve -d -r /opt/svn/repository
指定启动一个版本库,在这种情况下,一个svnserve只能为一个版本库工作
authz配置文件中对版本库权限的配置应这样写:
[groups]
admin=user1
dev=user2
[/]
@admin=rw
user2=r
使用类似这样的URL:svn://192.168.0.1/即可访问repository版本库
方式二,多库启动(只用这个)
指定到版本库的上级目录(称之为多库svnserve方式)
-d:表示在后台运行
-r:指定服务器的根目录(多个库的上一级目录路径)
# svnserve -d -r /opt/svn
查看是否启动成功
ps aux | grep svnserve
看到以上,就表示启动成功了。
到这里就行了完成了, 相对于单库启动,多库启动命令的差别在于多库启动的是库的上一级目录。
试了一下,如果在新建一个库,只要把旧库复制一份,改个文件名就行,再重启svn服务器,就好了,只不过,这两个库都要分别输入密码去登录。
猜测:conf这个文件是可以放在众多库的根目录,这样,当新建一个库时,就不需要把旧库的conf文件夹复制进来,因为库根目录下的conf文件会作用于所有库。如下:
实际验证,没有效果。
不过,win7下创建的svn库,直接复制进ubuntu里,也是可以直接使用的,当然,如果要加密码,只要修改conf文件里的内容就行,或者直接复制旧的进来。当然,修改前还是要备份一下的。
下面这一小步骤应该是非必要的,具体没看懂,待日后再研究(可能是批量管理库的方法吧)。
指定版本库的上级目录,这种情况,一个svnserve可以为多个版本库工作
authz配置文件中对版本库权限的配置应这样写:
[groups]
admin=user1
dev=user2
[repository:/]
@admin=rw
user2=r
#
[repository01:/]
@admin=rw
user2=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录
使用类似这样的URL:svn://192.168.0.1/repository即可访问repository版本库
注意:该中启动方式的访问URL中需要添加需要访问的仓库
1.虚拟机改为仅主机模式就行。把屏保和锁屏去掉,否则一屏保就连不上了。
2.conf文件配置完后改为只读模式,这样的复制密码时不会失误改错。
删除旧的验证密码
比如,你在电脑上登陆了远程库,这里,远程库的用户名和密码改了,这该这么办?因为这里只会一直提示验证错误,却不会提示你去从新输入用户名及密码。不用慌,在SVN的设置里是有清空先前验证信息的功能的,如下: