0%

SVN服务端部署

  1. 引言:SVN对比Git
  2. 纯svn服务器
    1. docker
    2. docker-compose
    3. 命令行
  3. 使用web管理平台:svnWebUI
    1. docker-compose
    2. 界面演示
    3. 忘记密码

引言:SVN对比Git

SVN: Apache Subversion是Apache许可下的开源软件和版本控制系统

Git: Git是Linus Torvalds再2005年开发的开源分布式版本控制系统,强调速度和数据完整性

SVN是集中式管理的版本控制器,而Git是分布式管理的版本控制器,这是两者之间最核心的区别。
SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
Git每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来,每一次的提取操作,实际上都是一次对代码仓库的完整备份。

SVN拥有全局版本号,Git没有。

Git优点:

  • 适合分布式开发(对于联系紧密的部门而言优势不大)
  • 公共服务器压力和数据量都不会太大(对于局域网服务器而言优势不大)
  • 代码存储、提交速度快,灵活(但使用较麻烦)

Git缺点:

  • 代码保密性差,没有权限控制(致命缺点!)

SVN优点:

  • 集中式管理,使用方便
  • 统一权限控制
  • 代码一致性高

SVN缺点:

  • 对服务器性能要求高(适合内网单机小规模部署)
  • 分支管理不灵活
  • 不是本地化操作,如果要删除分支,需要所有人都删除(容易造成数据丢失)
  • 提交代码需要联网

纯svn服务器

这是一个纯粹的svn服务器,后台管理通过进入容器后的命令行进行。

docker

1
docker run --restart always --name nap3d-svn-server -d -v D:\codes\docker\svn-server-test\svn-server-data:/var/opt/svn -p 3690:3690 garethflowers/svn-server

docker-compose

1
2
3
4
5
6
7
8
9
10
version: '3'
services:
nap3d-svn-server:
container_name: nap3d-svn-server
image: garethflowers/svn-server
ports:
- 3690:3690
volumes:
- ./svn-server-data:/var/opt/svn
restart: always

命令行

进入容器

1
docker exec -it nap3d-svn-server sh

创建存储库:将在/var/opt/svn下创建文件夹nap3d_test作为存储库

存储库的名称不能带-,svn会认为其不是一个合法的仓库名,可以创建,但是在获取版本信息时,根本无法识别!

1
svnadmin create nap3d_test

资源仓库配置conf/svnserve.conf

1
2
3
4
5
anon-access = none  # 匿名用户不可读写,也可以设置为只读 read
auth-access = write # 授权用户可读写
password-db = passwd # 密码文件路径,相对于当前目录
authz-db = authz # 访问控制文件
realm = /var/opt/svn/nap3d_test # 认证命名空间,会在认证提示界面显示,并作为凭证缓存的关键字,可以写仓库名称

配置账号密码conf/passwd

1
2
[users]
admin = 123456

配置账户权限conf/authz

1
2
3
4
5
6
[groups]
owner = admin
[/] # / 表示所有数据
admin = rw # 管理员具有所有仓库的读写权限
[nap3d-test:/] # 以下用户在仓库nap3d_test的所有目录有相应权限
@owner = rw # owner组下所有用户具有读写权限

拉取svn仓库

1
svn co svn://127.0.0.1:3690/nap3d_test

使用web管理平台:svnWebUI

项目地址:https://github.com/cym1102/svnWebUI

docker-compose

这个项目提供了svn服务器后台和相应的web管理系统,也打包有docker镜像便于部署使用。

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'
services:
nap3d-svn-web-ui:
container_name: nap3d-svn-web-ui
image: cym1102/svnwebui:latest
ports:
- 3690:3690
- 6060:6060
volumes:
- ./svnWebUI:/home/svnWebUI
restart: always
# environment:
# - BOOT_OPTIONS=--server.port=8007
  • 3690是svn服务器的端口
  • 6060是管理后台的端口

界面演示

个人信息及仓库权限查看

image-20241213131944429

系统配置:控制svn服务器启停、导出导入数据等。例如需要修改协议,就需要先停止服务,然后修改协议,再启动服务

image-20241213132037969

仓库管理:在这里创建、删除仓库,分配用户权限

image-20241213132136642

用户和小组管理

image-20241213132216238

image-20241213132239892

忘记密码

进入容器,执行命令

1
2
cd /home
java -jar svnWebUI.jar --project.home=/home/svnWebUI/ --project.findPass=true