引言: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 | version: '3' |
命令行
进入容器
1 | docker exec -it nap3d-svn-server sh |
创建存储库:将在/var/opt/svn
下创建文件夹nap3d_test
作为存储库
存储库的名称不能带-
,svn会认为其不是一个合法的仓库名,可以创建,但是在获取版本信息时,根本无法识别!
1 | svnadmin create nap3d_test |
资源仓库配置conf/svnserve.conf
1 | anon-access = none # 匿名用户不可读写,也可以设置为只读 read |
配置账号密码conf/passwd
1 | [users] |
配置账户权限conf/authz
1 | [groups] |
拉取svn仓库
1 | svn co svn://127.0.0.1:3690/nap3d_test |
使用web管理平台:svnWebUI
docker-compose
这个项目提供了svn服务器后台和相应的web管理系统,也打包有docker镜像便于部署使用。
docker-compose.yml
1 | version: '3' |
- 3690是svn服务器的端口
- 6060是管理后台的端口
界面演示
个人信息及仓库权限查看
系统配置:控制svn服务器启停、导出导入数据等。例如需要修改协议,就需要先停止服务,然后修改协议,再启动服务
仓库管理:在这里创建、删除仓库,分配用户权限
用户和小组管理
忘记密码
进入容器,执行命令
1 | cd /home |