svn
SVN是Subversion的简称,是一个自由开源的版本控制系统。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节
svn的工作原理
问题: 怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?
- 复制-修改-合并方案(Subversion默认的模式)
在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。 - 锁定-修改-解锁方案
在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。此模式不适合软件开发这种工作。
svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。
因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
svn的安装
安装server
Location:安装路径
Repositories:仓库路径,上传文件的路径
Server Port:端口号,改成8443
若在开启服务时卡住,需要去服务中修改
安装client,需要选上这个
svn服务端
一、创建仓库
二、创建用户
三、创建组,开发和测试,可以将用户添加进组
四、设置仓库权限,开发组为读写,测试组为只读
svn客户端
安装完成后,右键菜单会出现
SVN Checkout
:检出
TortoiseSVN
:小乌龟的日常操作
Repo-browser
仓库浏览Export
导出Create repository here
创建一个仓库Import
导入Settings
客户端的设置
右键检出后会在桌面上出现一个文件夹。
正常状态:与服务器版本一致
添加文件
在test_svn中,创建一个文件,右键选择TortoiseSVN后选择add
然后图标会发生变化
此时,已经与服务器建立联系,但还没有提交到服务器。
此时,点击右键commit提交
添加日志:记录干了什么
此时,右键选择Repo-browser
,即可在仓库中找到该文件
修改内容
在test_svn文件夹的helloworld.txt文件中,添加内容
此时文件图标发生了变化
该图标的含义:已经修改
,说明代码在原来的基础上修改过,但未提交
然后右键commit
进行提交
写上日志
提交之后,仓库中的文件就被更新了
更新版本
再添加内容,并更新到服务器仓库
不需要你们好!,则需要更新到历史版本,右键选择
点击显示日志
选择恢复到第二版
恢复完成
想要直接更新到最新版本
直接右键
解决冲突
当修改了低于服务器里文件的版本并提交时,会出现提交错误。
解决方法一:
- 更新,多了三个文件
- 把原文件进行修改
- 删除三个文件,证明冲突已解决
- 提交
解决方法二:
- 更新,多了三个文件
- 编辑冲突,在界面中修改
3. 点击保存,三个文件自动被删除
4. 提交
删除
第一种删除
有一个文件,需要在服务器仓库中删除它
右键删除,也可以直接使用普通的删除
提交
第二种:直接在这里删除
导入与导出
导出Expert:可以导出一个与版本库没有关系的文件夹
导入Import:可以将一个文件夹中的文件全部导入到服务器中