SVN
概述
1.SVN
介绍
SVN
是
Subversion
的简称,是一个自由开源的版本控制系统。
Subversion
将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文
件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节
早期版本控制使用的是
CVS,
后来
SVN
替代了
CVS,
随着
android
兴起,出现
Git
版本控制工具,后续我们会学到。
1.1 SVN
基本概念
问题
:
怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?
复制
-
修改
-
合并方案
(Subversion
默认的模式
)
在这种模型里,每一个客户读取项目配置库建立一个私有工作副本
——
版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。
锁定
-
修改
-
解锁方案
在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。 此模式不适合软件开发这种工作。
1.2 SVN
架构
Subversion
支持
Linux
和
Windows
,更多是安装在
Linux
下。
svn
服务器有
2
种运行方式:独立服务器和借助
apache
运行。两种方式各有利弊,用户可以自行选择。
svn
存储版本数据也有
2
种方式:
BDB
一种事务安全型表类型和
FSFS
一种不需要数据库的存储系统。
因为
BDB
方式在服务器中断时,有可能锁住数据,所以还是
FSFS
方式更安全一点。
2 SVN使用
本章节主要介绍常用的
svn
工具,如
window
下
svn
服务器
VisualSVN
,客户端工具
TortoiseSVN
以及
idea svn
插件的使用SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle或者Mysql
的服务器用于保存和管理库文件(要保存的代码等文件)的服务端
——VisualSVN Server
。还需要一个用户的操作端,用于提交更新检出代码,常用的有idea
的
Svn
插件,以及
TortoiseSVN
(小乌龟)。
SubVersion
官网:
http://subversion.apache.org/
配置与使用:VisualSVN安装配置与使用 - jack_Meng - 博客园
2.2
客户端
TortoiseSVN
安装与使用
TortoiseSVN
是一个基于
windows
系统的
svn
客户端图形化界面
.
2.2.1 Tortoise SVN
下载
2.3 IDEA
下
SVN
配置与使用
2.3.1 IDEA
下
svn
配置
前提是我们的电脑上已经安装了
TortoiseSVN.
这样安装就完成了
1.Update Project
更新项目
2.Commit changes
提交项目上所有变化文件
3.Compare with the Same Repository Version
当前文件与服务器上该文件通版本的内容进行比较。如果当前编辑
的文件没有修改,则是灰色不可点击。
4.Show history
显示当前文件的历史记录
5.Revert
还原当前被修改的文件到违背修改的版本状态下
1.Local Changes
本地修改过的文件都会出现在这里
2.Repository svn
仓库所有提交记录
3.Incoming
本地还没有更新的别人提交的代码
2.3.2 IDEA
下
SVN
使用
2.3.2.1 share project
2.3.2.2 checkout
2.3.2.3 add commit update
2.3.2.4 ignor
2.3.2.5 解决冲突
3. SVN
规范
3.1 SVN
目录规范
在
visualSVN
中创建仓库时,可以选择
svn
目录结构
Trunk
主干目录,此目录下的文件为基准文件
Branches
用于开发的分支目录
Tags
用于发布的版本目录
假设有一个项目
OA,
我们完成了
1.0
版本,这时就可以打一个
tags
后续我们在
OA
项目上添加一个新的模块
(
及时通讯
),
我们就可以开一个分支
,
又有一个公司需要在我们
OA
基础上添加财务管理模块,我们又可以打一个分支。
我们后续针对
OA
的
1.0
版本在升级,我们不需要原来附加功能
,
就可以在原来的主干上继续开发,形成
OA2.0
版本,开发完成后就可以在打一个tags
3.2
分支与标记
3.2.1.
分支或标记规范
分支的定义规则
: Project name+
日期时间
+
功能点
Tags
的定义规则
Project name+
版本号 版本号定义为三段数字编号 xxx.xxx.xxx
第一个
:
革命性的产品升级版 第二个
:
新功能版 第三个
:
修正
bug
3.2.2.
打分支或标记
Tags
一般是只读,它代表的是发布的版本,所以我们不要进行改变。
3.3
主干与分支或标记的合并
3.3.1
主干合并到分支
首先保证主干是最新的
(
先
update)
,在分支这边进行操作