什么是SVN

2017-09-13 14:23:57
admin
968
最后编辑:admin 于 2017-09-13 15:19:24

有一个简单但不十分精确比喻:

SVN = 版本控制 + 备份服务器

简单的说,您可以把SVN当成您的备份服务器,更好的是,他可以帮您记住每次上传到这个服务器的档案内容。并且自动的赋予每次的变更一个版本。

通常,我们称用来存放上传档案的地方就做Repository。用中文来说,有点像是档案仓库的意思。不过,通常我们还是使用Repository这个名词。基本上,第一次我们需要有一个新增(add)档案的动作,将想要备份的档案放到Repository上面。日后,当您有任何修改时,都可以上传到Repository上面,上传已经存在且修改过的档案就叫做commit,也就是提交修改给SVN server的意思。针对每次的commit,SVN server都会赋予他一个新的版本。同时,也会把每次上传的时间记录下来。日后,因为某些因素,如果您需要从Repository下载曾经提交的档案。您可以直接选择取得最新的版本,也可以取得任何一个之前的版本。如果忘记了版本,还是可以靠记忆尝试取得某个日期的版本。

为什么要用SVN?

  1. 备份工作档案是十分重要的。您永远不知道计算机上的硬盘何时会坏掉。根据经验法则再加上摩菲定理,坏事情往往都发生在最重要的时刻。例如,要release东西的前一刻,硬盘完全坏掉,无法修复。所以,常常备份工作数据是非常重要的。大部分公司的server都会有专门的备份机制,甚至是异地备援。绝对比放在自己的计算机里头,或是随身碟上面来的安全。
  2. 版本控管非常重要。您无法保证手头上最新版本永远都是对的。很多时候,在经过数天努力工作后,您才发现走错方向。需要将所有的修改回复到数天前版本。没有几个人能够完全记住自己修改过什么东西。如果没有做好版本控管,那么,最差的状况就是要全部重来。
  3. 伙伴间的数据同步也是非常重要的。很多时候,除了您个人外,还有其它的伙伴也需要您的档案。怎么把最新的档案提供给伙伴呢?用e-mail?根据经验,用e-mail是一个很差的办法。到了最后,根本就不知道哪一封e-mail才是新的。因为可能您最新的e-mail已经被当成垃圾信给丢了。别忘了,现在很多e-mail软件都有anti-spam的功能,说不定这些信件都被当成广告信给处理掉了。而且,您也应该知道一般档案如果放在e-mail内,档案大小会变得比较大(通常是原来的4/3倍以上)。如果每天更新一次,恐怕几天没收信的话,信箱就爆了!
  4. 如果没有一个好的办法,备份不同版本是很耗费硬盘空间的。例如:您有一个总共10MB的目录,使用单纯的档案备份。如果有10个版本就会变成100MB。20个版本就有200MB。如果,不想备份这么多版本,势必就是要减少备份的次数。拉长备份周期将会导致数据遗失的危险性增高。把旧的不需要的备份删除?根据经验,只要时间一拉长,您跟本就不知道一个月以前的版本是重要或者是不重要。

SVN能帮我们解决上面的问题吗?答案是肯定的:

  1. SVN Repository可以是自己计算机上的一个目录,或者是随身碟(不建议这样用)。当然也可以是公司的服务器。
  2. SVN有很棒的版本控管机制。所有上传的版本都会帮您记录下来。日后您可以随时取得某一个时刻的版本。而且,也有版本分支及合并等好用的功能。
  3. SVN可以让不同的开发者存取同样的档案,并且利用SVN Server作为档案同步的机制。也就是说,您有档案更新时,无须将档案寄给您的开发成员。只需要告诉他新的版本已经在SVN Server上面,请他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到当您上传新版本后,自动发信给相关的成员。
  4. SVN的存放档案方式是采用差异备份的方式。也就是说,他只会备份有不同的地方。所以很省硬盘空间。此外,他也可以针对所谓的非文字文件进行差异备份。


SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。

早在2000年CollabNet, Inc.就开始召集开发人员开发CVS的替代品CollabNet 提供一套名为SourceCast协同工作套件其中的一部分组件是版本控制虽然SourceCast使用CVS作为其最初的版本控制系统但是CVS的种种限制从一开始就处处可见最后CollabNet明白必须要找到一个更好的解决方案不幸的是至少在免费license中因为没有更好的选择CVS已经广泛成为了开源世界中事实上的标准所以CollabNet决定开发一个新的版本控制系统保留CVS的基本特性但去除CVS的bug和不好的特性

在2000年2月他们联系《使用CVS开发开源项目》(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel并征求了他是否愿意在这个新的项目中担任一个角色巧合的是当时Karl已经和他的朋友Jim Blandy讨论了一个关于新的版本控制系统的设计在1995年这两人就成立了Cyclic Software一个提供CVS的商业支持的软件公司虽然他们经营商业服务但是仍然在每天都在工作中使用CVS使用CVS的挫折感使得Jim认真思考更好的方法来管理数据不但确定名字为“Subversion”而且完成了Subversion档案库的基础设计

当CollabNet的电话到来时Karl立即答应了加入项目中而且Jim让他的雇主RedHat Software同意让他在这个项目中不定期工作CollabNet雇用了Karl和Ben Collins-Sussman并在5月开始了详细设计工作在得到了来自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(当时是一名活跃在WebDAV/DeltaV规范过程的自由程序员)很多创意的帮助下Subversion很快地引起了一个活跃开发者社区的注意它找出并欢迎很多同样在CVS上受到挫折的社员能来为这个项目做点什么

Subversion 最初的设计Team定下了几个简单的目标 它必须在功能上可取代 CVS也就是说, 所有 CVS 可做到的事, 它都要能够作到 在修正最明显的瑕疵的同时, 还要保留相同的开发模式 还有, Subversion 应该要和 CVS 很相像, 任何 CVS 使用者只要花费少许的力气, 就可以很快地上手

经过十四个月的编码后, Subversion 于2001年8月31日开始实现 “自行管理” 也就是说, 开发人员不再使用 CVS 来管理 Subversion 的代码, 而以 Subversion 自己来管理



    • 在线客服
    • 关注微信
    • 联系电话
      • 欢迎咨询
      • 欢迎加入QQ群 303257430
    • 公众号:源宝网络
      • 联系电话及微信号 18902328227