什么是SVN(Subversion)?
在2010年之前,Apache Subversion(简称SVN)是最流行的版本控制系统之一。现在,SVN的受欢迎程度正在下降,但仍有数百万行存储在其中。它甚至继续得到积极维护,尽管是一个小型的开源社区。
SVN的诞生
在1990年代后期,Conhtml' target='_blank'>current Versions System(或CVS)被广泛用于开源和商业项目的软件开发。然而,CVS开始受到批评。它对第三方工具的支持很差,并且绝对不支持http / https / ssh协议。它很快变得不合格,需要一个更好的系统。
2000年,SVN的发展开始认真。目标是为CVS创建兼容的后继者。
尽管SVN开发始于2000年,但版本1.0直到2004年2月才发布。它模仿了CVS中的许多功能,但它也引入了CVS缺失的新功能。用户现在可以执行原子命令,并能够重命名和移动版本化文件。
SVN于2009年11月成为Apache项目,当时它被Apache Incubator接受。在SVN被引入世界之后,CVS的采用逐渐消失。
Subversion如何运作?
SVN最初被设计为命令行界面。这意味着您将打开终端并键入文本命令。
要使Subversion工作,SVN设置需要两个主要元素:
1.该服务器,它具有一切源文件的所有版本
2.一个文件的本地副本,这是您的计算机上。
您计算机上的文件称为工作文件。这些是每个用户进行编辑的文件。然后,用户将其更改提交到SVN服务器,该服务器也称为存储库。
每次用户提交更改时,SVN都会通过创建新版本来管理和记录它。与大多数版本控制系统一样,用户通常使用最新版本。但是如果需要旧版本,则可以恢复到早期版本。
什么是SVN服务器?(什么是Subversion服务器?)
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不允许您提交中央存储库。
SVN要求您手动解决冲突
合并是开发人员经常抱怨SVN的另一个大问题。如果您正在使用历史记录来进行一组更改并进行提交,则会进行另一项更改(即线性)并提交,合并将很容易。
当您有两个或更多开发人员在相同的代码库上工作并且您需要合并时,事情会变得复杂。在这种情况下,SVN失败,开发人员需要手动解决冲突,这会浪费数小时的开发人员时间。
为何使用SVN
几年前,Git和其他商业版控制系统已经超越了SVN。但SVN仍有两个原因:成本和惯性。
成本: SVN是开源的,这意味着它是“免费的”。
惯性:一旦构建了大型代码库,就很难切换VCS。SVN自2004年以来一直存在,采用它的组织拥有数百万行代码。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答