SVN 教程

🌙
手机阅读
本文目录结构
axihe

SVN 教程

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 Apache 软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。

SVN 相对于的 RCS、CVS,采用了分支管理系统,它的设计目标就是取代 CVS。互联网上免费的版本控制服务多基于 Subversion。

Subversion 是一个自由开源的版本控制系统。在 Subversion 管理下,文件和目录可以超越时空。Subversion 将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。

Subversion 使用情况

虽然在 2006 年 时 Subversion 的使用族群仍然远少于传统的 CVS,但已经有许多开放源码团体决定将 CVS 转换为 Subversion。已经转换使用 Subversion 的包括了 FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono 以及许多团体。有许多的团队换用 Subversion 是因为 Trac 所提供的专案管理环境。除此之外,一些自由软件开发的协作网如 SourceForge 除了提供 CVS 外,现在也提供专案开发者使用 Subversion 作为源码管理系统, JavaForge、Google Code 以及 BountySource 则以 Subversion 作为官方的源码管理系统。

优点

在 SVN 之前,CVS(Concurrent Version System:协同版本控制系统)是使用最广泛的版本管理软件,服务器上保存所有的开发项目,开发者们通过服务器上的共享目录,共同开发同一个项目,达到追踪所有的工作进度,而服务器上也会保存历史版本信息,以方便开发者排错。

SVN 与 CVS 对比的优点如下:

  • 统一的版本号。CVS 是对每个文件顺序编排版本号,在某一时间各文件的版
    • 本号各不相同。而 Subversion 下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。
  • 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
  • 重命名、复制、删除文件等动作都保存在版本历史记录当中。
  • 对于二进制文件,使用了节省空间的保存方法(简单的理解,就是只保存和上一版本不同之处)。
  • 目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
  • 分支的开销非常小。
  • 优化过的数据库访问,使得一些操作不必访问数据库就可以做到,这样减少了很多不必要的和数据库主机之间的网络流量。

不足

只能设置目录的访问权限,无法设置单个文件的访问权限。

若用户有设置单个文件的访问权限的需求,国内有单位可提供基于开源 Subversion 的扩展版本,见参考资料。

另外,Subversion 的官方版本不支持 NTFS 文件系统的扩展属性,NTFS 的扩充属性(安全属性、附加数据流(可选数据流)、加密数据流等)在提交、检出、导入、导出等操作过程中会丢失。

现在国内有提供支持 NTFS 扩展属性的扩充版 Subversion、tSVN, 即 NTFS 的扩充属性(安全属性、附加数据流(可选数据流)、加密数据流等)可和文件一起被提交、检出、导入、导出。见参考资料。

相关链接

SVN 官网:https://subversion.apache.org/

Github SVN 源码:https://github.com/apache/subversion

axihe

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang