1、教程
Apache Subversion缩写SVN,是一个开放源代码的版本控制系统,相对于RCS、CVS,采用了分支管理系统
SVN 官网:https://subversion.apache.org/
Github SVN 源码:https://github.com/apache/subversion
管理着随时间改变的数据,这些数据放在中央资料档案库(repository)中,次档案库像一个普通的文件服务器,会记住每一次文件的变动,这样可以把档案恢复到旧的版本,或浏览文件的变动历史
2、概念
repository(源代码库):源代码统一存放的地方
Checkout(提取):当手上没有源代码的时候,需要从repository checkout一份
Commit(提交):当修改代码,需要Commit到repository
Update(更新):当已经Checkout一份源码,Update一下就可以 和Repositiry上源代码同步,自己手上的代码就会有最新的变更
日常工作流程:Checkout--->工作好几天--->Update---->修改自己代码并调试成功---->Commit(大家就都能够看到修改)
3、冲突
若两程序员同时修改同一个文件,SVN可以合并两程序员的改动,实际上SVN管理源代码是以行为单位的,只要不是修改同一行程序,SVN都会自动合并两种修改,如果是同一行,SVN会提示冲突Conflict,需要手动确认
4、功能
目录版本控制
“虚拟”的版本控管文件系统,能够依据时间跟踪整个目录的变动。目录和文件都能进行版本控制
真实的版本历史
add、delete、copy、rename,无论是文件还是目录,所有新加的文件都从一个新的、干净的版本开始
自动提交
纳入版本控管的元数据
每一个文件与目录都附有一组属性关键字并和属性值相关联,可以创建、存储任何想要的KeyValue对/属性是随着时间来做版本控管的,就像文件内容一样
选择不同的网络层
一致的数据处理方式
使用二进制差异算法表示文件的差异,对文字和二进制文件两类的文件都一视同仁。这两类的文件都同样的以压缩形式存储在档案库中,而且文件差异是以2个方式在网络上传输的
有效的分支与标签
便于维护,并且可被其他应用程序与程序语言使用