资料来源于svn菜鸟教程,想看完整版可以点此传送
SVN简介
- Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
- 特点:操作简单,入门容易,支持跨平台(win,Linux,MacOS),支持版本回退
- 属于C/S结构软件,包含服务端软件(VisualSVN)和客户端软件(Tortoisesvn)
SVN的一些概念
- **repository(源代码库)😗*源代码统一存放的地方
- **Checkout(提取)😗*当你手上没有源代码的时候,你需要从repository checkout一份
- **Commit(提交)😗*当你已经修改了代码,你就需要Commit到repository
- **Update (更新)😗*当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) -->作出自己的修改并调试成功 --> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN 可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。
优于CVS之处
1、原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
2、重命名、复制、删除文件等动作都保存在版本历史记录当中。
3、对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
4、目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
5、分支的开销非常小。
6、优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。
作用
- 协同开发
- 远程开发
- 版本回退
原理
SCM:软件配置管理
所谓的软件配置管理实际就是对软件源码进行控制与管理
CVS:元老级产品
VSS:入门级产品
ClearCase:IBM公司提供技术支持
SVN:主流产品