SVN版本控制系统
svn概述
SVN是Subversion的简称,是一个自由开源的版本控制系统(集中式版本控制)
Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节
早期版本控制使用的是CVS,后来SVN替代了CVS,随着android兴起,出现Git版本控制工具(分布式版本控制)
复制-修改-合并方案(Subversion默认的模式)
在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。
锁定-修改-解锁方案(一般不会采用)
在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。 此模式不适合软件开发这种工作。
svn的安装
SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle或者Mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。还需要一个用户的操作端,用于提交更新检出代码,常用的有idea的Svn插件,以及TortoiseSVN(小乌龟)。官网下载安装即可使用
svn的简单使用
1. 浏览仓库
1. 右键->TortoiseSVN->repo-browser
2. checkout
1. 检出svn服务器上的项目(第一次从服务器拉到本地)
2. 右键->SVNCheckout
3. add
1. 右键文件->TortoiseSVN->add
4. commit
1. 向svn服务器上提交更改
2. 右键->SVN Commit
5. 更新到历史版本
1. 右键->show log
2. 选中版本->update item to reversion
6. delete
1. 标记删除操作,本地文件会删除,我们需要进行提交,才能真正从服务器删除
2. 右键文件->delete
7. 导入与导出
1. Import将本地资源导入到svn服务器
2. Export导出项目,和checkout的区别,它不存在.svn隐藏文件
8. 冲突问题的解决
1. 多个用户同时操作同一个文件时,就可能产生冲突情况
2. 这个冲突产生后如何解决,我们可以采用手动Merge,解决冲突后,重新commit.
3. update获取冲突的文件
HelloWorld.java 它是服务器上的文件与本地文件合并
HelloWorld.java.mine 本地修改后的文件
HelloWorld.java.r4 修改前的文件
HelloWorld.java.r5 对方修改后的文件
4. 手动解决冲突之后的保存一定要选中解决了冲突,然后commit
idea中集成svn
1. 前提:我们的电脑已经安装好了TortoiseSVN(小乌龟),并且安装了命令行的commandline部分
2. 选中svn.exe 的位置
1. settings->subversion->右上第一行选中小乌龟中svn.exe的位置
2. 部分命令名解释
1.Update Project 更新项目
2.Commit changes 提交项目上所有变化文件
3.Compare with the Same Repository Version 当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑的文件没有修改,则是灰色不可点击。
4.Show history 显示当前文件的历史记录
5.Revert 还原当前被修改的文件到违背修改的版本状态下
3. repository下的的部分命令
1.Local Changes 本地修改过的文件都会出现在这里
2.Repository svn仓库所有提交记录
3.Incoming 本地还没有更新的别人提交的代码
idea下使用svn
1. 从仓库中导入
1. vcs->checkout from version control->subversion->选中项目导入
2. 将当前项目交给svn管理
1. vcs->import into version control->share project(subversion)->选中项目
2. 注意选中的上传到主干还是分支->选中之后注意下面的三个选择
3. add/commit/update
1. 右上角的图标
2. 右键项目->subversion->add/commit/update
4. 解决冲突
1. 提交代码,产生了冲突
2. 继续update project
3. 选择merge
4. 在弹出的界面中解决冲突,apply
5. commit
5. 上传忽略
1. version control->local changes->show ignorefiles->configure ignored files
svn规范
在visualSVN中创建仓库时,可以选择svn目录结构(single-project repository)
Trunk 主干目录,此目录下的文件为基准文件
Branches 用于开发的分支目录
Tags 用于发布的版本目录
1. 打分支
1. 在主干中右键->Branch/tag..
2. to path选择分支如 /branches/名字
3. create copy in the repository from选择head reversion in the repository
2. 合并分支到主干
1. 在主干中,保证主干已经是最新的版本
2. 右键->选择merge
3. merge a range of reversions
4. from选择要合并的分支文件
5. 解决冲突
6. 合并之后记得要commit
3. 合并主干到分支同理