您的位置:首页 > 其它

SVN

2016-03-13 10:38 183 查看
SVN的很强大,尤其是对合作的项目来说,有了SVN的版本控制,项目开发高效,便捷。

介绍

SVN是一个自由开源的版本控制系统,在SVN的管理下,文件和目录可以超越时空,也就是SVN允许你数据恢复到早起版本,或者是检查数据修改的历史。正因为如此,许多人将版本控制系统当做一种神奇的时间机器,在有很多人参与的项目合作开发里,SVN很强大,它能够帮助我们完成文件的合并,文件的控制。

特点:

版本控制:能够跟踪整个而目录的变化。

真正的版本历史:能够对文件或目录进行增加,拷贝和改名操作,

也解决了同名而无关的文件之间的历史联系问题。

原子提交:一系列相关的更改,要么全部提交到版本库,要么一个也不提交。版本化的元数据,每个文件和目录都有自己的一组属性——键和他们的值,可以根据需要建立并存储任何键/值。和文件本身的内容一样,属性也在版本控制之下。

可选的网络:可以独立运行的服务器软件,有自定的协议,可以轻松的用SSH封装

一致的数据操作:用一个二进制差异算法描述文件的变化,对于文本和二进制文件其操作方式是一致的,这两种类型的文件压缩存储在版本库中,而差异信息则在网络上双向传递。(看不懂)

高效的分支和标签操作:在SVN中,分支与标签操作的开销与工程的大小无关,SVN的分支和标签操作只是一种类似于硬链接的机制拷贝整个工程。因而这些操作通常只会花费很少且相互固定的时间。(这个还清楚)。

可修改性:SVN没有历史负担,它以一系列优质的共享C程序库的方式实现,具有定义良好的API,使SVN非常容易维护。和其他语言的互操作性很强。

控制方案

文件控制:拷贝——修改——合并方案,举个例子:Herry和Sally都要对一个文件进行修改(不冲突)。Sally和Harry都从版本库中拷贝了要修改的文件,然后Sally首先修改到了版本库。当Harry想要提交修改的文件时,由于版本库里的文件已经被Sally更新。所以此时版本库提示文件已经过期,那么Harry会通过客户端请求,把版本库的现有文件和他的修改文件合并,然后在提交到版本库中。这样的拷贝-修改-合并方案达到了并行的效果。大大提高了合作开发的效率。当然还有别的方案:锁定-修改-解锁方案,有点类似于操作系统的非抢占式进程调度。这个方案效率不高。大家可以查一下。

冲突:开发人员对文件进行修改时,修改部分有交迭部分,也就是说两个人修改了同一个部分。所以说开发时尽量只管理自己的部分,别人的部分不要动。





那么有不冲突的修改,还有冲突的修改,当Sally和Harry的修改冲突时,当后来Harry提交的时候,就会提示

Harry有冲突部分,这个时候Harry可以选择放弃修改,也可以通过SVN手动解决冲突,不过Hrry需要和Sally进行沟通解决冲突。

目录结构(点我

感觉这个因人,因项目而决定。根据网上的介绍一般都有code和doc两个文件。文件之下都有trunk,branch,tag三个文件夹。

trunk:项目开发的主干。主干部分放到这里。

branch:阶段性的release版本。一些还可以继续开发和维护的版本都可以放到这里。比如视频中介绍的为不同客户开发的版本都可以放到这里。

tag:为版本打标记,自己也很模糊这个概念,不过知道这个必须为只读文件。记录版本历史吧。

SVN的一些操作:提交,修改,合并等操作,在操作的时候也要写备注,备注写的越详细越好。说的无力,真正操作一遍才是精彩。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svn 版本控制