中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
TortoiseSVN使用说明
作者:digitking 时间:2003-02-10 11:09 出处:互联网 责编:chinaitpower
              摘要:TortoiseSVN使用说明

TortoiseSVNSubversion客户端

1.           引言

·         团队开发?

·         修改文件而他人也在改?你修改的内容丢失?

·         保存了文件可又后悔了?想得到几天前的版本?

·         发现了bug,想知道bug何时引入的?

这些问题都遇到了?那就使用TortoiseSVN吧。TortoiseSVNSubversion的客户端。Subversion是针对CVS的不足而开发的版本控制系统。

2. 基本概念

档案库Repository

Subversion是版本管理的后台系统,其核心是保存数据的档案库-repository 档案库用分层的“文件-目录”文件系统数来存储数据。连接到档案库的客户能读写数据。档案库记录了你的每一次修改!客户端可以从档案库中取到过去的版本。

2.1. 典型服务器/客户机模型

版本模型Versioning Models

基本问题:共享数据而不相互覆盖?

文件共享的问题The Problem of File-Sharing

在合作开发中文件共享的问题是显而易见的。

 2.2. 要避免的问题

锁定-修改-解锁The Lock-Modify-Unlock Solution

Visual SourceSafe采用的就是这种模型。

Figure 2.3. 锁定-修改-解锁方案

问题:

·         锁定可能引起管理问题: 如忘记解锁别人无法使用。

·         锁定造成不必要的串行作业。

·         锁定可引起安全问题。

拷贝-修改-合并The Copy-Modify-Merge Solution

SubversionCVS等采用拷贝-修改-合并模型。项目成员从档案库读取个人的工作拷贝,所有项目成员并行地在工作拷贝上工作,然后合并在一起形成新的版本(version)。

 2.4. 拷贝-修改-合并方案

Figure 2.5. ...Copy-Modify-Merge Continued

如果修改不重叠,TortoiseSVN可自动合并。修改重叠则引起冲突(conflict)。冲突只能靠手工修改!

这种模型好像很混乱,但实际上很好用。解决冲突的时间大大小于因锁定而等待的时间。解决冲突的最好办法是沟通。

 

实际操作Subversion

工作拷贝Working Copies

Subversion的工作拷贝就是包含文件的本地目录树,与一般目录的树状结构相同,可以进行任意的工作!工作结束后可将新的文件“发布”到档案库。

工作拷贝中包含了由Subversion创建和维护的一个特殊的子目录.svn ,该目录保存了重要的信息。不要删除这个目录!

例如,假定你的档案库包含两软件项目:paintcalc

 2.6. 档案库文件系统

取出(checkout得到工作拷贝。

Repository URLs:档案库URL

Subversion的档案库借助不同方法得到:本地磁盘、网络协议等:

Table 2.1. Repository Access URLs

Schema

Access Method

file:///

本地磁盘.

http://

透过Apache.

例:

File:///c:/svn/prj/template ,

File:///c:/svn/prj/template/Dist   

c:/svn/prj/template是档案库的目录,Dist是档案库的子目录名称

http://build:88/prj/template

http://build:88/prj/template/Dist

http://build:88Apache设置的URLprj是通过Apache设置的位置,template是档案库名称,Dist是目录名

版本Revisions

svn commit 操作送交修改。档案库接受一次送交后,在文件系统树创建新的状态,称之为版本revision。每个版本是一个递增的自然数。

 2.7. 档案库

全局版本号

版本号代表整个档案库而非单个文件!

 

工作拷贝如何跟踪档案库?

Subversion将下列两种管理信息记录在.svn/

·         工作版本 working revision

·         从档案库更新的时间。

通过这些信息,在与档案库交换信息后,Subversion可得出文件的四种状态:

l         未修改,新版本,送交无效

l         本地修改,新版本,可送交,更新无效

l         未修改,但在档案库中已修改,过期,送交无效,可更新

l         本地修改,在档案库中已修改,过期。先更新,修改冲突,再送交。

3. 服务器设置

基于Apache的服务器

这是设置Subversion服务器的最好方法。优点:

l         利用WebDAV

l         用浏览器浏览档案库

l         认证

l         安全

本地档案库

TortoiseSVN创建档案库

 3.1. 没有版本控制的文件夹TortoiseSVN菜单

1.    进入资源管理器

2.    创建档案库的子目录,如C:/SVNRepository

3.    在新建的目录中右键 TortoiseSVN->在此建立档案库Create Repository here....

可用FSFSBDB两种格式创建。

注意:不要编辑档案库中的文件!

本地进入方式:file:///C:/SVNRepository/

档案库备份

最简单的办法是备份档案库文件夹!

推荐办法:

svnadmin hotcopy path/to/repository path/to/backup --clean-logs

4. 日常应用指南

操作TortoiseSVN

 4.1. TortoiseSVN右键菜单

所有TortoiseSVN命令均可以在资源浏览器的右键菜单中执行。

认证

如果档案库设置了权限保护,则会弹出认证对话框。

 4.2. 认证对话框

如果使用Windows域认证,用户名前需要包括域名,如MYDOMAIN/johnd.

数据汇入档案库Importing Data Into A Repository

档案库结构Repository Layout

根据不同需要来建立档案库的结构:

1.    创建新的空文件夹。

2.    创建目录结构 先不放文件!

3.    右键菜单,点击汇入…(Import...)将结构加入到档案库中。

注意:文件夹的名字不汇入档案库。

通过档案库浏览器(Repo Browser)可直接浏览档案库结构。

汇入Import

在将项目文件汇入到档案库前,先进行下列操作:

1.    删除与项目无关的中间文件如生成的临时文件*.obj等。 如果设置了忽略的文件类型,或忽略的目录,可不删除。

2.    在文件夹中组织文件。

在资源浏览器中进入项目顶层文件夹,右键得到快捷菜单,选择汇入… (Import...) ,出现对话框:

 4.3. 汇入对话框

在对话框中输入仓库的URL

汇入信息(import message)作为记录信息。

注意

只要点击确定OK TortoiseSVN将把整个目录及目录内的文件加入到档案库中。顶层文件夹的名字不会加入到档案库中,但其他子文件夹的名字均加入以保持档案库的结构。该项目的文件现在处在档案库版本控制中。请注意:目前的本地项目文件夹不处在版本控制下!要得到版本控制,必须取出checkout档案库得到工作拷贝!

特殊文件Special Files

有时你有一个包含用户特定数据的文件需要在版本控制下,这意味着每个开发人员需要修改它以适应他的本地设置,用户每次送交均要保存这文件的变化,因此对这类文件进行版本控制很困难。

对此建议使用template 文件,创建一共文件,它包含所有开发人员需要信息,将它加入到版本控制下,每个开发人员均可取出这个文件, 复制并重新命名,然后修改就没有问题了。不需要加入版本控制的文件可通过设置Subversion 特性(property svn:ignored 来忽略。

 

取出工作拷贝Checking Out A Working Copy

从档案库执行取出(checkout就能得到工作拷贝。

在资源浏览器中选定将要存放工作目录的拷贝,右键弹出快捷菜单,选择C…Checkout...,将出现对话框:(如果该目录已在版本控制下,则没有取出而是更新(Update送交(Commit

 4.4. 取出对话框

如果文件夹不存在,会自动创建。

注意

你只能将文件取出到一个空目录里。如果你想取出刚汇入的文件,Subversion将报错。你只能将文件取出到另一个目录或先删除已经存在的源文件再执行取出。

 

汇出Exporting

如果不想包含.svn ,可将档案库汇出到一个空目录。这时所有文件不处在版本控制下。方法:右键,选择TortoiseSVN- 汇出…(Export...)

状态信息Getting Status Information

通过图标可知道文件的状态:修改/新增/删除/换名。

图标

 4.5. 资源浏览器显示的图标

新近取出的工作拷贝。Subversion状态是正常normal.

文件已修改,需要送交到档案库。Subversion状态是已修改modified

在更新文件后自己的修改与他人的修改冲突。状态是冲突conflict

将加入到版本控制的文件或文件夹。状态是新增added

文件(夹)将从版本控制中删除,版本控制将忽略这些文件(夹)。状态是删除deleted

 

档案库状态 Status Of The Repository

 4.6. 检查更新

想知道别人修改了哪些文件?用检查更新..(Check For Updates...) 命令。弹出的对话框将显示出你的修改或档案库中别人的修改,这样可在更新前检查是否有冲突。

送交Commit.... 命令也可用来显示本地的修改,如果不想实际送交到档案库,点击取消Cancel 即可。

将别人的改动更新到你的工作拷贝

4.7. 已完成更新的进度对话框

有时你想将他人的改动合并到你本地的工作拷贝。从服务器上取改动到本地的过程叫更新updating 更新也许是单个文件、或选择的一组文件、或整个目录。在资源浏览器中选择待更新的文件或目录, 右键并选择更新Update ,他人的修改将合并到你本地的文件中,你所做的改动保存在同一文件中。这时档案库没有受变化,即合并只在本地进行。

如果你和他人改动的是相同部分但改动不一样,就会在更新过程中产生冲突 conflicts冲突在对话框中用红色表示,双击后用外部编辑器解决冲突。

TortoiseSVN也允许你将工作拷贝更新到指定版本。用更新至版本Update to Revision... 命令,在弹出的对话框中输入指定的版本号即可。

注意

如果你更新到指定版本,再送交是将出现out of date 错误!如果你想撤销修改并从以前的版本开始工作,你必须使用从“显示记录”对话框中选择复原自此版本以来的变更Revert changes from this revision 命令或使用快捷菜单中的合并Merge... 菜单命令。

更新至版本Update to Revision... 命令允许复原至低版本。比如你的工作目录版本是100,你想复原至版本50-直接填写在复原对话框中填写复原至版本50。通常,不复原单个文件,确实需要,从记录对话框(Log)选择储存版本至Save revision to... 命令。

解决冲突Resolving Conflicts

有时你从档案库更新文件会有冲突。冲突产生于两人都修改文件的某一部分。解决冲突只能靠人而不是机器。当产生冲突时,你应该打开冲突的文件,查找以<<<<<<<开始的行。冲突部分被标记:

<<<<<<< filename
    your changes
=======
    code merged from repository
>>>>>>> revision

Subversion为每个冲突文件产生三个附加文件:

filename.ext.mine

更新前的本地文件。

filename.ext.rOLDREV

你作改动的基础版本。

filename.ext.rNEWREV

更新时从档案库得到的最新版本。

使用外部合并工具或使用快捷菜单的编辑冲突Edit Conflict 命令来解决冲突。然后从快捷菜单中执行已解决Resolved 命令,将改动送交到档案库。请注意,解决命令并不解决冲突,而仅仅是删除filename.ext.mine and filename.ext.r* 文件并允许你送交。

改动送到档案库Sending Your Changes To The Repository

这个过程叫送交committing 在送交前需要确认工作拷贝是最新的。用更新Updates 或先用检查更新Check For Updates 检查变更了的文件。如果你的工作拷贝已更新且没有冲突,可用快捷菜单中的送交Commit... 完成送交过程。

 4.8. 送交对话框

如果某文件不想在版本控制下,取消复选框即可。

送交框中不需要控制的文件

许多不需要版本控制文件如obj文件等也出现在送交对话框中,解决办法:

·         在服务器端编辑配置文件