5.4. 将你的修改提交到版本库

将你对工作复本的修改发送给版本库,称为提交修改。但在你提交之前要确保你的工作副本是最新的。你可以直接使用TortoiseSVN更新,或者,你可以先使用TortoiseSVN检查修改看看哪些文件在本地或是服务器上已经有了改动。

5.4.1. 提交对话框

如果你的工作复本是最新的,并且没有冲突,你就已经为提交做好准备了,选择你要提交的文件和/或文件夹,然后TortoiseSVN提交....

图 5.8. 提交对话框

提交对话框

提交对话框将显示每个被改动过的文件,包括新增的、删除的和未受控的文件。如果你不想改动被提交,只要将该文件的复选框的勾去掉就可以了。如果你要加入未受控的文件,只要勾选该文件把它加入提交列表就可以了。

那些被切换(switched)到不同版本库路径的项也用(s)标记来表示。当工作在分支上的时候你可能切换到某处,然后忘记切换回主干。这是你的警告信号!

[提示]提交文件还是文件夹?

当你提交文件时,提交对话框只显示你所提中的文件。当你提交文件夹中,提交对话框将自动选择有改动的文件。如果你忘记了你建立的一个新文件,提交文件夹将使你可以找到它。提交一个文件夹并不意味着每个文件都被标识为修改过的,它仅仅是通过帮你多做些事从而让你的生活更滋润一点。

如果你修改的文件是使用了svn:externals从别的版本库中包含进来的,那么这些改动不会被自动提交。在文件列表下方的警告符号会告诉你是否出现了这种状况,工具提示(tooltip)提示了外部文件必须要分开提交。

[提示]在提交对话框中有很多未受控的文件

如果你认为TSVN提交对话框显示了太多的未受控文件(如编译器产生的文件或是编辑器的备份文件),有几种方法可以处理这种情况。你可以:

  • 将文件(或是通配符扩展)加入到设置页的排除列表中。这对每个工作复本都起作用。

  • 使用TortoiseSVN加入忽略列表,将文件加入svn:ignore列表。 这只对你设置了svn:ignore属性的路径有效。使用SVN属性对话框,你可以改变一个目录的svn:ignore属性。

参考第 5.11 节 “忽略文件和目录” 获得更多的信息。

在提交对话框中双击任何修改过的文件,将运行外部diff工具显示你作的改动。上下文菜单(右键菜单)将给你更多的选项,请看屏幕截图。你可以从这里将文件拖动到另一个应用程序中,如文本编辑器或是IDE。

在底部面板中显示的列是可定制的。如果你右击任何一列的头部,你就会看到一个上下文菜单,允许你选择哪一列要显示。还可以在鼠标移动到列边界时通过拖动手把来改变列的宽度。这些定制的内容都会被保留下来,下一次你会见到相同的列。

[提示]拖放

你可以将文件从别的地方拖动到提交对话框,只要工作复本是由同一版本库中检出就可以了。比如,你有一个很大的工作复本,要开好几个资源管理器窗口来查看层次中不同的文件夹。如果你要避免从顶级文件夹提交(冗长而缓慢的文件夹改动检查),你可以打开一个文件夹的提交对话框,然后将别的窗口中的项拖进去,可样就可以一次提交它们了。

你可以将未版本控制的文件拖到工作副本提交对话框中,它们就会被自动增加。

[提示]修复外部改名

有时候文件不是用Subversion改名,于是它们在文件列表中作为丢失和未版本控制的文件出现。为了避免丢失历史,你需要通知Subversion。简单的选择老名称(丢失)和新名称(未版本控制),然后使用右键菜单修复移动来指明这两个文件是改名关系。

5.4.2. 修改列表

理想情况下,你任何时候都只做一件事,你的工作副本只包含一个逻辑修改集合。很好,回到现实。你经常会同时做几件不相关的事,当你察看提交对话框时,所有修改混到一起。修改列表特性帮助你分组,让你容易看到正在做什么。当然它只能在修改不重合的时候工作。如果两个不同的任务影响到同一个文件,没有办法隔离修改。

[重要]重要

修改列表依赖一个不存在于 Windows 2000 的外壳特性,所以它只能用于 Windows XP 或更新的系统。抱歉,但是现在 Windows 2000 真的很古老了,请不要抱怨。

使用右键菜单移到修改列表 可以增加一个项目到修改列表。最初没有修改列表,所以你第一次做的时候,会创建一个新的修改列表。给出一个能描述它的作用的名称,然后点击 OK。提交对话框会改变为显示项目分组。

图 5.9. 带有修改列表的提交对话框

带有修改列表的提交对话框

除了分组可以直接指示之外,你也可以使用组头选择提交哪些文件。

[提示]提示

修改列表是纯本地客户端特性。创建和删除修改列表不会影响到版本库,或任何其它客户端。

5.4.3. 提交日志信息

确保输入描述你所提交的修改内容的日志信息。这可以帮你回顾做了什么,什么时候做的。信息的内容可长可短,许多项目规定了要包含的内容、使用的语言甚至是严格的格式。

你可以使用与电子邮件相似的约定,简单格式化日志消息。如果对文本采用这些样式,使用*文本*表示粗体,_文本_表示下划线,^文本^表示斜体。

图 5.10. 提交对话框的拼写检查器

提交对话框的拼写检查器

TortoiseSVN包含了一个拼写检查器帮助你正确地书写日志信息。对任何错误拼写的词都高亮显示。使用右键菜单可以获得修改建议。当然它不会知道所有的技术术语,所以有时一些拼写正确的词会被当作错误。但不用担心,你可以使用右键菜单将它们加入你的个人字典中。

日志信息窗口还包含一个文件名和函数自动完成的功能。这使用了正则表达式来从你提交的(文本)文件中提取类和函数名,当然包括文件名本身。如果你现在敲入的一个词与列表中的任意一个匹配(在你输入至少3个字符后),就会出现一个下拉列表,允许你选择完整的名字。与TortoiseSVN一起提供的正则表达式位于TortoiseSVN安装路径的bin文件夹中。你可以定义自己的正则式并将其存放在%APPDATA%\TortoiseSVN\autolist.txt。当然你自定义的自动列表不会在升级安装的时候被覆盖。如果你不熟悉正则表达式,请参考在线文件和教程: http://www.regular-expressions.info/.

[提示]指定文件夹属性

有几个特殊的文件夹属性可用于帮助我们得到更多的对提交日志信息的格式以及拼写检查模块的控制。参考第 5.15 节 “项目设置”以了解详情。

[提示]与缺陷跟踪工具整合

如果你激活了一个缺陷跟踪系统,你可以在Bug-ID / Issue-Nr:文本框中设置一个或多个问题。多个问题应该用逗号分割。另外,如果你使用基于正则表达式的缺陷跟踪支持,只要将你的问题引用作为日志信息的一部分加入就可以了。详情请见第 5.25 节 “与 BUG 跟踪系统/问题跟踪集成”

5.4.4. 提交进程

在按下OK之后,会出现一个对话框显示提交的进度。

图 5.11. 显示提交进度的进度对话框

显示提交进度的进度对话框

进度对话框使用颜色代码来高亮显示不同的提交行为。

蓝色

提交一个修改。

紫色

提交一个新增项。

深红

提交一个删除或是替换。

黑色

所有其他项。

这是默认的配色方案,但你可以通过设置对话框来定制这些颜色。参考第 5.27.2.5 节 “TortoiseSVN 颜色设置”获得详情。