SVN使用手册
一. 如果开发过程中没有SVN?
软件研发过程中,任意一个项目都是由一个团队完成的,而不能依靠单一个体完成。
在团队开发过程中,资料数据的共享与同步将成为开发过程中比较突出的问题。
图一:原始开发管理模式(COPY模式)
缺点:
u 代码管理混乱
u 备份多个版本,占用磁盘空间大
u 解决代码冲突困难
u 容易引发BUG
u 难于追溯问题代码的修改人和修改时间
u 难于恢复至以前正确版本
u 无法进行权限控制
u 项目版本发布困难
为保障团队开发过程中人员沟通各方面成本的降低,必须使用一种有效的方式减少沟通环节,提高开发效率,对资源的共享进行管理。
图二:现阶段的开发管理模式(Tools模式)
相关概念:
服务器 server 专用的硬件服务器
仓库 repository 专用于某个项目的磁盘空间,位于硬件服务器中
检出 checkout 一次性工作,下载代码并完成与服务器间的关联
上传/提交 commit 多次工作
更新 update 多次工作
记录日志 logger 记录操作相关的信息,包括动作,用户,时间,信息
版本号码 version 记录文件被操作的次数,即版本数
作为一个管理共享资源的工具必须具备以下几点:
1. 能够记录日常事务中所有的文件的新建,编译,删除
2. 能够记录文件的操作人,操作时间,操作描述信息
3. 对于同一个文件,能够提供更多的历史版本供适用者参考
4. 对于不同的文件,能够提供更高的管理权限,限制用户的使用能力
5. 对于不同的项目/Case,能够提供更多的空间管理模式
6. 对于不同的用户,提供远端访问支持,使用户更快捷进行资源共享
二.
什么是版本控制
版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生到定案的过程。是一种记录多个文件内容变化,以便将来查阅特定版本修订情况的系统。
三. 主流的版本控制工具
VSS:Visual Source Safe(Microsoft Visual Studio成员)主要任务是负责项目文件的管理
CVS:march-hare出品的一套用于进行文件版本控制软件
SVN:Apache软件基金会名下的一套用于进行文件版本控制软件
在2000年初,开发人员要写一个CVS的自由软件代替品,它保留CVS的基本思想,但没有它的错误和局限,保留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 自己来管理。
2009年11月,Subversion被Apache Incubator专案所接收。
2010年1月,正式成为Apache软件基金会的一个顶级专案,所以为Apache Subversion.
目前Apache Subversion的主席为Greg Stein, 项目领导者Release manager为Wandisco公司。
四. SVN是什么
SVN(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用SVN作为代码版本管理软件。不要狭义的理解只服务于软件研发,很多公司都适用SVN管理整个公司的文档
五. SVN的作用
针对软件研发企业的软件生产过程而言,SVN用于管理整个开发过程中的源码,进行版本控制。
六.
SVN体系结构图
七.
SVN下载与安装
目录层次结构
八.
SVN服务端指令
SVN服务端指令是指在服务器端进行操作用于对服务器进行系统级设定与操作
1. 查看svn版本信息
svnadmin --version
2. 创建数据仓库
svnadmin create E:\repository\svn\itcast
准备工作
a) 首先手动创建磁盘目录作为总数据仓库:E:\repository\svn
b) 再手动创建磁盘目录作为具体的数据仓库:E:\repository\svn\itcast
c)