1. 为什么需要SVN?

版本控制技术SVN - 图1

2. 什么是SVN?

SVN是Subversion的简称,是一个开放源代码的版本控制系统

特点:

操作简单、入门简单

跨平台(MacOS 、Windows、Linux)操作

支持版本回退(时间机器)

3. 软件下载

SVN是输入C/S服务类软件,有客户端和服务端。

服务器软件:VisualSVN

客户端软件:Tortoisesvn

4. 工作流程

版本控制技术SVN - 图2

5. VisualSVN Server安装

版本控制技术SVN - 图3

版本控制技术SVN - 图4

版本控制技术SVN - 图5

版本控制技术SVN - 图6

版本控制技术SVN - 图7

版本控制技术SVN - 图8

版本控制技术SVN - 图9

6. VisualSVN Server配置

6.1 创建一个项目

① 创建一个公有目录WebApp作为项目目录

② 在WebApp目录下创建shop文件夹,作为Shop<版本仓库>

版本控制技术SVN - 图10

③ 创建版本仓库,dos环境语法

svnadmin create Shop文件夹路径(Shop仓库)

版本控制技术SVN - 图11

版本控制技术SVN - 图12

6.2 进行服务器端监管

Apache http://localhost 或(IP地址)访问到htdocs目录下相关文件 (监管)

SVN svn://localhost 或(IP地址)访问到相关数据库仓库(如Shop仓库)

语法:svnserve -d (后台运行) -r(监管目录) 版本仓库路径

通过以上指令,svn://localhost 或(IP地址)访问到相关数据库仓库(如Shop仓库)

版本控制技术SVN - 图13

注意:命令窗口不可以关闭,关闭则监听失败

默认情况下,SVN服务器不允许匿名用户上传文件到服务端的,所以必须修改相关配置文件

版本控制技术SVN - 图14

版本控制技术SVN - 图15

7. Tortoisesvn 安装

软件安装包+汉化包

软件安装完成后,重启计算机,否则SVN 图标无法显示

版本控制技术SVN - 图16

出现此界面,安装成功!!!

安装汉化包

版本控制技术SVN - 图17

版本控制技术SVN - 图18

8. 客户端链接服务器

版本控制技术SVN - 图19

输入SVN服务器地址:svn://localhost

会指向监管的Shop项目(仓库)

版本控制技术SVN - 图20

版本控制技术SVN - 图21

版本控制技术SVN - 图22

版本控制技术SVN - 图23

版本控制技术SVN - 图24

9. SVN三大指令

9.1checkout 检出操作

  1. 链接到SVN服务器
  2. 更新服务端数据到本地

注:checkout只在第一次链接是操作一次,以后如果进行更新操作用update

9.2 commit 提交操作

提交本地数据到服务器端

版本控制技术SVN - 图25

版本控制技术SVN - 图26

版本控制技术SVN - 图27

10. 图标集

10.1 常规图标

当客户端文件与服务器端文件完全同步时,系统显示以上图标

版本控制技术SVN - 图28

10.2 冲突图标

当客户端文件与服务器端文件有冲突时,系统显示以上图标

版本控制技术SVN - 图29

10.3 删除图标

当服务器端数据已删除,那么客户端该文件将显示以上图标

版本控制技术SVN - 图30

10.4 增加图标

编写文件已添加到提交队列,那么系统将自动显示以上图标

版本控制技术SVN - 图31

10.5 无版本控制图标

编写文件没有添加到上传队列,那么系统将自动显示以上图标

版本控制技术SVN - 图32

10.6 修改图标

当客户端文件有修改但是未提交,那么将自动显示以上图标

版本控制技术SVN - 图33

10.7 只读图标

当客户端文件以只读形式存在时,将自动显示以上图标

版本控制技术SVN - 图34

10.8 锁定图标

当服务端数据已锁定,那么客户端文件将自动显示以上图标

版本控制技术SVN - 图35

10.9 忽略图标

客户端文件已忽略,不需要进行提交上传,将自动显示以上图标

版本控制技术SVN - 图36

忽略功能

有些文件不希望上传到SVN服务器,应该将文件或该类型的文件添加至忽略列表

忽略指定文件/类型

版本控制技术SVN - 图37

10.10 图标集的查看

版本控制技术SVN - 图38

版本控制技术SVN - 图39

11. 版本回退

版本控制技术SVN - 图40

版本控制技术SVN - 图41

版本控制技术SVN - 图42

版本控制技术SVN - 图43

版本控制技术SVN - 图44

12. 版本冲突

在项目开发中,如果两个人同时修改某个文件就会产生版本冲突

创建两个文件夹moni1、moni2代表两个人。这两个人同时修改a.txt文件。moni2先提交,moni1后提交。

版本控制技术SVN - 图45

解决方案:

①合理分配开发时间

②合理分配项目开发模块

③通过SVN解决版本冲突问题

a. 更新服务器端数据到本地

版本控制技术SVN - 图46

版本控制技术SVN - 图47

版本控制技术SVN - 图48

a.txt:整合后的文件

a.txt.mine:mini1修改后的结果(最后提交的那个人)

a.txt.r2:moni2更新时的a.txt(起始状态)

a.txt.r3:moni2修改后的a.txt

b. 删除除a.txt以外的三个文件

c.修改整合a.txt冲突文件

d.重新上传

13. 配置多仓库与权限控制

13.1 配置多仓库

有多个开发项目,要对多个项目进行监管

通过svnserve进行仓库监管,但是监管指令只能监管某一个文件夹,不能同时将管多个仓库

可以通过总目录来达到监管所有仓库的目的

监管总目录:svn://localhost/总目录

监管某一个项目:svn://localhost/项目

13.2 权限控制

前提:开启权限功能

每个仓库都有conf文件

版本控制技术SVN - 图49

authz:授权文件。哪些用户具有哪些权限

passwd:认证文件。当前SVN系统中某个仓库具有哪些用户以及相应的密码

默认情况下二者时禁用的。如需使用,需要修改svnserve.conf文件

修改svnserve.conf文件

版本控制技术SVN - 图50

版本控制技术SVN - 图51

修改passwd文件

版本控制技术SVN - 图52

修改authz文件

版本控制技术SVN - 图53

提交文件时,会出现认证

版本控制技术SVN - 图54

14. SVN配置与管理

14.1 SVN服务

sc create 服务名 binpath=”Subversion安装目录\bin\svnserve.exe —serve -r 总项目” start=auto

sc create svn binpath=”D:\ruanjian\svn\Apache-Subversion-1.14.1\bin\svnserve.exe —service -r D:\ruanjian\svn\WebApp” start=auto

以管理员身份运行dos

版本控制技术SVN - 图55

版本控制技术SVN - 图56

14.2 创建批处理文件

启动服务:net start 名字

停止服务:net shop 名字

删除服务:sc delete 名字

可以封装成.bat批处理文件

15. 模拟真实开发环境

15.1 SVN工作流程

版本控制技术SVN - 图57

15.2 钩子程序

钩子就是与一些版本库事件触发的程序。例如新修订版本的创建、或者未版本化属性的修改

钩子子目录【版本仓库/hooks/】包含各种版本库钩子模板

版本控制技术SVN - 图58

post-commit.tmpl:事物完成后所触发的跟钩子程序

钩子程序默认情况下可以采用批处理指令或shell指令来进行编写

采用批处理指令编写钩子程序

设置SVN服务端工作的目录
set SVN = “svn安装目录\bin\svn.exe”

设置WEB服务器的工作目录
set DIR = “ 某项目运行目录”

通过Update指令实行更新到DIR中
SVN update %DIR%

具体使用步骤:

  1. 复制post-commit.tmpl文件并命名为post-commit.bat

  2. 填入上面介绍的相关的批处理指令

  3. 然后当SVN版本仓库中的文件更新后可以实时更新到WEB项目目录中需要注意的几个地方:
    编写的钩子程序应该放在版本仓库的hooks文件夹中
    SVN服务有权限操作WEB项目的目录

16 eclipse svn 的使用

16.1 VisualSVN Server

打开软件

版本控制技术SVN - 图59

版本控制技术SVN - 图60

新建用户

版本控制技术SVN - 图61

版本控制技术SVN - 图62

版本控制技术SVN - 图63

新建一个SVN仓库

版本控制技术SVN - 图64

版本控制技术SVN - 图65

版本控制技术SVN - 图66

版本控制技术SVN - 图67

版本控制技术SVN - 图68

版本控制技术SVN - 图69

版本控制技术SVN - 图70

branches版本分支,

tags标签,主要是记录一些关键时间点,便根据标签找回以前某个版本的代码

trunk主干,主干的代码始终是最新的

新建用户分组

版本控制技术SVN - 图71

版本控制技术SVN - 图72

版本控制技术SVN - 图73

版本控制技术SVN - 图74

版本控制技术SVN - 图75

上传代码的地址

https://LAPTOP-6JTT8IE2:8443/svn/taotao/trunk

版本控制技术SVN - 图76

16.2 Eclipse

subclipse安装

版本控制技术SVN - 图77

版本控制技术SVN - 图78

版本控制技术SVN - 图79

版本控制技术SVN - 图80

等待安装

版本控制技术SVN - 图81

版本控制技术SVN - 图82

代码上传

版本控制技术SVN - 图83

版本控制技术SVN - 图84

版本控制技术SVN - 图85

VisualSVN Server中上传代码的地址

版本控制技术SVN - 图86

版本控制技术SVN - 图87

版本控制技术SVN - 图88

版本控制技术SVN - 图89

排除不需要上传的文件

.settings文件

.project文件

.classpath文件

上传会出现莫名其妙的错误

方法一

版本控制技术SVN - 图90

版本控制技术SVN - 图91

版本控制技术SVN - 图92

方法二

版本控制技术SVN - 图93

版本控制技术SVN - 图94

版本控制技术SVN - 图95

版本控制技术SVN - 图96

版本控制技术SVN - 图97

版本控制技术SVN - 图98

svn检出

上传到SVN服务器,可以把eclipse上的工程给真正删掉

版本控制技术SVN - 图99

版本控制技术SVN - 图100

版本控制技术SVN - 图101

版本控制技术SVN - 图102

版本控制技术SVN - 图103

版本控制技术SVN - 图104

版本控制技术SVN - 图105

版本控制技术SVN - 图106

版本控制技术SVN - 图107

版本控制技术SVN - 图108

将工程转为maven工程

最好按照依赖的先后顺序来转

版本控制技术SVN - 图109

版本控制技术SVN - 图110

检出聚合工程的子工程

版本控制技术SVN - 图111

版本控制技术SVN - 图112

版本控制技术SVN - 图113

版本控制技术SVN - 图114