TortoiseSVN(Subversion)用户手册

qyvip

贡献于2013-02-15

字数:7173 关键词: Subversion 版本控制系统 手册

聚光科技(杭州)有限公司 2018-10-16 TortoiseSVN(Subversion)用户手册 目录 一、 TORTOISESVN(SUBVERSION)的基本概念 1 1. TortoiseSVN简介 1 2. Subversion的特性 1 3. 版本库 3 4. 拷贝-修改-合并 3 5. 锁定-修改-解锁 5 6. 工作拷贝 5 7. 修订版本 7 二、 TORTOISESVN的常用操作 8 1. 安装TortoiseSVN 8 2. 公司Subversion配置说明 9 3. 读操作(对只有读权限的用户) 9 A. TortoiseSVN客户端访问模式(I) 9 B. TortoiseSVN客户端访问模式(II) 10 C. Web浏览器访问方式 11 4. 写操作(对有读写权限的用户) 12 A. SVN检出(SVN CheckOut) 12 B. TortoiseSVN→版本库浏览器 13 C. SVN更新 14 D. SVN提交 15 E. TortoiseSVN→显示日志 15 F. TortoiseSVN→检查更新 16 G. TortoiseSVN→更新至版本 16 H. TortoiseSVN→已解决的 17 I. TortoiseSVN→还原 17 J. TortoiseSVN→添加 18 K. TortoiseSVN→设置(Settings) 18 L. TortoiseSVN→在此创建版本库 19 M. 解决冲突 19 聚光科技(杭州)有限公司 2018-10-16 一、 TortoiseSVN(Subversion)的基本概念 1. TortoiseSVN简介 TortoiseSVN是开源版本控制软件——Subversion在Windows操作系统下的一个资源管理器的插件,它有一个可爱的小乌龟图标。通过TortoiseSVN这个资源管理器,我们可以很方便通过鼠标右键来访问Subversion版本控制数据库,如图1.1。 图1.1.TortoiseSVN资源管理器中文界面 2. Subversion的特性 Subversion是一款开源的跨操作系统平台版本控制软件,主要有以下的特性: l 版本化的目录:Subversion实现了一个可以跟踪目录树更改的“虚拟”版本化文件系统,文件和目录都是有版本的。 l 真实的版本历史:通过Subversion,你可以对文件或是目录进行增加、拷贝和改名操作,也可以新增一个具有干净历史的文件。 l 原子提交:一系列的改动,要么全部提交到版本库,要么一个也不提交,这样可以让用户构建一个所要提交修改的逻辑块,防止部分修改提交到版本库。 聚光科技(杭州)有限公司 2018-10-16 l 版本化的元数据:每一个文件或目录都有一套属性—键和它们的值,你可以建立并存储任何键/值对,属性也是随时间的流逝而纳入版本控制的,很像文件的内容。 l 有效率的分支和标签:分支与标签的代价不与工程的大小成比例,Subversion建立分支与标签时只是拷贝整个工程,使用了一种类似于硬链接的机制,因而这类操作通常只会花费很少并且相对固定的时间。 Subversion的系统架构如下图所示: 图1.2.Subversion架构 聚光科技(杭州)有限公司 2018-10-16 3. 版本库 Subversion是一种集中的分享信息的系统,它的核心是版本库,它储存所有的数据,版本库按照文件树形式储存数据—包括文件和目录。任意数量的客户端可以连接到版本库,读写这些文件。通过写,别人可以看到这些信息,通过读数据,可以看到别人的修改。图 1.3 “一个典型的客户/服务器系统”描述了这种关系: 图1.3.一个典型的客户/服务器系统 4. 拷贝-修改-合并 Subversion,CVS和一些版本控制系统使用拷贝-修改-合并模型,在这种模型里,每一个客户联系项目版本库建立一个个人工作拷贝—版本库中文件和目录的本地映射。用户并行工作,修改各自的工作拷贝,最终,各个私有的拷贝合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。 这是一个例子,Harry和Sally为同一个项目各自建立了一个工作拷贝,工作是并行的,修改了同一个文件A,Sally首先保存修改到版本库,当Harry想去提交修改的时候,版本库提示文件A已经过期,换句话说,A在他上次更新之后已经更改了,所以当他通过客户端请求合并版本库和他的工作拷贝之后,碰巧Sally的修改和他的不冲突,所以一旦他把所有的修改集成到一起,他可以将工作拷贝保存到版本库,图 1.4 “拷贝-修改-合并 方案”和图 1.4(1) “拷贝-修改-合并 方案(续)”展示了这一过程。 但是如果Sally和Harry的修改交迭了该怎么办?这种情况叫做冲突, 这通常不是个大问题,当Harry告诉他的客户端去合并版本库的最新修改到自己的工作拷贝,他的文件A就会处于冲突状态:他可以看到一对冲突的修改集,并手工的选择保留一组修改。需要注意的是软件不能自动的解决冲突,只有人可以理解并作出智能的选择,一旦Harry手工的解决了冲突—也许需要与Sally 讨论—它可以安全的把合并的文件保存到版本库。 聚光科技(杭州)有限公司 2018-10-16 图1.4. 拷贝-修改-合并 图1.4(1). 拷贝-修改-合并 方案(续) 聚光科技(杭州)有限公司 2018-10-16 5. 锁定-修改-解锁 许多版本控制系统使用锁定-修改-解锁这种机制解决这种问题,在这样的系统里,在同一时间段里版本库只允许一个人改变文件。首先在修改之前,Harry要“锁定” 住这个文件,锁定很像是从图书馆借一本书,如果Harry锁住这个文件,Sally不能做任何修改,如果Sally想请求得到一个锁,版本库会拒绝这个请 求。她只可以阅读文件,直到Harry结束编辑并且放开这个锁。Harry解锁后,就要换班了,Sally得到自己轮换位置开始锁定并且编辑。图 1.5“锁定-修改-解锁 方案”描述了这样的解决方案。 在Subversion中,TortoiseSVN的比较合并只能针对文本文件而不能适用于二进制文件,所以,该方案适合于Subversion中的二进制文档如word、excel、ppt等,加锁进尽量以小的单位进行加锁,不要大范围加锁,那样会造成其它工作无法正常进行。 另外,Subversion中的加锁并不是决对,它提供了一个叫做“偷取锁”的功能,如Harry加的锁可以被Sally偷取过来。一般情况下,我们不建议使用,除非该锁长期被一个用户独自占据而得不到解锁才可以使用。 图1.5. 锁定-修改-解锁 方案 6. 工作拷贝 一个Subversion工作拷贝是你本地机器一个普通的目录,保存着一些文件,你可以任意的编辑文件,而且如果是源代码文件,你可以像平常一样编译他 们,你的工作拷贝是你的私有工作区,在你明确的做了特定操作之前,Subversion不会把你的修改与其他人的合并,也不会把你的修改展示给别人。 聚光科技(杭州)有限公司 2018-10-16 当你在工作拷贝作了一些修改并且确认它们工作正常之后,Subversion提供了一个命令可以“发布”你的修改给项目中的其他人(通过“提交”写到版本库),如果别人发布了各自的修改,Subversion提供了手段可以把这些修改与你的工作目录进行合并(通过“更新”读取版本库)。 一个工作拷贝也包括一些由Subversion创建并维护的额外文件,用来协助执行这些命令。通常情况下,你的工作拷贝每一个文件夹有一个以.svn为名的文件夹(隐藏文件夹),也被叫做工作拷贝管理目录,这个目录里的文件能够帮助Subversion识别哪一个文件做过修改,哪一个文件相对于别人的工作已经过期了。 一个典型的Subversion的版本库经常包含许多项目的文件(或者说源代码),通常每一个项目都是版本库的子目录,在这种安排下,一个用户的工作拷贝往往对应版本库的的一个子目录。 举一个例子,你的repository包含两个软件项目,paint和calc。每个项目在它们各自的顶级子目录,见图 1.6 “版本库的文件系统”。 图1.6. 版本库的文件系统 为了得到一个工作拷贝,你必须检出(check out)版本库的一个子树,(术语“check out”听起来像是锁定或者保存资源,实际上不是,只是简单的得到一个项目的私有拷贝),举个例子,你检出 /calc,你可以得到这样的工作拷贝: Svn://192.168.*.*/calc 聚光科技(杭州)有限公司 2018-10-16 A calc A calc/Makefile A calc/integer.c A calc/button.c 列表中的A表示是Subversion是增加一些条目到工作拷贝,你现在有了一个/calc的个人拷贝,有一个附加的目录—.svn—保存着前面提及的Subversion需要的额外信息。 7. 修订版本 一个svn commit操作可以作为一个原子事务操作发布任意数量文件和目录的修改,在你的工作拷贝里,你可以改变文件内容、删除、改名和拷贝文件和目录,然后作为一个整体提交。 在版本库中,每一次提交被当作一次原子事务操作:要么所有的改变发生,要么都不发生,Subversion努力使保持原子性以面对程序错误、系统错误、网络问题和其他用户行为。 每当版本库接受了一个提交,文件系统进入了一个新的状态,叫做一次修订(revision),每一个修订版本被赋予一个独一无二的自然数,一个比一个大,初始修订号是0,只创建了一个空目录,没有任何内容。 图 1.6 “版本库”可以更形象的描述版本库,想象有一组修订号,从0开始,从左到右,每一个修订号有一个目录树挂在它下面,每一个树好像是一次提交后的版本库“快照”。 图1.7.版本库 l 全局修订号 不像其他版本控制系统,Subversion的修订号是针对整个目录树的,而不是单个文件。每一个修订号代表了一次提交后版本库整个目录树的特定状态,另一种理解是修订号N代表版本库已经经过了N次提交。当Subversion用户讨论“foo.c的修订号 聚光科技(杭州)有限公司 2018-10-16 5”时,他们的实际意思是“在修订号5时的foo.c”。 二、 TortoiseSVN的常用操作 1. 安装TortoiseSVN ①. 下载TortoiseSVN:拷贝\\192.170.0.242\soft\Subversion目录下所有的文件(2个)。 ②. 安装TortoiseSVN:先选择TortoiseSVN-1.4.1.7992-win32-svn-1.4.2.msi按照提示一步一步安装,安装完成后,系统会提示您重启计算机,主要是为了使建立的版本文件夹能够以版本控制的形式进行显示。实际上,可以只注销当前用户,再登录即可实现。 ③. 上一步安装完成后,在桌面点击右键,看到的TortoiseSVN资源管理界面是英文的,如图2.1。现在我们开始安装TortoiseSVN的中文包,安装另一个文件LanguagePack-1.4.1.7992-win32-zh_CN.exe后,在桌面点击右键(图2.1(1)),选择Settings,如图2.1。 图2.1.TortoiseSVN资源管理器英文界面 在弹出的对话框中,选择General,在Language栏中选择“中文(简体)”后,点击“确定”即可转换到中文界面(如图1.1)。 聚光科技(杭州)有限公司 2018-10-16 图2.1(1).TortoiseSVN属性设置英文界面 ④. TortioseSVN的属性建议一般采用默认值,不要轻易更改。 2. 公司Subversion配置说明 公司的Subversion分为两个配置数据仓库: 产品库:http://192.170.0.243/svn/product,存放各产品开发项目的配置库; 部门库:http://192.170.0.243/svn/depart,存放研发各部门的预研、技术开发项目,以及部门内部技术参考资料、开发规范等内容。 3. 读操作(对只有读权限的用户) Subversion中,我们提供两种读操作方法: A. TortoiseSVN客户端访问模式(I) 安装了TortoiseSVN后,在桌面或者任意文件夹中的空白位置点击鼠标右键,则可以看到“SVN 检出”命令。选中该命令,则弹出以下对话框,如图2.2.a(i)。通过检出到本地,则用户就可以把Subversion版本库中的最新版本的数据下载到本地上来了,用户就可以自由地进行读取了。这种模式适合把经常要用的文件下载到本地上来,对只需浏览(不需下载到本地,只是偶尔用到)的文件,则可以使用B、C方式来查看。 聚光科技(杭州)有限公司 2018-10-16 图2.2.a(i)SVN 检出 B. TortoiseSVN客户端访问模式(II) 该模式需要安装TortoiseSVN客户端,通过电脑右键→TortoiseSVN→版本库浏览器(图2.2.a(1)),输入访问库的URL(http://fpioa/svn/product/[文件路径] )后,从弹出的版本库浏览器中即可查看文件(图2.2.a(2)),不过一定要注意的是如果浏览者想要查看文件的具体内容,只能通过鼠标右键选择打开或者打开方式选择对应的打开工具进行打开。 图2.2.a(ii)(1) 聚光科技(杭州)有限公司 2018-10-16 图2.2.a(ii)(2) 访问者通过这种方式能清晰地看到他能访问的权限范围之内的目录的总体结构,是树状的。 C. Web浏览器访问方式 我们也可以通过Web浏览器来访问Subversion版本库,作法是直接通过URL来访问,所有的文件都是通过IE或者其它浏览器来显示的。如图2.2.b。 聚光科技(杭州)有限公司 2018-10-16 图2.2.b 这种访问方式只能看到当前目录下的文件夹和文件,不能呈现树状目录。所以,相对来说,可能会有所不便。 4. 写操作(对有读写权限的用户) A. SVN检出(SVN CheckOut) 安装了TortoiseSVN后,在桌面或者任意文件夹中的空白位置点击鼠标右键,则可以看到“SVN 检出”命令。选中该命令,则弹出以下对话框,如图2.2。 图2.2.SVN 检出 功能:从Subversion库中取得一份工作拷贝,该工作拷贝可以是整个库中指定版本的所有文档,也可以是指定版本的部分文档。 l 版本库UEL 输入格式:svn:// + Subversion数据库所在计算机的IP [+库中文件存放的路径]([]中的信息为可选输入)。初次登录会提示您输入用户名和密码。如图2.2(1)。 通过其后“…”按钮可以进入查看Subversion版本库浏览器的页面。 聚光科技(杭州)有限公司 2018-10-16 图2.2(1).用户登录界面 注意:检出到的目录应该是一个空目录。 检出后的文件夹,如图2.2(2)。 图2.2(2).检出后的文件夹层次 B. TortoiseSVN→版本库浏览器 图2.3.版本库浏览器URL 功能:查看最新版本下的Subversion库中的目录列表和文件列表,如图2.3(1)。 聚光科技(杭州)有限公司 2018-10-16 图2.3(2). 版本库浏览器 C. SVN更新 打开地方:所有本地工作拷贝文件夹中的任何地方单击右键打开,见图2.6。 功能:从Subversion库中获取最新的文档版本。 聚光科技(杭州)有限公司 2018-10-16 图2.6.版本拷贝中的TortoiseSVN资源管理器 D. SVN提交 打开地方:所有本地工作拷贝文件夹中的任何地方单击右键打开,见图2.6。 功能:提交经过编辑修改的本地工作拷贝到Subversion库中。 E. TortoiseSVN→显示日志 功能:查看各版本的日志信息,能显示出文件的增、改、删等信息。如图2.8 聚光科技(杭州)有限公司 2018-10-16 图2.8.日志信息 F. TortoiseSVN→检查更新 功能:检查工作拷贝的版本信息,也可以检查Subversion文档库中的最新版本信息,从而决定是否升级。 G. TortoiseSVN→更新至版本 功能:更新到最新版本或您指定的已经存在的版本,见图2.10。 聚光科技(杭州)有限公司 2018-10-16 图2.10.更新至指定版本 H. TortoiseSVN→已解决的 功能:由于当前文件拷贝中的数据与Subversion版本库中对应文件中的数据不同引起冲突,冲突解决了则先进行引命令,再行提交。 I. TortoiseSVN→还原 功能:放弃当前文件拷贝中所做的部分或全部修改,还原到与版本库一致。 聚光科技(杭州)有限公司 2018-10-16 图2.12.还原 J. TortoiseSVN→添加 功能:向文件拷贝所在的文件夹中添加新的文件,并作出标识,是新添加的,下一步提交时将一并提交到Subversion版本库中去,如图2.13及图2.13(1)。 图2.13.添加文件或文件夹 图2.13(1).添加后的文件或文件夹 K. TortoiseSVN→设置(Settings) 功能:设置TortoiseSVN的界面语言、外观样式、已保存数据等基本信息,如图2.14。通过“已保存数据”选项,可以清除已经保存的如URL历史记录、日志信息、窗口大小位置和认证数据。 聚光科技(杭州)有限公司 2018-10-16 图2.14.TortoiseSVN设置 L. TortoiseSVN→在此创建版本库 功能:创建Subversion库,由于有专门的文档服务器,所以该功能一般对个人来说用不到,就不详细介绍了。 M. 解决冲突 前边我们提到了产生冲突的原因是由于本地文件拷贝与Subversion库中的文件信息不同所造成的。为了解决冲突,主要有以下几步: 1. 将本地文件拷贝中数据更新到最新版本。 2. 找到产生冲突的文件,如图2.16,可以看到除了产生冲突的文件外,还生成了3个其它文件。 图2.16.产生冲突的文件 3. 通过右键→TortoiseSVN→编辑冲突(图2.16(1)),得到图2.16(2)所示。 聚光科技(杭州)有限公司 2018-10-16 图2.16(1).打开编辑冲突页面 图2.16(2).编辑冲突 聚光科技(杭州)有限公司 2018-10-16 4. 通过对本地文件和远程文件中红色部分的取舍排序来进行结果合并,从而得到最终合并结果。如上图中先把本地文件中“使用整个文件”,再对远程文件中“789”所在一行取“优先使用本地的而非远程的文字块”选项,得到如图2.16(3)的合并结果,保存。 图2.16(3).合并结果 5. 执行右键→TortoiseSVN→已解决的(图2.16(1)),刷新后,文件的图标转换为可以示提交状态,即行提交到Subversion版本库中,即要成功。 6. 最后还是要提醒各位,该合并功能能用于像.txt,.c,.cpp,.java等文本文件,而不能用于像.doc,.xls,.ppt等二进制文件。所以,各位在处理二进制文件冲突时只能先行将本地拷贝中的冲突文件重命名,再一次更新本地的版本拷贝后,将新的版本拷贝版本与您所有的重命名的二进制文件进行手工对比修改后再行提交。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档