# SVN手册
## 基于docker方式搭建SVN-Server及WebSVN
### 1. 搭建
#### 拉取镜像
```shell
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo yum install docker-ce docker-ce-cli
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3690/tcp --permanent
sudo systemctl reload firewalld
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["http://hub-mirror.c.163.com","http://mirror.ccs.tencentyun.com","http://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl restart docker
sudo systemctl enable docker
```
- #### 拉取镜像
```shell
docker pull elleflorio/svn-server
```
#### 运行镜像
```shell
docker run -d --name svn-server --restart=always -v /opt/svn/data:/home/svn -p 8080:80 -p 3690:3690 elleflorio/svn-server
```
- #### 创建管理员用户
```shell
docker exec -t svn-server htpasswd -b /etc/subversion/passwd <username> <password>
```
- #### 对持久Volume添加write权限
```shell
chmod -R 777 /opt/svn/data
```
### 2.进入SVN仓库URL
- 浏览器地址栏输入http://192.168.137.40:8080/svn,此时会让你输入用户名和密码,用户密码即上面命令行创建的用户和密码,进入后就可以看到仓库列表
- 浏览器地址栏输入http://192.168.137.40:8080/svnadmin,第一次进入会进行后台的配置管理
| 配置名称 | Value |
| :--------------------------------------------------- | :---------------------------------------- |
| Subversion authorization file | /etc/subversion/subversion-access-control |
| User authentication file (SVNUserFile) | /etc/subversion/passwd |
| User view provider type | passwd |
| User edit provider type | passwd |
| Group view provider type | svnauthfile |
| Group edit provider type | svnauthfile |
| Repository view provider type | svnclient |
| Repository edit provider type | svnclient |
| Parent directory of the repositories (SVNParentPath) | /home/svn |
| Subversion client executable | /usr/bin/svn |
| Subversion admin executable | /usr/bin/svnadmin |
**以上配置填写好后进行test测试,Test passed后再进行保存配置信息,特别注意Parent directory of the repositories (SVNParentPath)一定要Test passed**
### 3.创建仓库及仓库授权
- 进入http://192.168.137.40:8080/svnadmin/repositorycreate.php页面进行创建仓库,输入仓库名称、选择仓库类型(默认是文档系统)及预设仓库结构,点击create
- 进入http://192.168.137.40:8080/svnadmin/accesspathslist.php页面选择已创建的仓库进行用户或组及操作权限(只读及读写)授权
- 授权完成后就可以进行仓库内容VCS了