《SVN操作手册.pdf》由会员分享,可在线阅读,更多相关《SVN操作手册.pdf(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 SVN 操作手册 2011 年 12 月 09 日日期 作者 说 明 2011.12.09 殷海峰 完成初稿 2011.12.11 殷海峰 冲突的解决以前以 TortoiseSVN 1.4.5.10425 为准,现在以 TortoiseSVN-1.6.5.16974 为准 变更记录 变更记录 I 目 目 录 录 第 1 章 第 2 章 2。1 简介。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。1 SVN 服务端。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.2
2、安装 VisualSVN。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。2 2。2 VisualSVN 服务.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。3 2.3 版本库.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。4 2.3。1 2.3.2 创建版本库。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.5 删除版本库.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。
3、.。.。.。.。.。.。.。.。.。.。6 2。4 用户和用户组。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。6 2.4。1 2.4.2 2。4.3 第 3 章 创建用户。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。6 创建用户组.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.7 分配权限.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。8 SVN 客户端.。.。.。.。.。.。.。.。.
4、。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.11 3.1 3。2 3。3 3.4 安装 TortoiseSVN.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。11 Import(导入)。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.11 Export(导出).。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。13 Checkout(检出).。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。14 3.4.1 两个版本。.。.。.。.。.。.。
5、.。.。.。.。.。.。.。.。.。.。.。.。.。.。14 3.5 3.6 3.7 3。8 3.9 删除文件.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.15 重命名文件.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。16 增加文件.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。16 移动文件。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.17 Commit(提交)。.。.。.。.。.。
6、.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.17 3。9。1 3。9。2 3。10 3。11 non-versioned 文件.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.18 versioned 文件.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.20 Update(更新).。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。21 冲突.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.
7、22 3.11.1 文件冲突.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。22 II 目 录 3。11。2 树冲突。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。27 3.12 Properties(属性)。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。.。28 III 第 1 章 简介 第 1 章 简介 SVN 是 Subversion 的缩写,它是一款版本管理软件。所谓版本管理软件,首要的功能就是存储文件。此外,它还记录了这些文件的版本信息,用户可以 查看各个版本之间的
8、差异,也可以提取某一文件的任一个历史版本。SVN 采用 C/S 结构,即:客户/服务器结构.在客户端,使用的是 Tortoise SVN;在服务器端,如果是 Windows 系统,可以使用 VisualSVN。1 第 2 章 SVN 服务端 第 2 章 SVN 服务端 SVN 服务端的配置有多种方案:可以安装 Svnserve 服务,也可以安装 Ap ache 服务,但最简单的莫过于使用 VisualSVN Server 这个程序。2。1 安装 VisualSVN 运行安装程序,如:VisualSVNServer2.1。10.msi。在 Select Components(选择组件)界面下,请
9、选择第一项“VisualSVN Server and Management Co nsole”.单击“Next”按钮.图 2.1 选择 VisualSVN 安装组件 接下来的界面如下:2 第 2 章 SVN 服务端 图 2.2 VisualSVN 安装选项 Location 表示 VisualSVN 的安装目录;Repositories 表示版本库的位置。所有文件、代码、版本信息都将存在这里.VisualSVN 服务采用两种协议:http 协议和 https 协议。后者是经过加密的,所以推荐使用它。勾中“Use secure connection(https:/)”复选框就意味着使用 http
10、s 协议.不管 http 协议还是 https 协议,都需要一个 Server Port(服务端口)。除非 这个端口已经被占用,否则请尽量采用默认值.Authentication 表示认证。服务器上版本库的内容不是任何人都可以访问 的,需要客户端用户登录后才能访问。用户登录有两种方式:使用 SVN 认证或 使用 Windows 认证。推荐使用第一项“Use Subversion authentication,即 SV N 认证。单击“Next”按钮,再单击“Install按钮,完成 VisualSVN 的安装。2。2 VisualSVN 服务 3 第 2 章 SVN 服务端 在 Windows
11、 上安装 VisualSVN 之后,VisualSVN Server 也就被安装并启动 了。单击开始菜单的【运行】菜单项,输入 services。msc 后单击“确定”按钮。图 2。3 运行 services。msc Windows 显示如下。可以看到 VisualSVN Server 已经被启动。启动类型为“自动”,因此下次启动 Windows 后该服务会自动运行.因此,服务器无需运 行 VisualSVN 即可实现客户端对服务器端版本库的访问。图 2。4 Windows 服务 2。3 版本库 版本库就是存放文件、代码及版本信息的地方。服务器针对某一项目创建 版本库后,客户端才能访问该项目的
12、文件、代码。因此在服务器上创建、删除 版本库是十分重要的工作.4 第 2 章 SVN 服务端 2.3。1 创建版本库 运行 VisualSVN,在其主界面下使用鼠标右键单击 Repositories(版本库),在弹出菜单里单击【Create New Repository。】菜单项.图 2。5 创建版本库菜单 VisualSVN 显示如下界面。请输入新的版本库名称后,单击“OK”按钮即 可完成版本库的创建。注意“Create default structure(trunk,branches,tags)”这个 复选框,勾中它之后再单击“OK”按钮,将在新建版本库里创建 trunk、branc he
13、s、tags 这三个子目录.图 2。6 创建版本库界面 5 第 2 章 SVN 服务端 新建版本库后,VisualSVN 主界面下将能看到这个新建的版本库,详见下 图:图 2。7 新建的版本库 2。3。2 删除版本库 在图 2。7中,鼠标右键单击Test版本库,然后在弹出菜单里单击【删除】按 钮,即可完成Test版本库的删除。注意:删除版本库是无法撤销的,请谨慎处 理.2.4 用户和用户组 安装过程的图 2。2中,提到了SVN认证。下面将介绍如何创建用户、用户组,并针对某个版本库给用户、用户组分配权限。这样客户端用户才能输入用户名、密码,完成SVN认证,进而访问自己需要的资料。2。4.1 创建
14、用户 假定现在某个软件项目有两组人员:开发组的 D01、D02、D03;测试组的 T01、T02、T03。首先增加用户 D01。鼠标右键单击下图的“Users”,在弹出 菜单里单击【Create User.。.】菜单项。6 第 2 章 SVN 服务端 图 2.8 创建用户菜单 VisualSVN 显示如下界面.请输入 User name(用户名)为 D01,再输入 P assword(密码)和 Confirm password(确认密码),单击“OK”按钮即可完成 用户 D01 的创建。图 2。9 创建用户界面 注意上图的“User name and password are case sen
15、sitive”,它表示用户名 和密码都是区分大小写的。使用相同的方法增加开发组的 D02、D03 和测试组的 T01、T02、T03。2。4.2 创建用户组 7 第 2 章 SVN 服务端 下面将创建用户组 Developer,并将用户 D01、D02、D03 加入该组。鼠标 右键单击下图的“Groups”,在弹出菜单里单击【Create Group.。】菜单项.图 2。10 创建用户组菜单 VisualSVN 显示如下图所示.请输入 Group name(用户组名)为 Develop er,再单击“Add按钮增加 D01、D02、D03 这三个用户。单击“OK”按钮 完成用户组 Develo
16、per 的创建.图 2。11 创建用户组界面 使用相同方法可以创建测试组 Tests,并将 T01、T02、T03 加入改组。2.4.3 分配权限 8 第 2 章 SVN 服务端 针对 Test 版本库,需要设置开发组 Developer 和测试组 Tests 的权限.鼠标 右键单击 Test 版本库,单击弹出菜单中的【Properties。.】菜单项。图 2.12 设置权限菜单 VisualSVN显示如图 2。13所示。首先选择Everyone,将其权限设置为No Ac cess.其用意为:任何人都不能访问Test版本库。然后单击“Add.。.”按钮,增 加Developer和Tests用户
17、组。图 2。13所示界面下,设置Developer的权限为Read/Write,设置Tests的权限为Read Only。这样开发组就可以读写Test版本库,而测 试组只能读取Test版本库.假定开发组的D03 是个新手,不允许他进行写操作,则应该再次设置D03 的权限。图 2。13中,单击“Add.按钮,增加D03 用户。然后设置D03 的权限 为Read Only。9 第 2 章 图 2。13 SVN 服务端 设置权限界面 10 第 3 章 SVN 客户端 第 3 章 SVN 客户端 SVN 客户端为 TortoiseSVN,安装之后就可以访问服务器端的版本库。读 取项目文件、代码,还可以
18、将修改后的文件、代码上传到服务器上,与项目组 成员共同维护项目文件、代码。3.1 安装 TortoiseSVN 运行安装程序,如:TortoiseSVN-1。6。5。16974win32svn1.6.5。msi。其安装 步骤比较简单,这里就不赘述了。下文的讲解以该版本为准。如果需要,可以安装 TortoiseSVN 的简体中文语言包,如:LanguagePack_ 1。6。5.16974win32zh_CN。msi。这样,使用 TortoiseSVN 时就可以灵活设置语言.3.2 Import(导入)导入、导出是以服务器上的版本库为中心的。导入就是将项目文档写入版 本库。Windows 资源管
19、理器中,鼠标右键单击要导入的文件夹。在弹出菜单中,单击【TortoiseSVN】下的【Import。】菜单项。图 3。1 导入菜单 11 第 3 章 SVN 客户端 TortoiseSVN 显示如下界面。在 URL of repository 下输入版本库的地址。在 Import message 下输入导入信息。单击“OK”按钮。图 3.2 导入设置界面 进入 SVN 认证界面。输入用户名和密码后,单击“OK”按钮完成认证。注意用户名和密码都是区分大小写的.如果觉得每次都要输入用户名和密码比 较繁琐,请勾中“Save authentication”复选框。下次 SVN 会自动完成认证。图 3。
20、3 认证界面 12 第 3 章 SVN 客户端 SVN 完成认证后,会将选定的文件夹内容导入到版本库中.需要说明的是 1、一般只是在项目开始的时候才会用到导入功能;2、如果待导入的文件或文件夹在版本库内已经存在,则导入会失败.也就 是说不能重复导入;3、目录问题。一次只能导入一个文件夹.假如导入的文件夹为 Folder。导 入到版本库时不会有 Folder 这个文件夹;3.3 Export(导出)导出就是将项目文档从版本库中提取出来.Windows 资源管理器中,单击 鼠标右键.在弹出菜单中,单击【TortoiseSVN】下的【Export。.】菜单项。SV N 显示如下.图 3。4 导出界面
21、 在 URL of repository 下输入版本库的地址.在 Export directory 下输入本 机存放目录。导出深度有四个选项,分别为:Fully recursive(深度递归):导出指定目录下的文件、各级子目录以及各 13 第 3 章 SVN 客户端 级子目录下的文件。也就是全部导出。默认就是选择该项;Immediate children,including folders(直接子节点,包含文件夹):导出指 定目录下的文件和一级子目录,但不导出一级子目录内的文件;Only file children(仅文件子节点):只导出指定目录下的文件,不导出一 级子目录及一级子目录内的文件
22、.Only this item(仅此项):只导出指定目录.导出后就是一个空目录,没 有什么实际意义。Revision 是版本的意思。项目组里任何一人修改了文档,上传到服务器上 后都会形成一个新的版本,也就会有一个新的版本号。HEAD revision 表示最 新的版本,也可以输入指定的版本号.配置好后,单击“OK”按钮。如果本机存放目录不为空,SVN 会弹出如下信息.单击“Yes”继续导出。图 3。5 本级目录不为空 因为要和服务器通讯,因此与导入一样,需要进行用户认证。认证界面如图 3.3所示。完成用户认证后,SVN会将版本库里的文档复制到本机.3.4 Checkout(检出)Windows
23、 资源管理器中,单击鼠标右键。在弹出菜单中,单击【SVN Che ckout.。】菜单项。剩下的步骤与导出大致相同。3.4。1 两个版本 既然有导出功能了,还要检出做什么呢?因为与导出不同,检出的文档有 两份。一份是用户能看到、修改的文档,被称之为 Working Copy,以下简称 C opy 版;另一份是被隐藏在.SVN 文件夹下的文档,被称之为 Working BASE,14 第 3 章 SVN 客户端 以下简称 BASE 版。假如有 Copy 版的文件 1。txt,则其对应的 BASE 版文件为。svntext-base1.txt.svnbase.1。txt 有两份,被称之为 vers
24、ioned 文件。如果用户 将 2。txt 复制到检出目录,则 2。txt 只有一份,被称之为 non-versioned 文件。当用户修改了 Copy 版的文档,上传到服务器版本库的时候.SVN 会比较 Copy 版和 BASE 版有什么不同之处,然后只将用户的修改信息上传至服务器。当用户修改了 Copy 版的文档,该文档的图标会被改变。这也是 SVN 比较 Copy 版和 BASE 版的结果。versioned 文件有两个版本,因此对它的删除、重命名、移动必须通过 SV N 来完成,下面几节将介绍这些操作。3.5 删除文件 资源管理器中,鼠标右键单击待删除的文件,单击弹出菜单的【Torto
25、iseS VN】【Delete】菜单项即可完成删除操作。图 3.6 删除文件 15 【第 3 章 SVN 客户端 3.6 重命名文件 资源管理器中,鼠标右键单击待重命名的文件,单击弹出菜单的【Tortois eSVN】Rename.】菜单项.SVN 显示如下界面.输入新的文件名后,单击“O K”按钮即可完成重命名操作。图 3.7 重命名文件 3.7 增加文件 检出目录里的 non-versioned 文件可以增加至 BASE,变成 versioned 文件。资源管理器中,选中若干项文件或文件夹。鼠标右键单击某一选中项。单 击弹出菜单的【TortoiseSVN】【Add。.】菜单项.SVN 显示
26、如下界面.单击“O K”按钮即可完成增加操作.图 3。8 增加文件 需要注意的是这个增加只是增加到本机的 BASE,而不是直接增加到服务 16 第 3 章 SVN 客户端 器的版本库中.3。8 移动文件 资源管理器中,选中若干项文件或文件夹.移动鼠标至某一选中项,按下 鼠标右键不放,移动鼠标至目标文件夹再放开鼠标右键。会弹出 SVN 右键菜单。下面两张图片一个是移动多个文件的,一个是移动单个文件的。图 3。9 图 3。10 移动多个文件 移动单个文件 SVN Move的含义是移动文件。SVN Copy的含义是复制并增加文 件。SVNand rename 是移动或复制文件之后再重命名。3。9 C
27、ommit(提交)当用户对检出的文档做了修改后,需要将修改信息上传到服务器的版本库 里,以便项目组的其它成员共享.这个上传的过程就是提交。Windows 资源管理器中,鼠标右键单击要提交的文件夹。在弹出菜单中,17 第 3 章 SVN 客户端 单击【SVN Commit.。】菜单项。SVN 显示如下界面:图 3.11 提交界面 message 中写入你对项目文档都做了哪些修改。一定要养成填写该项的好 习惯,方便项目组其他成员清楚项目都发生了哪些变化。Changes made 下的列表列出了哪些文件被改变了。改变的文件分为两大 类:一类是在 Copy 版中存在,但在 BASE 版中不存在的文件,
28、即 non-versione d 文件;另一类是在 BASE 版中存在的文件,即 versioned 文件,其 Text status 有可能是 modified(修改)、added(增加)、deleted(删除)列表中勾中要提交的文件,单击“OK按钮即可完成提交操作。提交过程 中可能会产生冲突,其解决方法请参考“冲突”这一节。3。9。1 non-versioned 文件 对于 nonversioned 文件,SVN 默认不提交至服务器。下次提交的时候,如 18 第 3 章 SVN 客户端 果希望某个 nonversioned 文件不再出现在列表中,其方法就是忽略。提交界面(图 3。11)中,
29、鼠标右键单击一个nonversioned文件夹,弹出菜 单中有【Add to ignore list】.它有两个选项,一个是文件夹本身,另一个是*。前者表示忽略该文件夹,下次提交时该文件夹将不再显示在列表里。后者表示 忽略所有nonversioned文件,下次提交时所有的nonversioned文件将不再显示在 列表里。显然忽略是应该谨慎使用的。图 3.12 忽略文件夹 提交界面(图 3.11)中,鼠标右键单击一个nonversioned文件,弹出菜单 中有【Add to ignore list】。以下图为例,它有两个选项,一个是文件本身,另 一个是*。pch。前者表示忽略该文件,下次提交时该
30、文件将不再显示在列表里。后者表示忽略所有扩展名为pch的nonversioned文件,下次提交时这些文件将不 再显示在列表里.应该谨慎使用后者。19 第 3 章 图 3。13 SVN 客户端 忽略文件 忽略的文件信息被写入。SVN 目录,具体请参考“Properties(属性)”。VC+项目中,有些文件无需提交,如:*.aps、。ncb、*。plg、*.clw可 以将这些文件忽略。此外,编译会产生大量的中间文件。可以将这些中间文件 所在文件夹忽略。3。9。2 versioned 文件 对于 versioned 文件,SVN 默认将其提交至服务器。如果下次提交的时候,不希望提交某个 versio
31、ned 文件,其方法就是将其移动到提交忽略列表。提交界面(图 3。11)中,鼠标右键单击一个versioned文件,单击弹出菜单 中的【Move to changelist】【ignoreoncommit】菜单项即可将该文件移动到提 交忽略列表。操作界面见图 3.14.移动到提交忽略列表中的文件,可以从该列表中移除。见图 3。15,鼠标右 键单击ignoreon-commit列表中的一个文件,单击弹出菜单中的【Remove from changelist】菜单项.有些软件项目中会有配置文件.每运行一次软件,配置文件都有可能会被 改动。这些文件需要上传至版本库,但每次修改后无需更新。此时,最好的
32、办 法就是将其移动到提交忽略列表。20 第 3 章 SVN 客户端 图 3.14 移动至提交忽略列表 图 3。15 从列表中移除 3。10 Update(更新)一个软件项目组有多个成员。成员 A 修改代码并提交之后,成员 B 如何获 得最新版本?方法就是成员 B 需要更新本地代码.Windows资源管理器中,鼠标右键单击检出的项目目录.在弹出菜单中,单击【SVN Update】菜单项。因为要和服务器通讯,因此需要进行用户认证。认证界面如图 3。3所示.完成认证后,SVN将更新本地文件为最新版本。注意:更新过程中可能会产生冲突,其解决方法请参考“冲突”这一节.21 第 3 章 SVN 客户端 3
33、。11 冲突 多人维护一套代码,以下情况是难免的:1、程序员 A 和程序员 B 都修改了文件 1.txt,然后都向版本库提交.版本 库不知道以哪个版本为准,这会产生文件冲突;2、程序员 A 修改了文件 1。txt,向版本库提交时发现文件 1.txt 已经被程序 员 B 删除了或重命名了或移动到别的目录了,这会产生树冲突.3.11.1 文件冲突 文件冲突比较简单,就是多个成员对同一文件进行了修改,版本库不知道 该以哪个版本为准.对于文件冲突,这里分两种情况说明。3.11.1。1 文本文件 假定项目里有文件 1。txt,其内容如下:开发组 王二 测试组 李四 项目成员 A 负责维护开发组成员名单,
34、项目成员 B 负责测试组成员名单。现在开发组增加了“张三,测试组增加了“王五”.于是 A 修改 1。txt 为 如下内容,并提交至版本库。开发组 王二 张三 测试组 李四 B 修改 1。txt 如下:开发组 王二 测试组 李四 22 第 3 章 SVN 客户端 王五 当 B 提交的时候,就会出错.其出错界面如下:图 3.16 提交出错 上图说明 1。txt 已经被人修改,需要先更新.成员 B 按提示要求 Update 了 本机代码,其界面如下。图 3。17 合并文件 请注意 Merged 这个单词,它表示 SVN 将版本库最新版本的 1。txt 和 B 修 改的 1。txt 合并了。合并的结果
35、如下,其内容正是 A、B 期望得到的结果。注意 这个最新的文件只保留在 B 的本机上,需要 B 提交后版本库里的 1。txt 才能得 23 第 3 章 SVN 客户端 到更新。开发组 王二 张三 测试组 李四 王五 也就是说,对于文本文件,SVN 有合并能力。它能将项目组成员的改动集 中起来,减少了文件冲突的发生。但是 SVN 的合并不是万能的。假如 B 对 1。t xt 做了非常大的改动,Update 的时候将无法合并,并产生冲突,见下图 图 3.18 更新时文件冲突 冲突发生的时候,资源管理器里 1。txt 有四个版本。其中三个见下图,另一 个版本为.svntext-base1.txt.s
36、vnbase,即更新后的 BASE 版。图 3.19 冲突文件有四个版本 这四个文件的区别请见下表。注意:如果在资源管理器里发现了 1。txt.min e 文件,则说明 TortoiseSVN 版本太低了,请升级至 TortoiseSVN 1。6。5.16974 或更高的版本。24 文 件 说 明 1.txt.r6 BASE-OLD更新前的 BASE 版,即更新前 的 1.txt.svn-base 文件。版本号为 6。1.txt.r7 HEAD版本库里的最新版本,版本号为 7。r6 和 r7 中版本号大的为 HEAD 版 1.txt COPY用户做的最新改动.svntext-base1.txt
37、.svn-base BASE-NEW更新后的 BASE 版。与 HEAD 版完全相同。第 3 章 SVN 客户端 表 3。1 四个文件的区别 既然发生了冲突,就需要解决它。成员 B 有三个方案:1)完全信任自己,坚持自己所做的修改。其操作方法为:在图 3.18所示的界面下,鼠标右键单击 1。txt,将弹出如下菜单。单击【Re solve conflict using mine】或【Mark as resolved】菜单项即可。图 3.20 冲突右键菜单 如果图 3。18所示的界面被关闭,请鼠标右键单击图 3。19的 1。txt文件,单击 弹出菜单里的【TortoiseSVN】【Resolved
38、.。】菜单项。这样操作实质上就是删除了 1.txt。r6 和 1.txt.r7 这两个文件。此外,修改了 文件.svnentries,将里面的 1.txt。r6 和 1.txt。r7 删除了.2)完全信任版本库,放弃自己所做的任何修改。其操作方法为:在图 3.18所示的界面下,鼠标右键单击 1。txt,将弹出图 3.20所示的菜单。单击【Resolve conflict using”theirs】菜单项即可。如果图 3。18所示的界面被关闭,请鼠标右键单击图 3。19的 1。txt文件,单击 25 第 3 章 SVN 客户端 弹出菜单里的【TortoiseSVN】【Revert.。】菜单项。R
39、evert的含义是还原,就是 放弃一切修改。本质上就是用BASE版覆盖Copy版。这样操作实质上就是使用 HEAD 版覆盖 Copy 版,然后又删除了 1.txt。r6 和 1.txt。r7 这两个文件.3)折衷方案就是对 1。txt 进行合并修改。SVN 默认使用 TortoiseMerge 合并.在图 3。18所示的界面下,鼠标右键单击 1。txt,将弹出图 3。20所示的菜单。单击【Edit conflicts】菜单项。如果图 3。18所示的界面被关闭,请鼠标右键单击图 3.19的 1。txt文件,单击 弹出菜单里的【TortoiseSVN】【Edit conflicts】菜单项。SVN
40、 将调用 TortoiseMerge 来进行合并编辑,其界面如下:图 3。21 TortoiseMerge 程序界面 可以看到 TortoiseMerge 有三个窗格。Theirs 表示 HEAD 版;Mine 表示 Co py 版;Merged 表示合并后的版本。此外,还有一个版本 BASE-OLD.以上图 为例:Theirs 窗格中 aaaaaaa 就是 BASEOLD 版的内容,ccc 是 HEAD 版的内 容。可以非常清楚的看到 HEAD 版相对 BASE-OLD 版做的改动。同样的 Mine 窗格同时显示 BASEOLD 版和 Copy 版.编辑好 1。txt 之后,单击【File】
41、【Save】保存。再单击【Edit】【Mark as r esolved】删除 1。txt.r6 和 1.txt。r7。也可以使用其它编辑器对 1。txt 进行编辑,然后单击【TortoiseSVN】【Reso lved。.】菜单项解决冲突。26 第 3 章 SVN 客户端 3.11。1.2 二进制文件 一个项目里的文件并不都是文本文件,如:Word 文档,bmp 位图遇到 这类文件,SVN 很难通过比较差异来替项目组成员解决冲突了.此时,最有效 的方法是使用锁。假定项目组成员 A 要编辑位图 1.bmp,正确的操作步骤为:1、请在资源管理器中右键单击该文件,单击弹出菜单里的【Tortoise
42、SVN】【Get lock.。.】菜单项,SVN 显示如下。请输入锁定该文件的原因,然后单击“OK按钮完成文件锁定;图 3。22 锁定文件界面 2、如果 A 未对 1。bmp 做任何修改,暂时又不想编辑它,请尽快解锁。方 法为右键单击该文件,单击弹出菜单里的【TortoiseSVN】【Release lock】菜单 项;3、如果 A 对 1。bmp 做了修改并确认无误后,请尽快提交它。方法为右键 单击该文件,单击弹出菜单里的【SVN Commit.】菜单项.提交之后,SVN 自动解锁该文件。项目组成员 B 要编辑 1。bmp 同样遵循该步骤。因为一个文件不能同时被两 个用户锁定,这样就保证了
43、1。bmp 不会发生冲突。3。11。2 树冲突 27 第 3 章 SVN 客户端 发生树冲突的情况比较多,解决起来也比较复杂,应尽量避免.项目组成 员需要遵循以下几个原则:1、除非必要,否则不要删除、移动、重命名文件;2、删除、移动、重命名文件提交时,一定要详细写明删除、移动、重命名 了哪些文件,以及为什么这样做。这样其他项目组成员在 Update 的时候,可以 根据这个说明照做一遍,解决树冲突。3.12 Properties(属性)前文提到了提交 non-versioned 文件时,可以忽略的操作.那么忽略的信息 存放在哪儿了呢?答案就是文件夹属性。鼠标右键单击检出代码的文件夹,单击弹出菜单的【TortoiseSVN】【Prope rties】菜单项.SVN 显示如下.这里文件夹有一个很有趣的属性 svn:ignore,它 的值为.pch,其含义为:提交时将忽略所有扩展名为 pch 的 non-versioned 文件。如果你想去除这个功能,就把这条属性编辑一下,或者直接删除即可。图 3.23 28 属性