version control with subversion

89
Version Control with Subversion 李李李 2007-01-19

Upload: tuvya

Post on 19-Jan-2016

151 views

Category:

Documents


0 download

DESCRIPTION

李树仁2007-01-19. Version Control with Subversion. 1. Subversion 简介 2、版本控制的基本知识 3、subversion 常用功能讲解 4、客户端工具 tortoiseSVN 5、 eclipse 插件 subeclipse 的使用介绍 6、使用 svn 中常见问题 7、 csdb 版本管理规则. Subversion. 一、 Subversion 简介. 版本控制是管理信息变更的一门艺术。 版本控制工具早已经成为许多程序员的主要工具之一 。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Version Control with Subversion

Version Control with Subversion

李树仁 2007-01-19

Page 2: Version Control with Subversion

Subversion1. Subversion 简介

2 、版本控制的基本知识

3 、 subversion 常用功能讲解

4 、客户端工具 tortoiseSVN

5 、 eclipse 插件 subeclipse 的使用介绍

6 、使用 svn 中常见问题

7 、 csdb 版本管理规则

Page 3: Version Control with Subversion

一、 Subversion 简介

• 版本控制是管理信息变更的一门艺术。• 版本控制工具早已经成为许多程序员的主要

工具之一 。• 版本控制软件的用途并不仅限于软件开发的

领域 ,只要人们使用计算机来管理经常变更的信息,就需要使用版本控制工具 。

• Subversion 的一个概括性的介绍:Subversion 是什么?它用来做什么?以及如何得到它 。

Page 4: Version Control with Subversion

什么是 Subversion ?

• Subversion 是一个自由的、开放源码的版本控制系统

• 它可以管理各个时刻的文件和目录 。

• Subversion 将文件存放在 repository 库中。这个仓库非常类似于一个普通的文件服务器 ,只是它还可以记录文件和目录曾经做过的每一次变更 。

• 可把版本控制系统比作一种“时间机器” 。

Page 5: Version Control with Subversion

什么是 Subversion ?• Subversion 的仓库可以通过网络来访问,允许

不同的用户在不同的计算机上使用 。• 不同的使用者可以进行协同工作 。而且所有工

作都是有记录的,如果有错只要撤销就可以。• Subversion 只是版本控制系统,不是软件配置

管理系统 (SCM) 。

• 它是一个通道,可以管理任何计算机中的文件系统。

Page 6: Version Control with Subversion

What is Subversion not ?

• svn is not a build system .

• svn is not a substitute for management.

• svn is not a substitute for developer . Communication.

• svn does not have change control .

• svn is not an automated testing program.

Page 7: Version Control with Subversion

Subversion 的历史• CVS 有明显的局限性和功能上的不足。

• 2000 年开始 , CollabNet 公司 就开始着手开发新的版本控制系统来代替 CVS 。

• Karl Fogel 和 Jim Blandy 是 CVS 开发者,加入到开发subversion 当中。

• 他们让 Subversion 来使用 CVS 的特性,并且保留相同的开发模型 ,但是避开 CVS 的那些明显的缺陷 。

• Subversion 于 2001 年 8 月进入“自测”阶段 。

Page 8: Version Control with Subversion

Subversion 的特色• 目录控制

– CVS 只能跟踪单个文件的历史,而 Subversion 实现了一个 " 虚拟 " 的受控文件系统,可以跟踪整个目录的变更。

• 真正的版本历史– 由于 CVS 只限于记录文件的版本信息,像文件复

制、重命名这样的操作它就不支持 ,在 Subversion 中我们可以添加、删除、复制和重命名文件和目录 。

Page 9: Version Control with Subversion

Subversion 的特色• 原子化提交

– 一个变更集要么完整地被提交到仓库中,要么不做任何改变 ,从而避免发生不完整地提交变更的情况 。

• 受控元数据– 每一个文件和目录都有一个与其对应的属性集 。

• 可选的网络层– Subversion 仓库的存取是一个抽象概念,有利于其

他人实现新的网络访问机制 , Subversion 可以作为一个外部模块插入到 Apache HTTP 服务器中 。

Page 10: Version Control with Subversion

Subversion 的特色• 一致的数据处理

– Subversion 使用一种二进制的比较算法来表示文件之间的区别 。

• 高效的分支和标记– 分支和标记所带来的开销与项目的规模并没有直接的关

系 , Subversion 在创建分支和标记时使用类似“连接”的方式来复制项目 。

• 扩展能力– 它是由一组设计良好的 APIs 实现的,包含在 C 的共享库中 ,

这使得它很容易维护。也很容易被其他应用程序或语言使用 。

Page 11: Version Control with Subversion

Subversion 的体系结构

Page 12: Version Control with Subversion

Subversion 的体系结构• 典型的 client/server 模式结构

• 在系统的一端是存放着所有受控制数据的 Subversion 仓库。

• 另一端是 Subversion 的客户端程序,管理着受控数据的一部分在本地的映射(称为“工作副本”)。

• 在这两端之间,是通过各种仓库存取层( Repository Access,RA)的多条通道。这些通道中,有些要使用计算机网络,再通过用来访问 Subversion 仓库的服务器。而有些则完全绕过了网络,直接对仓库进行操作 。

Page 13: Version Control with Subversion

Subversion 的安装• Subversion 是建立在一个叫做 APR ( the Apache

Portable Runtime library)的可移植运行库之上的 。

• Subversion 可以运行在任何 Apache 服务器可以运行的操作系统之上: Windows 、 Linux ,各种类型的 BSD 、 Mac OS X , Netware 以及其他的系统。

• 获得 Subversion 的最简单的方法就是下载适合于你的操作系统的二进制软件包

• Subversion 的站点( http://subversion.tigris.org )

• Windows安装是图形化界面, linux安装较复杂,另有讨论。

Page 14: Version Control with Subversion

Subversion 的组件• Svn

– 一个命令行的客户端程序

• Svnversion

– 报告本地工作副本状态(当前档案的修订版本号表示)的程序

• Svnadmin

– 用来创建或者是修复仓库的工具

• svndumpfilter

– 过滤资源库程序

Page 15: Version Control with Subversion

Subversion 的组件• mod_dav_svn

– Apache 服务器的一个插件模块,用来使其他人可以通过网络访问这个仓库

• svnserve

– 一个定制的、独立的 Subversion 服务程序。可作为一个驻留进程运行或者是由 SSH 调用。是使仓库可以被别人通过网络访问的另一种方法

• 常用的组件是 svn 和 svnadmin ,有图形化客户端来实现 svn 和 svnadmin 功能。

Page 16: Version Control with Subversion

Subversion 的组件• mod_dav_svn

– Apache 服务器的一个插件模块,用来使其他人可以通过网络访问这个仓库

• svnserve

– 一个定制的、独立的 Subversion 服务程序。可作为一个驻留进程运行或者是由 SSH 调用。是使仓库可以被别人通过网络访问的另一种方法

• 常用的组件是 svn 和 svnadmin ,有图形化客户端来实现 svn 和 svnadmin 功能。

Page 17: Version Control with Subversion

Subversion快速入门• 运行下面的例子,必须确保 svn 和 svnadmin 这两

个工具正常运行。

• 同时还必须保证你的 svn 工具是针对 Berkeley DB 编译的 。

• 可以运行 svn --version 然后检查 ra_local 模块是否可用来确认 ,如果没有这个模块,我们的客户端程序将无法访问 file://URLs

Page 18: Version Control with Subversion

Subversion快速入门

Page 19: Version Control with Subversion

Subversion快速入门• $ svnadmin create /path/to/repos

• ls /path/to/repos– conf/ dav/ db/ format hooks/ locks/ README.txt

• 这个命令创建了一个包含 Subversion 仓库的目录 /path/to/repos 。另外,这个目录必须创建在本地磁盘,而不能是在网络共享磁盘上

• 下一步,准备一个类似下面例子中的用来导入的文件、目录树。在树结构中,应该包含三个顶层目录: branches 、 tags 和 trunk

Page 20: Version Control with Subversion

Subversion快速入门 /tmp/project/branches/

/tmp/project/tags/

/tmp/project/trunk/

foo.c

bar.c

Makefile

...

Page 21: Version Control with Subversion

Subversion快速入门• 一旦你准备好了目录树,就可以使用 svn import 命令

来导入数据到仓库中了• svn import /tmp/project file:///path/to/repos -m "initial import"

Adding /tmp/project/branches

Adding /tmp/project/tags

Adding /tmp/project/trunk

Adding /tmp/project/trunk/foo.c

Adding /tmp/project/trunk/bar.c

Adding /tmp/project/trunk/Makefile

...

Committed revision 1.

Page 22: Version Control with Subversion

Subversion快速入门• 现在,仓库中就有了整个目录树中的数据 • 为了开始操作仓库中的数据,我们需要先创建一

个数据的“工作副本( working copy )”出来 。• 这类似于一种私有的工作区 ,向 Subversion

“check out”(借出)一份仓库中 trunk 目录的工作副本 :– $ svn checkout file:///path/to/repos/trunk project

• 在一个新的 project 目录下就有了仓库中一部分数据的一个私人副本 ,可以在本地工作副本上编辑某个文件,然后再将那些修改提交到仓库中 。

Page 23: Version Control with Subversion

二、版本控制的基本知识

• 仓库( The Repository )

• 版本控制模型

• 实际工作中的 subversion

• subversion/cvs/vss 比较

Page 24: Version Control with Subversion

The Repository

• Subversion 是一个集中式的系统。它的核心是一个用来存放数据的中心仓库。中心仓库使用典型的文件和目录层次结构――树状结构来存储信息。

• 许许多多的客户端可以连接到中心仓库,然后读取或者写入文件 。

• 客户端通过写文件来使其他人共享,也可以读取其它客户端所写入的文件。

• 典型的客户端 / 服务器系统模型 ,如图所示:

Page 25: Version Control with Subversion

The Repository

Page 26: Version Control with Subversion

The Repository

• 仓库就是一种文件服务器,只是不是通常的那种 。

• Subversion 仓库可以记录写入仓库的每一次更改 。– 这些更改包括对每一个文件的每一次修改,甚至是对目录本身

的修改,例如添加文件、删除文件和对文件和目录的重新编排。这些特性使得 Subversion 仓库与一般的文件服务器相比较为特殊。

• 客户端同样可以读取文件和目录以前某个时刻的状态 。

• 版本控制系统的核心:记录和跟踪数据的修改历史

Page 27: Version Control with Subversion

版本控制模型

• 版本控制系统的核心任务是使得数据可以协作处理和共享。但是不同的系统使用不同的策略来达到这个目标 。

• 文件共享的问题 。

• “锁定―修改―解锁” 方案

• " 复制―修改―合并 "方案

Page 28: Version Control with Subversion

文件共享问题 所有的版本控制系统都必须解决一个共同的基本

问题:如何让用户来共享信息,并且还要避免他们不小心覆盖掉别人对仓库中数据作过的修改?

Page 29: Version Control with Subversion

"锁定―修改―解锁 " 方案

• 许多版本控制系统都使用“锁定―修改―解锁”模型来解决这个问题 ,诸如: VSS

• 在这样一个系统中,仓库在一个特定的时刻只允许一个人对某个文件进行修改 。

Page 30: Version Control with Subversion

"锁定―修改―解锁 " 方案

• 这种方案的问题是它有一点过于严格了,经常会阻塞用户的使用 。

• 锁定可能会带来管理问题 。

• 锁定可能导致不必要的串行工作 。

• 锁定可能会引起潜在的不安全性 。

Page 31: Version Control with Subversion

" 复制―修改―合并 "方案 • Subversion 、 CVS 以及其他一些版本控制系统使用

“复制―修改―合并”模型来代替锁定 。

• 每一个用户的客户端软件从中央仓库创建出一份个人的工作副本――仓库中文件和目录的本地映射 。

• 用户就可以并行工作,修改手中的私有副本 。

• 这些私有副本合并成为一个全新的版本 。

• 版本控制系统常常需要合并,但是最终,操作者本身必须负责让合并工作正确进行 。

Page 32: Version Control with Subversion

" 复制―修改―合并 "方案

Page 33: Version Control with Subversion

冲突( conflict ) • 如果 Sally 的修改会覆盖掉 Harry 的工作怎么办?这种情况叫做 "冲突( conflict )

• 当 Harry 要求他的客户端软件合并仓库中的最新修改到工作副本时,文件 A 被标记为冲突状态。

• 遇到这种情况,只有人本身才有能力理解和做出合理的选择 。注意,软件并不能自动解决冲突 。

• 用于解决冲突的时间远远少于锁定系统所带来的时间浪费。

Page 34: Version Control with Subversion

解决冲突的关键是用户交流

 最终,我们将所有的问题归结为一个关键因素:用户交流。如果用户很少交流,不论是语法的还是语义的冲突都会增加。没有哪个系统可以让用户完美地交流,也没有哪个系统可以自动检查出语义上的冲突。所以,不要被那种锁定系统可以解决冲突的虚假承诺所麻痹,事实上,锁定系统除了限制生产力之外一无是处。

Page 35: Version Control with Subversion

实际中的 Subversion

• 工作副本 Working Copies

• 资源库存储的不同方式 URLs

• 修订本

• 工作副本如何跟踪仓库

• 混合型修订版的局限性

Page 36: Version Control with Subversion

工作副本 Working Copies

• 一个 Subversion 的工作副本其实就是本地系统中的一个普通的文件目录树 。

• 可以使用任何方式来编辑这些文件。如果是源代码文件的话,你也可以像通常情况那样去编译它们。

• 工作副本是你的私人工作区 。

• 如果你不明确的要求, Subversion 绝不会合并其他人的修改,也不会让其他人看到你做的修改 。

Page 37: Version Control with Subversion

工作副本 Working Copies

• 在你已经修改完工作副本中的文件,并且确信修改正确后,就可以将这些修改公开给同一个项目中的其他工作人员。 Subversion 提供了将文件写入仓库的命令 。

• 工作副本中也包含一些额外的文件。它们是由 Subversion 创建和维护的,用来辅助完成这些命令。

• 最典型的情况是,每一个目录都包含一个叫做 .svn 的子目录 。该目录也被称为“工作副本管理目录”。

• 一个 Subversion 的仓库会包含几个项目,而每一个项目都是仓库的目录的一个子目录。这样,用户的工作副本也就对应于仓库中一个特定的子目录。

Page 38: Version Control with Subversion

工作副本 Working Copies

Page 39: Version Control with Subversion

资源库存储的不同方式 URLs

样式 存取方式

file:/// 直接从本地磁盘上访问仓库

http:// 通过 WebDAV 协议访问 Apache 服务器,而访问仓库

https:// 和 http:// 相同,但使用 SSL 来作加密

svn:// 通过自定义的协议访问一个 svnserve 服务器

svn+ssh:// 和 svn:// 相同,但通过一个 SSH 通道来使用

Page 40: Version Control with Subversion

修订本• 一个 svn commit 操作可以将任意数量的文件和目录的修改发布

作为一个单独的原子事务来处理 。

• 在仓库中,每一次提交都被作为一个原子事务来对待 。

• 每当仓库接受一次提交,仓库中的文件系统目录都会创建一种新的状态,叫做一个修订本。

• 每一个修订本都被赋予一个唯一的自然数,并且每一个修订本的数字都比前一个要大。刚刚建立的仓库的初始的版本是 0 ,只包含一个空的根目录。

• Subversion 的修订版编号是针对整个目录树的,而不是某一个独立的文件 。

• 如图所示:

Page 41: Version Control with Subversion

修订本

设想一个修订版编号的数列,从 0 开始,从左延伸到右。每一个修订版编号都对应一个画下面的目录树,而每一个目录树就是在每一次提交之后的仓库的 " 快照 "。

Page 42: Version Control with Subversion

混合型修订版 • 一般的原则上, Subversion 努力使自己尽可能的灵活。一个典型的灵活性的体现就是允许工作副本中包含有混合的修订版编号的能力。

• 在完成向仓库的提交之后,刚刚提交的文件和目录就拥有了最新的修订版编号,而其他文件没有。

Page 43: Version Control with Subversion

subversion/cvs/vss 比较svn cvs vss

工作模式 Copy-Modify-Merge Copy-Modify-Merge Lock-Modify-Unlock

粒度 目录级 文件级 文件级

访问存储库方式

本地文件、专有服务器、 webdav

本地文件、专有服务器 本地文件

访问授权 基于 apache 目录授权 ? 专有管理工具

分支和标记 支持,高效实现 支持 不支持

使用方式 多种专有工具、 IDE 集成、命令行

多种专有工具、 IDE 集成、命令行

专用工具,使用方便

分支、标记处理

高效实现,相同文件在实现时通过链接实现,不占用额外空间

不同分支、标记中相同文件需占不同空间

无分支、标记概念

Page 44: Version Control with Subversion

三、 Subversion 之 旅

• 基本术语

• 主要讲解 SVN 客户端工具的常用命令

• 通过本部分的学习,可以操作所有任务在日常使用 subversion 版本控制系统

Page 45: Version Control with Subversion

术语• 修订版( revision )

– 存储库接受的每一次修改产生新的修订版– HEAD :存储库中最新版本– BASE :

• 分支( branches )

• 标记( tags )

• 合并(merging )

Page 46: Version Control with Subversion

Subversion 客户端工具• 命令行工具

– 通过命令行方式,主要命令包括:• svn :基本 svn 命令• svnadmin :存储库管理• svnlook :存储库查看

• TortoiseSVN– 与 windows资源管理器集成

• subclipse– 与 eclipse 集成

Page 47: Version Control with Subversion

Subversion 常用操作• import

– 将本地目录导入存储库

• checkout

– 从存储库创建目录树的本地工作拷贝

• update

– 将存储库中文件同步到本地工作拷贝中

• commit

– 本地工作拷贝中文件修改提交到存储库中

• add

– 将本地文件加入到存储库中

• remove

– 从存储库中删除一个文件 ( 保留历史记录 ).

• move

– 在存储库中讲一个文件移到另一个位置

Page 48: Version Control with Subversion

Subversion推荐目录结构• 存储库

–项目名• trunk :主版本• branches :分支版本(独立版本)• tags :标记版本,比如发行版 v 1.0/ v 2.0等等

Page 49: Version Control with Subversion

工作拷贝、存储库同步的状态

工作拷贝 存储库 commit update

未修改 未修改

未修改 已修改 从存储库中取出最新版本

已修改 未修改 将本地修改提交到存储库中

已修改 已修改 出现过期错,要首先 update

将存储库的修改合并到工作拷贝中

Page 50: Version Control with Subversion

Svn 常用命令介绍• Help

• Import

• Checkout

• Update your working copy– Svn update

• Make changes– add

– delete

– copy

– move

Page 51: Version Control with Subversion

Svn 常用命令介绍• Examine your changes

– status

– diff

– revert

• Merge others’ changes– Merge

– Resolved

• Commit your changes– commit

Page 52: Version Control with Subversion

help

• C:\>svn help

• 用法: svn <subcommand> [options] [args]

请使用 “ svn help <subcommand>” 显示子命令的辅助说明。

大多数的子命令可接受文件或目录参数,对目录进行递回存取。

如无指定参数给命令,默认将会自当前的目录 (包含 ) 进行递归存取

Page 53: Version Control with Subversion

import

• import: 提交未纳入版本控制的文件或目录树至档案库

• 用法: import [PATH] URL

• 递归地 提 交 PATH 的拷贝至地址 (URL) 。 如 果省略 PATH ,默认为 ‘ .’。父目录会依需要于档案库内建立。

• 举例: D:\>svn import -m "import directory" --username lsr --password lsr ./monitor

https://localhost/svn/reposs

Page 54: Version Control with Subversion

checkout

• checkout (co): 从档案库签出工作拷贝

• 用法: checkout 地址 ... [ 路径 ]

• 例如: D:\gg>svn co https://localhost/svn/reposs

Page 55: Version Control with Subversion

update

• 将档案库的改变反应至工作拷贝

• 用法: update [PATH...]

• 例如: D:\private\publish\ 个人信息 >svn update

于修订版 48。

Page 56: Version Control with Subversion

Make changes• Add :

– 增加文件或者目录到资源库中,然后 commit 。条件是该文件或者目录已经在相应的目录上。

• Delete– 删除在库中的文件或者目录,然后 commit 。

• Copy– 拷贝文件,然后 commit

• Move– 移动文件或目录到另外目录中,相当于拷贝、删除的组合。

• 以上的命令是针对工作副本进行的,所以要 commit才有效

Page 57: Version Control with Subversion

Examine your changes• Status

– 显示工作拷贝目录与文件的状态 。– 用法: status [PATH...]

– svn status wc

M wc/bar.c

A + wc/qax.c

• Diff

– diff (di): 显示两个路径中的差异 – D:\repos\webtest\trunk>svn diff -r 19:25 Project.java

• Revert– 恢复原始未改变的工作拷贝文件 (恢复大部份的本地修改 )

Page 58: Version Control with Subversion

Merge others’ changes

• Merge– 将两个来源之间的差异应用至工作拷贝路径

• Resolved– 移除工作拷贝的目录或文件的 '冲突 ' 状态

Page 59: Version Control with Subversion

Commit your changes

• Commit– commit (ci): 把改变从工作拷贝发送到档案库。 – 用法: commit [路径 ...]

– 日志信息必须提供,但可以是空的 – D:\fff>svn commit -m "lishure"

正在发送 hh.txt

传输文件数据 .

提交后的修订版为 14 。

Page 60: Version Control with Subversion

Other userful commands

• Cleanup

• List

• Cat

• Log

• mkdir

Page 61: Version Control with Subversion

四、客户端工具 tortoiseSVN

• tortoiseSVN 介绍

• tortoiseSVN 的使用

Page 62: Version Control with Subversion

tortoiseSVN 介绍

• Windows 操作系统客户机• 图形化界面,集成了 svn 和 svnadmin 命令行

工具的功能。• 该客户机集成于资源管理器功能中,使用方便,易于掌握。

• 直接安装 TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi ,方法同一般软件安装相同

Page 63: Version Control with Subversion

tortoiseSVN 使用介绍 一旦该客户机安装成功,在指定目录单击右键,弹出菜单中,增加了几项,如图所示:

Page 64: Version Control with Subversion

tortoiseSVN 使用介绍• 如上图所示,在资源管理器菜单中增加了, svn

checkout 命令菜单和其他命令,诸如:浏览指定的资源库、创建资源库、从资源库中导出资源、从指定目录中导入到资源库中。

• 还有一些有关设置 tortoisesvn 工具的参数。

• 如果指定的目录已经被纳入到特定的资源库中,那弹出的菜单参数更多,如目录 private 已经被 subversion管理了,它就是一个工作副本,如下图所示:

Page 65: Version Control with Subversion

tortoiseSVN 使用介绍

Page 66: Version Control with Subversion

tortoiseSVN 介绍

• 如上图所示,弹出菜单中含有更多的 svn 命令– Update

– Commit

• 含有 svn 的所有命令,但是操作比 svn 命令行方式方便多了。

• 通过该客户机可以很快掌握 svn 命令,同时很好的对自己所属的工作拷贝进行管理

Page 67: Version Control with Subversion

插件 subeclipse 使用

• subclipse_0.9.3.1 适合 eclipse2.0 使用

• site.0.9.28 适合 eclipse3.0 使用

• 重点介绍 site.0.9.28 插件的安装和使用

Page 68: Version Control with Subversion

subclipse_0.9.3.1

• 该插件适合 eclipse2.0 版本,下载网站是:

• http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=1730,选择最新版本 Sublipse 0.9.3.1.zip 。

• 我们开发部网站也有该插件,最新版本的

• 下载 Sublipse 0.9.3.1.zip

• 解压到 eclipse安装目录的父亲级目录 ,例如,如果你的 eclipse安装在 c:\eclipse ,那么解压到 c:\ 。或者把解压后的 eclipse 目录与 eclipse安装目录覆盖也可以

Page 69: Version Control with Subversion

site.0.9.28 安装步骤• 该插件适合 eclipse3.0 版本。下载网站与 2.0一样,只是下载的版本不用,选择最新版site.0.9.28.zip 。需要注意的是,二者安装有所不同,前者是直接解压到适合目录就安装成功,后者是利用 eclipse 提供的软件更新工具

• 开发部网站上有最新版本的可下载。

• 下载一个压缩文件,诸如 site.0.9.28.zip ,解压到本地一个目录里 。

Page 70: Version Control with Subversion

site.0.9.28 安装步骤• 解压后的目录结构如下所示:

Page 71: Version Control with Subversion

site.0.9.28 安装步骤• 启 动 eclipse3.0 , 选 择 Help -> Software

Updates -> Find and Install ,中文界面的是:帮助 -> 软件更新 ->查找并安装。

• 选择 “ Search for new features to install” and click Next ,中文界面的是:搜索要安装的新功能部件,点击“下一步” 。

• 点击 “ New Local Site” ,中文界面的是:新建本地站点 。

• 查找下载插 件 所 在 的路径, 并 选择 <parent folder>/update and click OK

Page 72: Version Control with Subversion

site.0.9.28 安装步骤• 你将能看见该你的站点,选择它并点击下一步,

如图所示 :

•按照向导,并重新启动 eclipse ,即完成了安装

Page 73: Version Control with Subversion

Subeclipse 的使用• 安装完成后。重新启动 eclipse后,打开窗口 -

>打开透视图,其他,如图所示

Page 74: Version Control with Subversion

Subeclipse 的使用• 如上图所示,透视图里多了 SVNRepository透视图,

选中该透视图,点击“确定”按钮,进入 svn透视图,该透视图由以下视图组成,如图所示 :

Page 75: Version Control with Subversion

Subeclipse 的使用

• 视图包括 : SVN Repository 、 SVN Resource History 、 SVN Properties 、 SVN Annotate 、 pendling SVN Operations 。 其 中SVN Repository视图是最主要的,也是通过该视图进行新建连接 repository 库和操作 repository库、等操作。其余视图都是围绕该视图展开。

Page 76: Version Control with Subversion

Subeclipse 的使用• 新建 repository连接,在 SVN Repository视图中

单击右键,按出菜单,然后新建 repository连接,如图所示 :

Page 77: Version Control with Subversion

Subeclipse 的使用• 点击增加 repository后,添加一个新的 SVN Repository

库 到 SVN Repositories 视 图 , 这 里 需 要 说 明的, repository 库必须首先建立后,用 svnadmin 工具建repository 库。如图所示 :

Page 78: Version Control with Subversion

Subeclipse 的使用• url 是 repository 库 所 在 地方, url 可 以 是 :

file:/// 、 svn:// 、 http:// 和 https:// 这样几种方式。 在 这里是 https 方式, https://localhost/svn/MyNewRepository ,在 svn 虚拟路径下有一个名叫 repository 的 sub 版本库。

• 由于采用 apache认证方式,需要帐号和密码。如果帐号认证正确,即可连接该 sub 库 。

• 如图所示:

Page 79: Version Control with Subversion

Subeclipse 的使用

Page 80: Version Control with Subversion

资源库 repository 的操作• 如上图所示,你可以打开相应得文件进行察看,诸如: txt 、 java等源文件,但是不能对该文件进行编辑,因为他是只读的,这些文件都是在服务器端的,只有把这些文件 checkout 本地的 working copy后才可以自由操作该项目中的文件。

• 点击右键版本库中的具体文件,弹出菜单,如图所示 :

Page 81: Version Control with Subversion

资源库 repository 的操作

Page 82: Version Control with Subversion

资源库 repository 的操作

•通过弹出菜单可以对该文件进行复制、删除、打开、移动和重命名等操作。一旦在 SVN Repositories视图中有操作,那么在版本历史视图中可以察看到版本号的变化和相应得操作。

•点击右键一个库中的路径,弹出菜单,可以从资源库中导出项目到工作拷贝中,如图所示

Page 83: Version Control with Subversion

资源库 repository 的操作

Page 84: Version Control with Subversion

六、使用 svn 中常见问题• Working copy 工作区与一般目录的混淆

• 本地版本管理与服务器版本管理

• 更新和提交( COMMIT UPDATE )

• 命令行客户端与 GUI 以 IDE 插件 之间的关系

• 合并和冲突

• 标签 TAGS 和 分支 BRANCHES TRUNK

• 解决冲突的方法

Page 85: Version Control with Subversion

七、 csdb 版本管理规则• 1 、项目负责人和版本管理员负责架构项目目

录结构,包括配置文件、第三方 JAR 文档

• 2 、项目负责人分配开发人员目录权限,由版本管理员负责实施 ,权限分配粒度要细

• 3 、 trunk ,tags ,branches , 项目负责人、协同版本管理员构建 tags 和 branches

• 4 、版本管理员负责解决开发人员在开发过程中的有关版本问题

Page 86: Version Control with Subversion

七、 csdb 版本管理规则• 5 、开发人员每次修改,或者新增、删除、拷贝工作区对象后,应该立刻提交到版本库,有效保持工作区与资源库的高度一致 ,每天下班之前提交、(更新)

• 6 、开发人员在每次修改工作区中代码或者文档时,首先更新该对象,可以尽量减少冲突、合并

• 7 、保证提交到的版本库的代码没有 BUG 以免影响开发组 ,可以适当利用加锁机制,减少冲突

Page 87: Version Control with Subversion

七、 csdb 版本管理规则• 8 、项目负责人和版本管理员负责软件的测试

版,构建测试环境 , branches 由版本管理员进行 ( checkout )

• 9 、项目负责人和版本管理员负责发布软件的发布版,与系统部协调构建发布环境 (export)

• 10 、 版 本 管 理 员负责清理 有关不 需 要 的branches ,tags

Page 88: Version Control with Subversion

总结• subversion

• 版本控制系统

• 日常工作常用 svn 命令介绍

• 图形化客户端 tortoiseSVN 介绍

• Subeclipse 插件的安装和使用

Page 89: Version Control with Subversion

谢谢各位光临!!!李树仁 2007-01-19