svn服务端和客户端使用

0.什么是svn

SVN是什么

Subversion如何运作

SVN最初被设计为命令行界面。这意味着您将打开终端并键入文本命令。

要使Subversion工作,SVN设置需要两个主要元素:

1.该服务器,它具有一切源文件的所有版本

2.一个文件的本地副本,这是您的计算机上。

您计算机上的文件称为工作文件。这些是每个用户进行编辑的文件。然后,用户将其更改提交到SVN服务器,该服务器也称为存储库

每次用户提交更改时,SVN都会通过创建新版本来管理和记录它。与大多数版本控制系统一样,用户通常使用最新版本。但是如果需要旧版本,则可以恢复到早期版本。

什么是SVN服务器

SVN服务器包含所有源文件以及文件的所有版本。在SVN领域,服务器称为存储库。因此,SVN服务器和SVN存储库是一回事。

文件的本地副本(存储在您的计算机上)称为工作副本

SVN是分布式还是集中式

版本控制系统大致可分为两类:分布式版本控制系统(DVCS)集中式版本控制系统(CVCS)

SVN是一个集中式版本控制系统

集中式版本控制系统意味着版本历史存储在中央服务器中。当开发人员想要对某些文件进行更改时,他们会将文件从该中央存储库拉到自己的计算机上。在开发人员进行更改后,他们会将更改的文件发送回中央存储库。

使用Helix Core进行可扩展的集中式版本控制系统。或者使用Helix4Git进行基于Git的分布式工作流程。

SVN面临的挑战

SVN有一个繁琐的分支模型

关于SVN最常见的抱怨是它繁琐的分支模型。分支允许您同时处理代码的多个版本。在SVN中,分支被创建为存储库中的目录。许多开发人员不喜欢这种目录结构。但挑战并不止于此。

SVN 1.6版引入了一个名为树冲突的概念。树冲突是由目录结构的变化引起的冲突,并且它们经常发生。由于SVN不允许您在发生树冲突时提交更改,因此这增加了在SVN中实施分支策略的复杂性。

SVN要求您手动解决冲突

合并是开发人员经常抱怨SVN的另一个大问题。如果您正在使用历史记录来进行一组更改并进行提交,则会进行另一项更改(即线性)并提交,合并将很容易。

当您有两个或更多开发人员在相同的代码库上工作并且您需要合并时,事情会变得复杂。在这种情况下,SVN失败,开发人员需要手动解决冲突,这会浪费数小时的开发人员时间。

为何使用SVN

几年前,Git和其他商业版控制系统已经超越了SVN。但SVN仍有两个原因:成本和惯性

成本: SVN是开源的,这意味着它是“免费的”。

惯性:一旦构建了大型代码库,就很难切换VCS。SVN自2004年以来一直存在,采用它的组织拥有数百万行代码。

1.服务器规格

ip/主机名规格说明
11.0.1.48/node31c2G50Gsvn服务端

2.基础环境配置

# 关闭防火墙 和 selinux

3.svn服务端部署

yum部署svn

# rpm 安装 subversion
[root@node3 ~]# yum install -y subversion

版本验证

[root@node3 ~]# svnserve --version
svnserve, version 1.7.14 (r1542130)
   compiled Sep 30 2020, 17:44:04

版本库创建

[root@node3 ~]# mkdir /opt/svn
[root@node3 ~]# cd /opt/svn/
[root@node3 svn]# svnadmin create csp
[root@node3 svn]# ll csp
total 8
drwxr-xr-x 2 root root  54 Mar 11 06:17 conf
drwxr-sr-x 6 root root 233 Mar 11 05:57 db
-r--r--r-- 1 root root   2 Mar 11 05:57 format
drwxr-xr-x 2 root root 231 Mar 11 05:57 hooks
drwxr-xr-x 2 root root  41 Mar 11 05:57 locks
-rw-r--r-- 1 root root 229 Mar 11 05:57 README.txt
# csp包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立

服务svnserve.conf配置

# 修改svnserve.conf 文件
[root@node3 svn]# vim conf/svnserve.conf
# 在general 下面➕
# 禁止匿名账号访问 
anon-access = none 
# 开启授权用户具有读写权限
auth-access = write 
# 指定用户口令文件
password-db = passwd 
# 指定权限配置文件
authz-db = authz 
realm=/opt/svn 表示将/opt/svn目录做为SVN服务器的工作目录
# 以上语句都必须顶格写,左侧不能留空格,等号两侧一定要空格否则会出错

用户密码passwd配置

# 修改passwd文件
[root@node3 svn]#vim conf/passwd
[users]
csp = csp
# 以上语句都必须顶格写,左侧不能留空格,等号两侧一定要空格否则会出错

权限控制authz配置

[root@node3 svn]#vim conf/authz
[aliases]
[groups]
[/]
csp = rw
# 以上语句都必须顶格写,左侧不能留空格,等号两侧一定要空格否则会出错

启动svn

[root@node3 conf]# svnserve -d -r /opt/svn
# 查看 svn进程
[root@node3 conf]# ps -ef |grep svn
root       1676      1  0 06:19 ?        00:00:00 svnserve -d -r /opt/svn
root       1678   1458  0 06:19 pts/0    00:00:00 grep --color=auto svn
# 查看 svn 服务端口
[root@node3 conf]# ss -tunlp|grep svn
tcp    LISTEN     0      7         *:3690                  *:*                   users:(("svnserve",pid=1676,fd=3))

停止重启SVN

[root@node3 csp]# ps -ef |grep svn
root       1676      1  0 06:19 ?        00:00:00 svnserve -d -r /opt/svn
root      11662   1458  0 07:24 pts/0    00:00:00 grep --color=auto svn
# kill svn 进程
[root@node3 csp]# kill -9 1676
[root@node3 csp]# ps -ef |grep svn
root      11664   1458  0 07:25 pts/0    00:00:00 grep --color=auto svn

设置svn服务开机自启

[root@node3 ~]# vi /etc/sysconfig/svnserve
# OPTIONS="-r /opt/svn"
# 将OPTIONS里的值改为当前服务器上svn 版本库的目录
# svn 服务开机自启
[root@node3 ~]# systemctl enable svnserve --now
# 重启服务 验证 svn 是否 开机自启

image-20240311193108906

4.svn客户端 安装和使用

svn客户端安装

在Windows常用的客户端为TortoiseSVN,下载地址Downloads · TortoiseSVN,根据电脑情况选择相应的安装包。

image-20240311193548306

image-20240311193726010

image-20240311193730714

image-20240311193737059

image-20240311193742682

svn客户端使用

在本地新建一个文件夹(假设为project)用于存放下载的文件

右键点击该文件夹,会出现如下窗口,点SVN Checkout

image-20240312090415129

可以当前目录看到svntest 目录

创建test.md 文件 输入 svn test文件 然后上传 到 svn 服务上

svn://11.0.1.48:3690/csp

image-20240312091034954

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值