2 svn介绍

2.1 项目管理中的版本控制问题

通常软件开发由多人协作开发,如果对代码文件、配置文件、文档等没有进行版本控制,将会出现很多问题:

> 备份多个版本,占用磁盘空间大
> 解决代码冲突困难
> 容易引发BUG
> 难于追溯问题代码的修改人和修改时间
> 难于恢复至以前正确版本
> 无法进行权限控制
> 项目版本发布困难

2.2 什么是版本控制

版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

2.3 svn是什么?

SVN(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS的功能的基础上有很多的提升同时也能较好的解决 CVS 系统的一些不足。

2.4 svn的使用方法

svn是基于客户/服务器模式:

* 复制-修改-合并方案(Subversion默认的模式)
在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。
* 锁定-修改-解锁方案
在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人修改。 此模式不适合软件开发这种工作。

2.5 svn服务器的工作方式

独立服务器方式:svnserve

借助Apache方式:mod_dav_svn

SVN版本数据存储方式

BDB (Berkeley DB) 数据库方式

FSFS  文件方式 (推荐)

3 svn服务端安装配置

3.1 两种服务端安装包

3.1.1 官方安装包官方网站:http://subversion.apache.org/
下载:http://subversion.apache.org/download.cgi

官方提供的服务端安装包,安装后需要通过命令行操作,适用于专业配置管理员使用。

3.1.2 图形化服务端
志愿者开发的图形化操作界面的svn服务端,它适用于普通软件开发人员使用。

下载地址:https://www.visualsvn.com/downloads/

3.2 安装图形化服务端

查看程序菜单:

查看服务,VisualSVN成功启动:

3.3 创建仓库

svn服务端创建完成需要创建仓库,仓库中存放要版本控制的文件。

通过开始菜单进入VisualSVN server manager:

选择文件存储方式:

创建一个空的仓库:

设置用户访问仓库权限:

仓库创建成功:
仓库地址为https://ip地址或计算机名/svn/仓库名称

 

3.4 创建工程目录

仓库中存放开发项目代码、文档等,需要创建一个工程目录。

创建成功:

trunk:项目开发代码的主体,是从项目开始直到当前都处于活动的状态,从这里可以获得项目最新的源代码以及几乎所有的变更历史信息。

branch:从trunk的某个点分离出来的代码拷贝,通常可以在不影响主干的前提下在这里进行重大bug的修改,或者做实验性的开发,以及定制功能开发等。如果分支达到了预期的目的,通常可以被合并(Mgerge)到主干中。

tag:用来表示trunk和branch的某个点的状态,以代表项目的某个稳定状态,通常为最终发布状态。

工程目录创建完成,查看它的svn地址:

拷贝svn地址:

4 TortoiseSVN客户端

4.1 svn客户端类型

svn客户端需要通过网络访问svn服务端提交文件、查询文件等,可通过以下客户端类型访问svn服务端:
1、使用Subversion提供的客户端命令
使用方式:在命令行下输入命令操作。
2、使用Torotise图形化界面操作(推荐)
3、使用Eclipse等开发工具插件操作(推荐)

4.2 下载安装

TortoiseSVN是Subversion版本控制系统的一个免费开源客户端,不需要为使用它而付费。
TortoiseSVN是 Subversion 的 Windows 扩展。它使你避免接触 Subversion 枯燥而且不方便的 Command Line。它完全嵌入 Windows Explorer,使用时只需在正常的窗口里右键操作就可以了

下载:http://tortoisesvn.net/downloads.html 提供 32位和64位不同版本,安装tortoiseSVN 需要修改客户端电脑右键菜单,安装后需要重启电脑。

4.3 浏览仓库

使用Tortoise浏览svn服务端的仓库的内容:

5 权限管理(了解)

5.1 认证授权机制

在企业开发中会为每位程序员、测试人员等相关人员分配一个账号,用户通过使用svn客户端连接svn服务时需要输入账号和密码,svn服务对账号和密码进行校验,输入正确可以继续访问,当用户访问仓库下某个目录时,svn服务对用户进行授权,如果用户拥有该目录的访问权限方可访问。
判断账号和密码输入是否正确的过程即认证过程。
判断用户是否拥有目录的读/写权限时即授权过程。

5.2 创建用户

查看已创建的用户:

修改用户:

5.3 创建组

查看创建的组:

修改组:

5.4 分配仅限

给仓库下的每个目录分配权限对访问进行控制。

5.4.1 删除默认权限

删除系统安装后默认权限:

5.4.2 示例一:开发人员拥有读写权限
进入权限分配界面:

添加组或用户:

分配权限:
继承父目录权限、不可访问、读权限、读/写权限

访问时输入账号:

登陆测试是否有读/写权限:

5.4.3 示例二:测试人员拥有读权限

登陆测试是否有读/写权限:

5.4.4 清除认证缓存
有几种情况需要清除认证缓存:
1、本地使用多个账号登陆,每次输入的账号和密码都不一样
2、当账号密码修改后(建议清理)

6 TortoiseSVN日常使用

6.1 浏览仓库

Repo-browser : 浏览仓库中资源信息

6.2 导入导出

* Export :导出项目 ,和checkout区别 (checkout检出后文件,含有.svn隐藏文件夹, 会和SVN仓库交互, export导出,没有.svn隐藏文件夹)

* import 将本地资源导入到svn 服务器

6.3 修改提交

6.3.1 Checkout
检出项目,复制项目的副本到本地。
在要检出的目录中右键:

6.3.2 add
在检出的目录中添加文件:

图标: 这是一个新文件

* Add to ignore list :添加到忽略列表 (标记该文件不需要版本控制 )

* Add : 标记这个文件添加到服务器

已经标记要添加到版本库

6.3.3 Commit
当检出目录或子目录中内容有修改,目录图标变为:
提交Commit 提交本地修改至svn服务器:
在检出目录或要提交修改的目录右键:

提交后目录中的内容与svn服务同步,目录图标变为:

6.3.4 update

更新仓库的文件到本地

在检出目录或子目标或文件上右键:

6.3.4.1 更新到最新版本

6.3.4.2 更新到指定版本

6.3.5 Delete
Delete :删除版本库文件

标记删除后,本地文件删除,标记删除后需要提交。

6.3.6 恢复
在检出目录或子目录操作会记录操作日志,提交前可以回滚操作。

在要回滚的检出目录或子目录中右键:

6.4 冲突处理

两个客户端同时修改同一个文件, 改动同一个位置,发生冲突情况
如果当commit 遇到文件已经过时,说明另一个人可能改动过 ----- update

db.properties 将本地和服务器合并到一起的文件 (不要直接看)
db.properties.mine 我本地自己修改后的文件
db.properties.r16 我修改之前的文件
db.properties.r17 别人修改后的文件

手动Merge 后,需要将编辑后冲突文件,标记为已经解决 , 再进行commit

7 eclipse的SVN插件使用

7.1 svn插件安装

下载Subversion的eclipse插件
http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA

下载 site-1.10.11.zip,本教程将此zip放在D盘。

下边是在STS上安装svn插件步骤:

1、进入STS软件安装界面

2、安装svn插件

上边命令行输入:SVN - jar:file:/d:/site-1.10.11.zip!/

点击下一步。

接受协议,完成:

出现提示,选择继续安装:

安装完成,查看STS视图有SVN选项说明安装成功:

7.2 将项目共享到SVN

新建SVN仓库连接 , 切换“SVN资源库” 视图

共享项目到SVN

7.3 从svn检出

将svn管理项目检出到工作区

7.4 解决冲突

手动merge后,标记为解决

7.5 重置用户名密码

删除C:\Users(用户)\"你的用户名"\AppData\Roaming\Subversion\auth\下的所有文件

项目管理工具--svn0 0传智播客 java学院

svn详解和使用的更多相关文章

  1. (转)SVN详解

    原文地址:http://www.weixingon.com/s/visualsvn+%E4%B8%AD%E6%96%87 1.几种代理管理工具的适用场景 A.如果你的项目是5-6人的小团队,那么使用V ...

  2. webstorm配置svn详解

    1. 打开webstorm-> file -> setting -> plguins 输入svn如果没有SVNToolBox就在下面的列表中安装SVNToolBox插件即可. 2.c ...

  3. iOS开发——开发实战篇&版本控制SVN和Git使用详解

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  4. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  5. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

  6. SVN与TortoiseSVN实战:补丁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  7. SVN功能详解

    SVN功能详解   TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...

  8. SVN中tag branch trunk用法详解

    SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...

  9. SVN与TortoiseSVN实战:补丁详解(转)

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

随机推荐

  1. POJ-3264-Balanced Lineup-线段树模板题-查询区间内最大值和最小值之差

    For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One d ...

  2. zookeeper 选举白话理解

  3. docker-compose (单机版的容器编排工具)

    类似于ansible剧本 yml 格式 要使用这个编排工具,必须先安装 yum install -y docker-compose cd wordpress/ vi docker-compose.ym ...

  4. 运算符的基本概念以及常用Scanner、随机数Random、选择结构的初步了解

    运算符 分类 算术运算符 位运算符 关系运算符|比较运算符 逻辑运算符 条件运算符 赋值运算符 其中优先级顺序从上到下,可以记忆口诀:单目乘除位关系,逻辑三目后赋值 操作数: 运算符左右两边的数 表达 ...

  5. USACO training course Number Triangles 数塔 /// DP oj10122

    题目大意: ...就是数塔       7         3   8      8   1   0     2   7   4   4 4   5   2   6   5 7+3+8+7+5=30 ...

  6. 自动生成DTO(Sugar框架)

    step1:启动api项目 step2:使用postman工具,填上接口地址http://localhost:7788/api/automapper/AutoMapperSuper step3:表格数 ...

  7. BP 算法之一种直观的解释

    0. 前言 之前上模式识别课程的时候,老师也讲过 MLP 的 BP 算法, 但是 ppt 过得太快,只有一个大概印象.后来课下自己也尝试看了一下 stanford deep learning 的 wi ...

  8. 进程监控驱动 PsSetCreateProcessNotifyRoutine

    函数原型: NTSTATUS PsSetCreateProcessNotifyRoutine( _In_ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, _ ...

  9. SpringCloud之Fegin学习笔记

    以下部分内容来源于网络摘抄~ 1.作用 Feign 是一种声明式.模板化的 HTTP 客户端.在 Spring Cloud 中使用 Feign,可以做到使用 HTTP 请求访问远程服务,就像调用本地方 ...

  10. MySQL其他和备份

    目录 事务 存储引擎 InnoDB存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 MyISAM存储引擎 数据存储形式 锁的粒度 事务 数据的存储特点 其他 对比与选择 视图 触发器 存储过程 ...