使用docker搭建版本控制系统-SVN

news2024/12/24 21:40:29
  • 作者简介:一名Linux运维工程师,主要分享自己遇到的学习过程与遇到的问题。 

  •  座右铭:选择时尽心,行动时尽力,坚持时无怨,结束时无悔。

  • 个人公众号:早九晚十二,欢迎大家留言交流。

  • 个人主页:早九晚十二​​​​​​

请添加图片描述

文章目录

    • 认识SVN
      • 优势
        • 1.存储
        • 2.速度
        • 3.安全性
    • 环境要求
    • 搭建过程
      • 查找svn镜像
      • 下载 garethflowers/svn-server
      • 查看images
      • 启动容器
      • 查看容器
      • 进入容器内部,进行相关配置
        • 登录容器
        • 创建名为test的svn资源仓库
        • 查看目录结构
      • 配置修改
        • 基础配置修改
        • 权限文件修改
        • 重启容器
      • 安装客户端测试
        • Windows验证
        • Liunx验证
      • 查看资源仓库

认识SVN

在这里插入图片描述

SVN的全称是Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。
SVN采用客户端/服务器体系,项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后在此基础上,每个开发人员可以在自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。
SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

优势

1.存储

SVN服务器既具有CVS所具有数据储存的优点,像是信息资源存储后会形成资源树结构,便于存储的同时,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。

2.速度

与人们初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。

3.安全性

SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。

环境要求

SVN与CVS一样,也是一个跨平台的软件,支持大多数常见的操作系统。例如Windows,Linux等。
本文主要是用Linux做搭建环境。

搭建过程

OS:CentOS Linux release 7.9.2009 (Core)
docker:Docker version 19.03.14, build 5eb3275
如果不清楚如何安装docker,可查看 直达链接

查找svn镜像

[root@localhost ~]# docker search svn
NAME                           DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
garethflowers/svn-server       A simple Subversion server, using `svnserve`.   81                                      [OK]
elleflorio/svn-server          Lightweight Docker container running an SVN …   76                                      
krisdavison/svn-server         A pre-configured SVN source control server.     28                                      
svnedge/app                    SVN Edge Official Release Image                 20                                      
paulovsm/svn-server            Subversion + Apache + SVNAdmin                  10                                      
nbrun/svn-client               Old SVN clients to work with old svn reposit…   5                                       
ryandocker/svn2git             Docker wrapper around the svn2git tool.         4                                       
atlassian/fisheye              Fisheye: search, monitor, and track across S…   4                                       
jgsqware/svn-client            A Simple SVN client based on Alpine             3                                       [OK]
polinux/svn2git                svn2git in a docekr (Alpine)                    2                                       [OK]
aneesv/svn-client              Svn Client                                      2                                       [OK]
yodamad/svn2git                Tool to help migration from SVN to Gitlab       2                                       
ksaito1125/svn-resource-type   concourseのresource-typeです。 Subversionリ…         1                                       [OK]
vertigo/svn2git                A minimalist container to use the (awesome)1                                       [OK]
svnovikov/test                                                                 0                                       
svnedge/devbuild               SVN Edge Development Build                      0                                       
takanomasaki/svn-resource                                                      0                                       
timimages/svn                                                                  0                                       
svnbadrinath/hello_world                                                       0                                       
marouen13/svn-mar              an svn image                                    0                                       
0urob0r0s/svndaemon            Container agent for a simple, repo-based con…   0                                       
yukinagae/svn-to-git                                                           0                                       [OK]
crazymax/svn2git-mirror        Mirror SVN repositories to Git periodically     0                                       
kurento/svn-client                                                             0                                       
cycletime/svn-test             SVN Server with Test Data         

下载 garethflowers/svn-server

[root@localhost ~]# docker pull docker.io/garethflowers/svn-server
Using default tag: latest
latest: Pulling from garethflowers/svn-server
2408cc74d12b: Pull complete 
f454a8fbcebf: Pull complete 
3c76ba5eee8a: Pull complete 
Digest: sha256:e97746b18bf7eddbfc5024221212ceb18436addc59adc711a3b13f29fe0dce2a
Status: Downloaded newer image for garethflowers/svn-server:latest
docker.io/garethflowers/svn-server:latest

查看images

[root@localhost ~]# docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
garethflowers/svn-server                 latest              2a8481254cd2        6 months ago        14.7MB

启动容器

#先创建宿主机的数据存储目录
[root@localhost ~]# mkdir /usr/local/data
docker run --restart always --name svn -d -v /usr/local/dev/svn/repo:/var/opt/svn -p 3690:3690 garethflowers/svn-server
#启动容器
[root@localhost ~]# docker run --restart always --name svn -d -v /usr/local/data/:/var/opt/svn -p 3690:3690 garethflowers/svn-server
8a9304411bf397bcadcbf965eace9ab3db7636480d7f83a87e3ae838e5b4e68f
  • --restart always:代表自启动
  • --name svn:代表容器名是svn
  • -d:后台启动
  • -v /usr/local/data/:/var/opt/svn:挂载数据目录
  • -p 3690:3690:将容器内部3690映射到宿主机3690

查看容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS                   PORTS                                            NAMES
8a9304411bf3        garethflowers/svn-server                               "/usr/bin/svnserve -…"   2 minutes ago       Up 2 minutes (healthy)   0.0.0.0:3690->3690/tcp                           svn

进入容器内部,进行相关配置

登录容器

[root@localhost ~]# docker exec -it svn sh

创建名为test的svn资源仓库

/var/opt/svn # svnadmin create test

查看目录结构

/var/opt/svn/test # ls /var/opt/svn/test/
README.txt  conf        db          format      hooks       locks

配置修改

进入刚刚创建的test资源仓库

/var/opt/svn #  cd /var/opt/svn/test/conf
/var/opt/svn/test/conf # 

基础配置修改

/var/opt/svn/test/conf # vi svnserve.conf
/var/opt/svn/test/conf # cat svnserve.conf |grep -rn -v ^#

19:anon-access = none
20:auth-access = write
27:password-db = passwd
36:authz-db = authz
52:realm = test

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

权限文件修改

密码文件修改

/var/opt/svn/test/conf # vi passwd
[users]
# harry = harryssecret
# sally = sallyssecret
admin = test123456

鉴权文件修改

/var/opt/svn/test/conf # vi authz
[groups]
admin = admin   #前面是用户组admin,=后面的为用户admin

[test:/]
@admin = rw  #表示对test根目录有读写权限

[test:/test1]
@admin = rw  #表示对test目录下的test1有读写权限

重启容器

/var/opt/svn/test # exit
[root@localhost ~]# docker restart svn
svn

安装客户端测试

Windows验证

tortoisesvn官网:https://tortoisesvn.net/downloads.html
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
自定义文件路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入设置的账号密码
在这里插入图片描述

在这里插入图片描述

Liunx验证

安装svn工具

[root@localhost ~]# yum -y install svn

查看资源仓库

[root@localhost ~]# svn checkout svn://192.168.6.231:3690/test/test1
Authentication realm: <svn://192.168.6.231:3690> test
Password for 'root': 
Authentication realm: <svn://192.168.6.231:3690> test
Username: admin
Password for 'admin': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.6.231:3690> test

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
Checked out revision 1.

码字不易。如果文章对您有希望的话,请三连支持一波。
如有问题,欢迎留言,一起探讨,感谢。
也可关注下方公众号,看到留言后会第一时间回复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day41|● 343. 整数拆分 ● 96.不同的二叉搜索树

题目链接:343. 整数拆分 1.代码 暴力做法&#xff1a;n前进行组合搜索得出二维数组result存放结果&#xff0c;然后对里面的元素进行乘积&#xff0c;谁最大就是结果 2.递归做法 class Solution { public:int integerBreak(int n) {vector<int>f(n 5, 0);f[2] 1;for …

LinkedList链表知识点概括

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望2023年迎来更优秀的自己&#xff01;希望跟大家一同进步~ 文章目录 前言 一、链表的基本概念 二、面试题实战 前言 顺序表/ArrayList:…

数据湖之Hudi基础:核心原理

继续Hudi核心概念 参考官网描述与尚硅谷hudi公开资料 文章目录基本概念时间轴TimeLine1.Instants action 在表上执行的操作类型2.Instant time3.State两个时间概念文件布局&#xff08;FileLayout&#xff09;索引 Index表类型&#xff08;Table Types&#xff09;Copy On Writ…

echarts:实现3D地图版块叠加动效散点效果

需求描述 如下图所示&#xff0c;展示3D效果的地图版块&#xff0c;并叠加显示动效散点&#xff1a; 实现思路 首先是3D地图版块效果的实现&#xff0c;可以参考广州3D地图&#xff1b;而动效散点的实现&#xff0c;可以参考地图发散分布。 这里再提一个经过尝试并不行的思…

【mmdeploy】mmseg转ONNX/TensorRT,附推理代码

目录 1.关于mmdeploy 2.环境安装 2.1预编译安装&#xff08;Linux-x86_64, CUDA 11.x, TensorRT 8.2.3.0&#xff09;&#xff1a; 2.2预编译安装&#xff08;Linux-x86_64, CUDA 11.x, ONNX&#xff09;&#xff1a; 3.mmseg工程torch转onnx 4.使用onnx模型文件进行推理…

Dubbo框架学习(第一章Dubbo简介)

由于在微服务领域有两大框架统治&#xff0c;一个是springCloud的全家桶&#xff0c;一个是Dubbo。我用Dubbo比较少&#xff0c;所以也是学习状态。Dubbo框架学习&#xff0c;资料来源于cn.dubbo.apache.org。第一章Dubbo简介Apache Dubbo 是一款 RPC 微服务框架&#xff0c;提…

字节跳动青训营--前端day2

文章目录前言一、css1. css的组成2. css三种使用方式3.css的工作方式二、 css选择器Selector1. 选择元素的方式2. 伪类&#xff08;pseudo-classes&#xff09;2.1 状态伪类2.1 结构伪类3.通过组合选择元素3.1 直接组合3.2 元素组合的拓展4. 选择器的特异度&#xff08;Specifi…

小型水库雨水情测报和安全监测解决方案

平升电子小型水库雨水情测报和安全监测解决方案辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能&#xff0c;有效提升了雨水情信息的时效性和准确度&#xff0c;为保…

jmeter 使用beanshell 编写脚本

一、介绍 1.1 介绍 BeanShell是一个小型的、免费的、可嵌入使用Java编写的具有对象脚本语言特性的Java源码解释器。 动态执行所有Java语句、Java代码片段以及弱类型Java和附加的脚本的便利 透明地访问所有Java对象和API 四种运行模式&#xff1a;命令行、控制台、Applet、远…

数据结构专题 -- 哈希思想详解

代码会存放在&#xff1a; https://github.com/sjmshsh/Data-Struct-HandWriting 通过阅读本篇文章&#xff0c;你可以学到&#xff1a; 哈希思想及其本质使用C实现简易的哈希表哈希思想的应用 位图布隆过滤器哈希切分极致升华&#xff0c;海量数据处理面试题 拓展 – 一致性…

二叉树的应用——哈夫曼树

哈夫曼树与哈夫曼编码 1.树的带权路径长 百分制成绩转五级制的算法流程图&#xff08;A/B/C/D/E的人数分别为6/18/21/36/19&#xff09;带权路径长 路经长 x 权重 树的带权路经长&#xff1a;所有叶结点的带权路径长度之和。 例如&#xff1a; &#xff08;a&#xff09;图…

[ 攻防演练演示篇 ] 利用谷歌 0day 漏洞上线靶机

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

橘子学kafka之基础命令使用

本系列主要开始处理关于kafka的一些技术知识点&#xff0c;尽量会以代码和实际命令为主要表达形式来做表现。 本文主要是关于如何在客户端使用命令做一个描述&#xff0c;其实我本来不想写的&#xff0c;但是今天在公司有同事居然不会&#xff0c;所以我觉得还是描述一下。而且…

贪心算法合集

95 分糖果问题 思路非常简单&#xff0c;和题解一模一样&#xff1a; 用数组存每个人对应的糖果数量&#xff0c;初始为1 从左到右遍历&#xff0c;如果比左边的大&#xff0c;1再从右到左遍历&#xff0c;如果比右边的大&#xff0c;1 import java.util.*;public class Solu…

录屏大师电脑版推荐(一键录制声画同步的视频)

很多小伙伴使用电脑多年&#xff0c;却不知道电脑有录屏功能。想要对电脑屏幕进行录制&#xff0c;只需在电脑上安装一个录屏大师。那有没有录屏大师电脑版推荐呢&#xff1f;在试用了多款电脑录屏大师之后&#xff0c;小编今天给大家推荐一款可以一键录制声画同步视频的录屏大…

使用Python为二年级的学生批量生成数学题

文章目录一.使用Python为二年级的学生批量生成数学题1.1 背景二.解决思路及其代码三.排版及其打印四.本文源码一.使用Python为二年级的学生批量生成数学题 1.1 背景 我妹妹今年上二年级&#xff0c;她的老师今天给他们布置了一项作业&#xff1a; 从今天起到开学&#xff0c;…

ENSP的AR40问题解决

AR40以及其他相关问题都可以参考此方法&#xff0c;都已经可以正常使用 现在有enspAR40问题的同学有救了&#xff0c;ensp的AR40问题困扰了我很长时间&#xff0c;根据官方的问题解决文档没有解决&#xff0c;反正就是之前的所有方法都没有用&#xff0c;也不是都没有用&#x…

初读《编程之美》就想秀一下,结果还翻车了

文章目录 一、前言 二、我的思路 三、Code 四、翻车现场 五、后续问题 一、前言 ———如何写一个短小的程序&#xff0c;让 Windows 的任务管理器显示CPU的占用率为50%? 这道有趣的面试题我是这两天从《编程之美》电子版中看到的&#xff0c;看意思就是邹老师在微软对一…

入门postgre sql(PG的下载和安装,包括普通用户源码构建的安装方式)

目录PG的下载安装1、Windows 上安装2、Linux上安装有root权限的安装无root权限的安装PG的下载安装 点击这里&#xff0c;了解pg 1、Windows 上安装 (1)下载安装 访问官网下载地址 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载最新发布的Po…

3.kafka-3.生产者,消费者

文章目录1.个性化配置&#xff0c;增加吞吐量2.发送事务消息3.消费组手动提交offset指定offset位置进行消费指定时间消费当新增消费者&#xff0c;或者消费组时&#xff0c;如何消费漏消息和重复消息如何解决消费解压问题1.个性化配置&#xff0c;增加吞吐量 private static vo…