第5章日常使用指南目录5.1.开始5.1.1.图标重载5.1.2.右键菜单5.1.3.拖放5.1.4.常用快捷方式5.1.5.认证5.2.导入数据到版本库5.2.1.版本库布局5.2.2.导入5.2.3.导入适当的位置5.2.4.专用文件5.2.5.引用的工程5.3.检出工作副本5.4.将你的修改提交到版本库5.4.1.提交对话框5.4.2.修改列表5.4.3.提交日志信息5.4.4.提交进程5.5.用来自别人的修改更新你的工作复本5.6.解决冲突5.7.获得状态信息5.7.1.图标重载5.7.2.在Windows资源管理器中的TortoiseSVN列5.7.3.本地与远程状态5.7.4.查看差别5.8.版本日志对话框5.8.1.调用版本日志对话框5.8.2.获得更多信息5.8.3.获取更多的日志信息5.8.4.修改日志消息和作者5.8.5.过滤日志信息5.8.6.统计信息5.8.6.1.统计页5.8.6.2.作者提交次数统计页5.8.6.3.按日期提交统计页5.9.查看差异5.9.1.文件差异5.9.2.比较文件夹5.9.3.使用TortoiseIDiff进行比较的图像5.9.4.其他的比较/合并工具5.10.添加新文件和目录5.11.忽略文件和目录5.11.1.忽略列表中的模式匹配5.12.删除、重命名和移动5.12.1.仅在单一实例中重命名文件5.12.2.修复文件改名5.12.3.删除未版本控制的文件5.13.撤消更改5.14.清理5.15.项目设置5.15.1.Subversion属性5.15.2.TortoiseSVN属性5.16.分支/标记5.16.1.创建一个分支或标记5.16.2.检出或者切换5.17.正在合并5.17.1.合并指定版本范围5.17.2.合并两个不同的目录树5.17.3.预览合并结果5.17.4.忽略祖先5.18.锁5.18.1.锁定在Subverion中是如何工作的5.18.2.取得锁定5.18.3.释放锁定5.18.4.检查锁定状态5.18.5.让非锁定的文件变成只读5.18.6.锁定钩子脚本5.19.创建并应用补丁5.19.1.创建一个补丁文件5.19.2.应用一个补丁文件5.20.谁修改了哪一行?5.20.1.追溯文件5.20.2.追溯不同点5.21.版本库浏览器5.22.版本分支图5.23.导出一个Subversion工作副本5.24.重新定位工作副本5.25.与BUG跟踪系统/问题跟踪集成5.26.与基于WEB的版本库浏览器集成5.27.TortoiseSVN的设置5.27.1.常规设置5.27.2.外观与样式设置5.27.2.1.图标叠加设置5.27.2.2.图标集选择5.27.2.3.TSVN对话框设置一5.27.2.4.TSVN对话框设置二5.27.2.5.TortoiseSVN颜色设置5.27.3.网络设置5.27.4.外部程序设置5.27.4.1.差异查看器5.27.4.2.合并工具5.27.4.3.差异查看/合并工具的高级设置5.27.4.4.统一的差异查看器5.27.5.已保存数据的设置5.27.6.注册表设置5.27.7.Subversion的工作文件夹5.27.8.钩子脚本5.28.最后步骤本文目的在与描述TortoiseSVN?突Ф说娜粘J褂谩?不是一个版本控制系统指南,也不是Subversion(SVN)的指南。本文档的价值在于,当你知道大概要做什么,却又记不起应该怎么做的时候,可以有个参考的地方。如果你需要了解使用Subversion进行版本控制的指南,我们建立你阅读以下这本梦幻之书:《使用Subversion进行版本管理》.本文档与TortoiseSVN和Subversion一样,也是处于“正在开发”的状态。如果你找到了错误之处,请向邮件列表报告,这样我们就可以更新它。日常使用指南(DUG)中的一些屏幕截图也许不符合当前软件中的情况。请您原谅我们。毕竟我们只是用业余的时间在制作TortoiseSVN。为了获得比每日用户指南更多的信息:你应该已经安装了TortoiseSVN。你应该熟悉版本控制系统。你应该知道Subversion的基础。你应该已经建立了一个服务器并且可以访问Subversion库。5.1.开始5.1.1.图标重载图5.1.显示重载图标的资源管理器TortoiseSVN最明显的特性之一就是图标重载,重载的图标显示在你的工作副本文件上。你一眼就可以看到文件被修改过了。参考第5.7.1节“图标重载”查阅不同的重载图标含义。5.1.2.右键菜单图5.2.版本控制下一个目录的右键菜单所有的TortoiseSVN命令都是通过windows资源管理器的右键菜单执行。右键点击一个文件或者文件夹,大多数菜单项都能够直接显示。一个命令是否显示取决于这个文件或文件夹或者它们的父文件夹是否受版本控制,你也可以将TortoiseSVN的菜单作为资源管理器菜单的一部分。在某些情况下,你可能看到多个TortoiseSVN条目。这不是BUG!图5.3.在一个版本控制的文件夹下资源管理器文件菜单中的快捷方式。本示例是在一个受控文件夹下的某个未受控的快捷方式,在资源管理器的文件菜单下有三个TortoiseSVN条目。一个是受控文件夹本身的,一个是快捷方式本身的,第三个是快捷方式所指向的对象。为了帮助你区分它们,菜单条目的图标的右下角有标志,表明是文件、快捷方式、文件夹或是选中了多项。5.1.3.拖放图5.4.版本控制下的一个目录的右键拖拽菜单在工作副本里右键拖拽文件或目录到新的位置,或者右键拖拽一个非版本控制的文件或文件夹到一个版本控制目录下的时候,右键菜单还能够出现其他的命令。5.1.4.常用快捷方式一些常见的操作与Windows的快捷键是一样的,但没有出现在按钮或是菜单中。如果??F1当然是帮助。F5刷新当前视图。这也许是单键命令中唯一一个最常用的了。比如...在资源浏览器中,这个键可以刷新工作复本中的图标重载。在提交对话框中,它可以重新扫描查找哪些是需要提交的。在版本日志对话框中,可以重新联系版本库以检查更多的最近修改情况。Ctrl-A全选。可用于在得到一个错误消息并想要复制粘贴到电子邮件时。使用Ctrl-Ato选择错误错误,然后...Ctrl-C...复制选中的文本。5.1.5.认证如果连接的版本库需要口令,就会显示认证对话框。图5.5.认证对话框输入你的用户名和口令。其检查框能让TortoiseSVN在Subversion的缺省目录:%APPDATA%\Subversion\auth的三个子目录内保存认证信息:svn.simple文件里包含了基本认证方式所需要的认证信息(用户名/口令)。svn.ssl.server文件里包含了SSL服务器证书。svn.username文件里包含了用户名认证的认证信息(不需要提供密码)。每个文件对应一个服务器,文件是纯文本格式,因此可以用文本编辑器查看文件是对应哪个服务器。如果希望Subversion和TortoiseSVN(或者其它Subversion客户端)忘记某个服务器的凭证信息,只需删除这个服务器的对应文件即可。如果想要清除所有服务器的认证缓存,可以通过TortoiseSVN的设置对话框的常规设置页来实现。那个按钮能够清除Subversion的auth目录下缓存的所有认证数据,以及老版本的TortoiseSVN存储在注册表里的认证数据。请参考第5.27.1节“常规设置”。关于如何设置服务器的认证和权限的更多信息,请参考第3章配置服务器提示如果使用WindowsNT域认证,输入用户名的时候要包括域名,如:MYDOMAIN\johnd。5.2.导入数据到版本库5.2.1.版本库布局在将你的数据导入到版本库之前,首先你得考虑如何组织你的数据。如果你使用一种推荐的布局,你在后面的操作将会更容易许多。有一些标准的、推荐的方式来组织一个版本库。大多数人建一个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你还可以使用版本库浏览器直接在版本库中创建文件夹。5.2.2.导入在将你的项目导入到版本库之前,你应该:1.删除所有构建工程不需要的文件(临时文件,编译器产生的文件,例如*.obj,生成的二进制文件,...)2.组织目录和子目录内的文件。尽管以后可能会改名/删除文件,我们还是建议你在导入之前使你的项目结构组织良好!现在进入资源管理器,选择你的项目的顶层目录,右击打开上下文菜单。选择命令TortoiseSVN→导入...,它会弹出一个对话框:图5.6.导入对话框在这个对话框中,输入你的项目导入到版本库的URL。这个输入信息将用作提交日志。默认情况下,匹配全局忽略模式的文件和文件夹不会被导入。你可以使用包含忽略文件检验栏来禁止此行为。参考第5.27.1节“常规设置”以获得关于全局忽略模式的更多信息。当你点击确认时,TortoiseSVN会导入包含所有文件的完整目录树到版本库。如前所述,你导入的文件夹名称不会在版本库中出现,只有这个文件夹的内容会在版本库中出现。现在这个工程就存贮在版本库,被版本控制。请注意,你导入的文件夹没有被版本控制!你需要检出刚才导入的版本,以便获得受版本控制的工作目录。或者继续阅读,找到如何导入文件夹到合适的位置。5.2.3.导入适当的位置Subversion导入命令功能有限-你不能容易的选择导入的项目。而且,你导入的文件夹不会成为Subversion工