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是一个自由开源的版本控制系统,在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的一些操作:提交,修改,合并等操作,在操作的时候也要写备注,备注写的越详细越好。说的无力,真正操作一遍才是精彩。
相关文章推荐
- About SVN
- CentOS 6.5搭建Apache整合SVN 1.8.5服务器(多版本库权限配置)
- CentOS下SVN服务器测试版安装记录
- 如何在本机搭建SVN服务器
- Windows下搭建本地SVN服务器
- 简单谈谈node.js 版本控制 nvm和 n
- 让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
- Windows下SVN服务器搭建方法整理(apache)
- Apache2+SVN+MYSQL认证 配置项详细步骤
- VSS 软件配置管理 版本控制第1/2页
- 在Fedora 10下配置SVN服务器的步骤
- 删除SVN三种方法delSvn(windows+linux)
- 探讨如何在Eclipse中过滤版本控制文件.svn
- linux下安装配置svn独立服务器的步骤分享
- 浅析SVN常见问题及解决方法
- 关于svn冲突的解决方法
- 基于Eclipse中SVN图标不显示的解决方法
- Shell脚本实现的基于SVN的代码提交量统计工具