您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > subversion日常使用指南
本文目的在与描述TortoiseSVN客户端的日常使用。不是一个版本控制系统指南,也不是Subversion(SVN)的指南。本文档的价值在于,当你知道大概要做什么,却又记不起应该怎么做的时候,可以有个参考的地方。如果你需要了解使用Subversion进行版本控制的指南,我们建立你阅读以下这本梦幻之书:《使用Subversion进行版本管理》.本文档与TortoiseSVN和Subversion一样,也是处于“正在开发”的状态。如果你找到了错误之处,请向邮件列表报告,这样我们就可以更新它。日常使用指南(DUG)中的一些屏幕截图也许不符合当前软件中的情况。请您原谅我们。毕竟我们只是用业余的时间在制作TortoiseSVN。你应该已经安装了TortoiseSVN。你应该熟悉版本控制系统。你应该知道Subversion的基础。你应该已经建立了一个服务器并且可以访问Subversion库。开始图标重载图5.1.显示重载图标的资源管理器TortoiseSVN最直观的功能之一就是图标重载,重载的图标显示在你的工作复本文件上。你一眼就可以知道文件被修改过了。参考“图标重载”一节学习不同的重载图标所表示的意义。右键菜单图5.2.版本控制下一个目录的右键菜单所有的TortoiseSVN命令都是通过windows资源管理器的右键菜单执行。右键点击一个文件或者文件夹,大多数菜单项都能够直接显示。一个命令是否显示取决于这个文件或文件夹或者它们的父文件夹是否受版本控制,你也可以将TortoiseSVN的菜单作为资源管理器菜单的一部分。在某些情况下,你可能看到多个TortoiseSVN条目。这不是BUG!图5.3.在一个版本控制的文件夹下资源管理器文件菜单中的快捷方式。本示例是在一个受控文件夹下的某个未受控的快捷方式,在资源管理器的文件菜单下有三个TortoiseSVN条目。一个是受控文件夹本身的,一个是快捷方式本身的,第三个是快捷方式所指向的对象。为了帮助你区分它们,菜单条目的图标的右下角有标志,表明是文件、快捷方式、文件夹或是选中了多项。拖放图5.4.版本控制下的一个目录的右键拖拽菜单在工作副本里右键拖拽文件或目录到新的位置,或者右键拖拽一个非版本控制的文件或文件夹到一个版本控制目录下的时候,右键菜单还能够出现其他的命令。常用快捷方式一些常见的操作与Windows的快捷键是一样的,但没有出现在按钮或是菜单中。如果你找不到一些显而易见的操作,比如刷新视图,请参考以下内容。F1当然是帮助。F5刷新当前视图。这也许是单键命令中唯一一个最常用的了。比如...在资源浏览器中,这个键可以刷新工作复本中的图标重载。在提交对话框中,它可以重新扫描查找哪些是需要提交的。在版本日志对话框中,可以重新联系版本库以检查更多的最近修改情况。Ctrl-A全选。可用于在得到一个错误消息并想要复制粘贴到电子邮件时。使用Ctrl-Ato选择错误错误,然后...Ctrl-C...复制选中的文本。认证如果要连接的版本库需要口令,一个认证对话框就会显示出来。图5.5.认证对话框输入你的用户名和口令。那个选择框能让TortoiseSVN在Subversion的缺省路径下$APPDATA\Subversion\auth的三个子目录里保存认证信息:svn.simple文件里包含了基本认证方式所需要的认证信息(用户名/口令)。svn.ssl.server文件里包含了SSL服务器证书。svn.username文件里包含了用户名认证的认证信息(不需要提供密码)。每个文件对应一个要连接的服务器。文件是纯文本格式,因此可以用文本编辑器查看每个文件是应用于哪个服务器的。如果希望Subversion和TortoiseSVN忘记某个服务器的凭证信息,只需删除这个服务器的对应文件即可。如果想要清除所有服务器的认证缓存,可以通过TortoiseSVN的设置对话框的常规设置页来实现。那个按钮能够清除Subversion的auth目录下缓存的所有认证数据,以及老版本的TortoiseSVN存储在注册表里的认证数据。请参考“常规设置”一节。关于如何设置服务器的认证和权限的更多信息,请参考第3章配置服务器提示如果使用WindowsNT域进行认证,输入用户名的时候要包括域名,如:MYDOMAIN/johnd。导入数据到版本库版本库布局在将你的数据导入到版本库之前,首先你得考虑如何组织你的数据。如果你使用一种推荐的布局,你在后面的操作将会更容易许多。有一些标准的、推荐的方式来组织一个版本库。大多数人建一个trunk目录来存放开发的“主线”、一个branches目录来容纳分支副本、以及一个tags目录来容纳标签复制。如果一个版本库只存放一个项目,人们通常创建三个这样的顶层目录:/trunk/branches/tags如果一个版本库包含多个项目,人们通常按分支来安排布局:/trunk/paint/trunk/calc/branches/paint/branches/calc/tags/paint/tags/calc……或者按项目:/paint/trunk/paint/branches/paint/tags/calc/trunk/calc/branches/calc/tags如果项目不是密切相关,而且每一个是单独被检出,那么按项目布局是合理的。对于那些你想一次检出所有项目,或需要将它们打成一个分发包的相关项目,按分支来布局通常比较好。这种方式你只要检出一个分支,而且子项目之间的关系也比较清楚。如果你采用顶层/trunk/tags/branches这种方式,并不意味着你必须复制整个主线为分支或标签,而且某些情况下这种结构更具灵活性。对于不相关的项目,你可能更愿意使用不同的版本库。当你提交时,改变的是整个版本库的修订号,而不是项目的。让两个不相关的项目共用一个版本库,会导致修订号出现较大的跳跃。Subversion和TortoiseSVN项目看起来是在同一个主机地址,但是它们是在完全独立的版本库中开发着,并且版本号也不相干。当然,你完全可以不理会上面提及的通用布局。你可以自由改变,来满足你和你团队的需要。请记住,不管你选择哪种布局,它都不是永久的。你可以在随时重新组织你的版本库。因为分支和标签是普通的目录,只要你愿意,TortoiseSVN可以将它们移动或重命名。从一种布局转换到另一种布局仅仅是在服务器端移动一些文件或目录;如果你不喜欢版本库的组织形式,仅管大胆地修改那些目录。所以,如果你还没创建一个基本的文件夹结构到你的版本库中,你现在可以这样做:1.在你的硬盘上创建一个空的文件夹2.在那个文件夹下创建你想要的顶级目录--千万不要放任何文件进去!3.通过在那个文件夹右键,选择TortoiseSVN→导入...将这个结构导入到版本库中。这将导入临时文件夹到版本库的根目录形成一个基本的版本库布局。注意,你所导入的那个文件夹的名字并不存在于版本库中,仅仅是它所包含的内容。比如,创建如下结构的文件夹C:\Temp\New\trunkC:\Temp\New\branchesC:\Temp\New\tags导入C:\Temp\New到版本库的根目录,版本库中将会是这样:/trunk/branches/tags你还可以使用版本库浏览器直接在版本库中创建文件夹。导入在将你的项目导入到版本库之前,你应该:1.删除所有构建工程不需要的文件(临时文件,编译器产生的文件,例如*.obj,生成的二进制文件,...)2.组织目录和子目录内的文件。尽管以后可能会改名/删除文件,我们还是建议你在导入之前使你的项目结构组织良好!现在进入资源管理器,选择你的项目的顶层目录,右击打开上下文菜单。选择命令TortoiseSVN→导入...,它会弹出一个对话框:图5.6.导入对话框在这个对话框中,输入你的项目导入到版本库的URL。这个输入信息将用作提交日志。默认情况下,匹配全局忽略模式的文件和文件夹不会被导入。你可以使用包含忽略文件检验栏来禁止此行为。参考“常规设置”一节以获得关于全局忽略模式的更多信息。当你点击确认时,TortoiseSVN会导入包含所有文件的完整目录树到版本库。如前所述,你导入的文件夹名称不会在版本库中出现,只有这个文件夹的内容会在版本库中出现。现在这个工程就存贮在版本库,被版本控制。请注意,你导入的文件夹没有被版本控制!你需要检出刚才导入的版本,以便获得受版本控制的工作目录。专用文件有时候你需要版本控制一个包含用户专用的数据。它意味着你有一个文件,每个开发者/用户都需要修改,一边满足他/她的本地配置。但是版本控制这样的文件是困难的,因为每个用户可能都要提交他/她的修改。在这种情况下,我们建议使用模版文件。创建你个包含所有开发者需要的数据的文件,增加到版本库中,让开发者检出。然后,每个开发者创建一个副本,改名此文件。于是,修改这个文件不再是问题。作为例子,你可以看看TortoiseSVN的构建脚本。它调用一个TortoiseVars.bat文件,它并不在版本库中。只有TortoiseVars.tmpl在版本库中。TortoiseVars.tmpl是一个模版文件,每个开发者都需要创建一个副本,改名为TortoiseVars.bat。在这个文件中,我们增加了注释,所以用户知道他们需要编辑那些行,以便适应他们的本地配置,使其能工作。于是为了不干扰用户,我们也将TortoiseVars.bat增加到它的父目录的忽略列表,也就是,我们设置了Subversion属性svn:ignore包含这个文件名称。这样,每次提交时它都不会作为没有版本控制的文件出现。引用的工程有时候,构建一个需要不同检出的工作目录是很有用的。举例来说,你需要不同的子目录来自版本库的不同位置。,或者可能完全来自不同的版本库。如果你需要每个用户具有相同的目录结构,你可以定义svn:externals属性。比如说,你检出了/project1,工作目录是D:\dev\project1。选择目录D:\dev\project1,右击,在右键菜单选择Windows菜单→属性。就会出现属性窗口,转到Subversion页,你可以设置属性。从组合框选择svn:externals属性,在编辑框按照名称URL格式输入,或者你需要一个指定的版本,那么使用名称-r版本URL。你可以增加多个外部工程,每行一个。注意,URL必须使用逃逸字符编码,不然可能无法正常工作。举例说明,你必须将每个空格替换为%20。使用包含空格的目录名称是不可能的。假设你为D:\dev\project1设置了这些属性:sounds://graphics.red-bean.com/repos/fast%20graphicsskins/toolkit-r21现在点击设置,然后提交你的修改。当你(或其他用户)更新工作目录时,Subversion将会创建子目录D:\dev\project1\sounds,并且检出sounds工程,另一个子目录D:\dev\project1\quickgraphs包含graphics工程,最后一个嵌套的子目录D:\dev\project1\skins\toolkit包含的skin-maker工程的版本21。如果一个外部工程位于同一版本库中,当你向主项目提交你的修改时,你对外部工程做的修改也会包含在提交列表中。如果外部工程位于不同的版本库,当你向主项目提交你的修改时,你对外部工程做的修改会被通报,但是你必须单独的提交这些外部项目的修改。注意如果你修改了svn:externals属性中的URL,下次更新工作目录时,Subversion将会删除老的外部目录,重新检出副本,于是你将看到文件被增加而不是你期望的被更新。当你引用一个其它项目的标记时,这种情况就可能发生。即当那个项目发布新版本时,你将外部引用改为新的标记。提示你应当认真考
本文标题:subversion日常使用指南
链接地址:https://www.777doc.com/doc-5238165 .html