‍Subversion是一种集中式的版本控制系统,一般被简称为SVN。作为目前可用的众多版本控制选项之一,SVN依旧存在着分支功能弱、集中式导致服务器压力大等问题。
如果您的需求已经超过SVN所提供的功能范围应该怎么办?龙智将在系列文章中为您提供其他版本控制软件的实践参考。我们将从为什么使用SVN、命令备忘录清单、托管储存库、如何使用客户端等角度对比Perforce
Helix Core、SVN与Git,让您能够深入了解各个版本控制软件的优缺点。
作为DevSecOps研发安全运营一体化解决方案供应商,龙智持续关注DevSecOps领域的动态与发展,集成世界主流工具,帮助企业实现研发安全运营一体化。

Subversion是目前可用的众多版本控制选项之一。Subversion是一种集中式版本控制系统,用于管理版本化文件,如源代码。它通常缩写为SVN。

Subversion的定义

Subversion用途是什么?

Subversion用于维护项目的当前版本和历史版本。它是一个开源的集中式版本控制系统。它是根据Apache授权的,也被称为软件版本修订控制系统。

什么是SVN?
SVN代表Subversion。所以,SVN和Subversion是一样的。SVN用于管理和跟踪跨项目的代码和资产的更改。

Subversion还在被使用吗?
Subversion曾经是最流行的系统之一,但 受欢迎程度正在逐渐下降。但是,其中仍然存储了数百万行。它甚至继续被积极维护,尽管是由一个小型开源社区维护的。

什么是SVN储存库?
SVN储存库是指包含完整更改历史的文件集合。

Subversion (SVN) 是分布式版本控制系统吗?

SVN实际上是一个集中的版本控制系统。它不同于分布式系统,比如 Git。

SVN 服务器解释

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

Subversion工具

什么是Subversion工具?
有许多常用的Subversion工具和客户端。例如,TortoiseSVN 是最流行的 Subversion工具之一。

您还可以考虑托管Subversion的工具,例如Helix TeamHub。

Subversion工具是如何工作的?
SVN最初被设计为命令行界面。这意味着您需要打开终端并输入文本命令。
要使Subversion正常工作,SVN设置需要满足两个主要条件:

  • 拥有所有源文件的所有版本的服务器
  • 确保文件的本地副本存储于您的计算机中

存储于计算机中的文件称为工作文件,用户可以对这些文件进行编辑。然后,用户将变更后的文件提交至SVN服务器。

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

你应该在SVN中使用版本控制吗?

使用SVN进行版本控制很流行。但这对您的团队来说是正确的选择吗?以下是您在使用SVN进行版本控制时将面临的一些挑战。

SVN有一个繁琐的分支模型
SVN繁琐的分支模型是最受用户诟病的问题。SVN分支模型允许您同时处理多个版本的代码。在SVN中,分支被创建为为服务器内部的目录,很多开发人员不喜欢这种目录结构。但挑战不止于此。

SVN1.6版引入了一个称为树冲突的概念。树冲突是因目录结构变更而引起的冲突,并且会经常发生。由于SVN不允许您在发生树冲突时提交变更信息,所以这增加了在SVN中实现分支策略的复杂性。

SVN需要连接到中央储存库
为了提交更改,SVN要求您连接到中央储存库。

在这里,不得不提到一个流传已久的关于版本控制的说法:“尽早提交;经常提交”。

考虑到这一点,使用SVN而不连接中央储存库是毫无意义的。例如,如果您进行离线编码,例如在飞行期间,SVN不允许您在恢复连接之前提交到中央储存库。
如果您有多个存储库,则这一连接过程会变得更加复杂。

SVN需要手动解决冲突
合并是SVN被开发人员所诟病的另一重大问题。如果您正在处理一个历史记录,其中一组进行了变更并提交,然后进行了另一变更(即线性变更)并提交,则合并将会非常容易实现。

当两名或更多的开发人员在同一个代码库上工作,并且需要合并时,事情就会变得复杂起来。在这种情况下,SVN合并失败,开发人员需要手动解决冲突,这一手动解决过程可能需要花费数个小时,浪费了开发人员的宝贵时间。

那么,为什么要使用Subversion?

SVN会带来一些挑战。那么,为什么依然使用SVN?两大的原因:成本和惯性。

  • 成本:SVN是开源的,这意味着它可以“免费使用”。进一步了解SVN的实际成本。
  • 惯性:一旦建立了数据规模庞大的代码库后,就很难切换VCS。SVN自2004年问世以来,已有很多企业利用SVN管理数百万行代码信息。

Subversion是成熟的工具吗?
如果您的需求已经超过SVN所提供的功能范围,Perforce可为您提供企业级版本控制软件Helix Core,让您无限制地扩展。

Perforce Helix Core是集中式版本控制工具,具有SVN所有优点,并且功能强大,可以轻松解决问题。
您将获得:

  • 一个集中的服务器,创建一个单一事实来源。
  • 易于使用的工具。
  • 高效且强大的分支管理功能。
  • 易于提交更改,还可以跨多个存储库提交更改。
  • 自动解决合并冲突。

Perforce Helix Core非常适合协作,因其具有可扩展性和灵活性。完整版本的Perforce Helix Core最多可供5个用户和20个工作区免费使用。

文章来源:https://bit.ly/3oEhPXc

什么是SVN(Subversion)?相关推荐

  1. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

  2. SVN(subversion )服务端和客户端的下载安装使用

    目录 一.服务端下载 二.客户端下载 三.服务端的安装 四.客户端的安装 五.windows环境下如何给intelij idea配置SVN 六.IntelliJ IDEA 使用SVN提交.更新.查看历 ...

  3. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

  4. ANT集成SVNANT访问SVN(Subversion)

    2019独角兽企业重金招聘Python工程师标准>>> 一直想让项目的编译自动化,由于代码服务器使用的是SVN,同时脚本用的是ANT,就涉及到如何在ANT中来访问SVN,checko ...

  5. Linux/CentOS下安装Apache/SVN/Subversion图文详解教程

    Linux(CentOS)下安装Apache+Subversion(图文教程) 服务器版本和安装软件 服务器版本: RedHatCentOS 5.5 32 bit 安装软件: apr-1.3.5.ta ...

  6. Linux笔记-SVN(subversion)创建仓库及客户端连接及文件回滚

    创建一个仓库: svnadmin create /var/svn/CFFProject cd /var/svn/CFFProject/ 修改文件: svnserve.conf [general] an ...

  7. 项目管理---SVN,Subversion的安装,客户端和服务端

    一端是保存你所有纳入版本控制的数据的Subversion版本库,在另一端是你的Subvesion客户端程序,管理着所有纳入版本控制数据的本地影射(叫做"工作拷贝"),在这两极之间是 ...

  8. 在 Windows 上安装 SVN Subversion 服务端

    现在的Subversion已经足够稳定,而且已经进入了它的黄金时段.我们看到大量的项目都在使用它完成版本控件的工作.本文将主要针对Windows平台讲述安装Subversion服务器的步骤.本文所使用 ...

  9. svn(subversion)代码版本管理在linux下的一些常见使用命令

    以下的操作都是默认你的服务器安装有svn的大前提下进行的. 一.创建版本库 我的版本库存放路径为: /var/svn : 下面我们来创建一个名为 svntet 的版本库    注释: svnadmin ...

  10. SVN(Subversion)中文版安装教程

    SVN官网下载地址:https://tortoisesvn.net/downloads.html 不多说直接上图 注意:版本号要和语言包对上,不然本人也不知道会出什么状况 语言包也是要安装的,安装完后 ...

最新文章

  1. 影驰名人堂送的机器人_玩转GTX 1080Ti名人堂显示屏 影驰全新魔盘使用教程
  2. .NET5 开发手机提词应用,基于内嵌Web服务器及PowerPoint自动化
  3. 牛客题霸 [合并有序链表] C++题解/答案
  4. JavaScript 原型对象和原型链
  5. python 卷积神经网络 应用_卷积神经网络在目标定位中的应用
  6. 【MySQL】mysql中any,in,some,all的区别
  7. jmeter404_jmeter压力测试报告
  8. html5实例绘制时钟代码,使用html5 canvas 画时钟代码实例分享
  9. codeblocks下载安装教程
  10. 新电视显示服务器失败,电视网络连接失败原因是什么
  11. 2022蓝桥杯java
  12. SourceTree这是一个无效源路径(更改git账号和密码导致无效源路径看这里)
  13. 各种说明方法的答题格式_说明文方法答题格式
  14. 微信小程序-各种跳转
  15. 【C语言】size与strlen的区别解析
  16. LeetCode——5785. 合并若干三元组以形成目标三元组(Merge Triplets to Form Target Triplet)[中等]——分析及代码(Java)
  17. 爬虫python创意_爬虫案例:利用python爬虫关键词批量下载高清大图
  18. Java-彩票游戏例题
  19. Python个人常见语法问题
  20. quartus ii 13.0下载地址

热门文章

  1. 【C语言】visual studio 2019 C语言运行还是显示上次的运行结果
  2. HTML5期末大作业:管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业
  3. .NET 反射原理及其运用
  4. [PowerBI]两种方法计算每月或每季开发的新客户数量
  5. python 求斐波那契数列第k项
  6. linux 之 ps命令介绍
  7. RC充电时间的计算--示例
  8. InDesign 教程:如何转换图形和框架?
  9. [MAUI程序设计]界面多态与实现
  10. 【转】使用BT3、BT4光盘系统、虚拟机vmware破解无线上网