SVN基本概念
1. Repository-文件仓库
Subversion的核心,用于数据的存放,运行于服务器端。
存储数据的方式:通过分层的“文件-目录”文件系统来存储的
管理数据的方式:连接到Repository的客户能读写数据;Repository记录客户的每一次修改;客户端可以从Repository中取到过去的版本。
用一张图来表示:
2. WorkSpace-工作台
运行于客户端,用户从版本库check out的东西都放在这里。
是每个客户端的用户工作的空间。它是每个程序员工作的地方,程序员从Repository中拿到源代码,放在本地作为自己的工作副本,在这个副本上进行查看,修改,编译,运行,测试等等操作,并把新版本的代码从这里提交回Repository中。
3. Tag(Label)标签
是用于创建时间快照,只能读取不能修改,用来对项目的特殊版本进行标记,通常不再用于开发。
标签是为了更加进行方便的提取操作,比如我们开发过程中提交某个版本V1.1,我们希望可以更加方便的找出并提取这个版本或者记录某一个子目录的修改,我们就可以为它制作一个标签,例如release-1.0
4. Branch(分支)
是主版本的分支(支线副本),用于存放还在编写的代码。也就是还有debug的代码,常用来测试新功能,但又不会因为编译错误或BUG干扰开发主线。
它是即独立其他开发又都同时依赖同一条主线。
独立开发:独立于其他开发的线路,并且和其他的线路并行开发。
依赖同一条主线:他们有着一条共同的主线。
就像是一个大树的枝桠,他们都是长在主干上的但是每个枝桠的生长互不影响。
5. Release(主线)
是我们开发的主线,用于存放将要发布的版本代码
SVN的工作模式
1. 复制-修改-合并方案(默认模式)
客户端读取Repository建立一个私有的WorkSpace(版本库中中文件和目录的本地映射)。客户端的用户并行工作,修改各自的工作副本。最终,各自私有的复制合并在一起成为最终的版本,这种系统可以辅助合并操作,但是最终要靠人工去确定正误。
2. 锁定-修改-解锁方案
一个时间段里的Repository的一个文件只允许被一个人修改。这个模式不适合软件开发。
这种方案的一些弊端:
1. 导致管理问题例如忘记解锁
2. 导致不必要的开发。浪费时间 一个编辑文件头部一个编辑文件尾部,没有必要轮流工作
3. 导致安全问题