手册

将您的更改提交到版本库

将您对工作副本所做的更改发送到版本库,这被称为提交更改。但是在提交之前,您必须确保您的工作副本是最新的。您可以直接使用TortoiseSVN更新。或者您可以先使用TortoiseSVN检查更新,以查看哪些文件在本地或服务器上已更改。

提交对话框

如果您的工作副本是最新的并且没有冲突,您就可以提交您的更改了。选择您想要提交的任何文件和/或文件夹,然后选择TortoiseSVN提交...

图 4.8。 提交对话框

The Commit dialog


提交对话框将显示所有已更改的文件,包括已添加、已删除和未版本控制的文件。如果您不想提交某个已更改的文件,只需取消选中该文件。如果您想包含未版本控制的文件,只需选中该文件即可将其添加到提交中。

要快速选中或取消选中文件类型,例如所有已版本控制的文件或所有已修改的文件,请单击显示项目列表上方的链接项。

有关根据项目状态对项目进行颜色标记和覆盖层的信息,请参阅名为“本地和远程状态”的章节

已切换到不同版本库路径的项目也会使用 (s) 标记指示。您可能在处理分支时切换了某些内容,但忘记切换回主干。这是您的警告标志!

提交文件还是文件夹?

当您提交文件时,提交对话框仅显示您选择的文件。当您提交文件夹时,提交对话框将自动选择已更改的文件。如果您忘记了创建的新文件,提交文件夹仍然会找到它。提交文件夹意味着每个文件都会被标记为已更改;它只是通过为您做更多的工作来让您的生活更轻松。

提交对话框中有很多未版本控制的文件

如果您认为提交对话框显示了太多未版本控制的文件(例如,编译器生成的文件或编辑器备份文件),则有几种方法可以处理这种情况。您可以

  • 将文件(或通配符扩展名)添加到设置页面上的排除文件列表。这将影响您拥有的所有工作副本。

  • 使用 TortoiseSVN添加到忽略列表 将文件添加到 svn:ignore 列表。这只会影响您设置 svn:ignore 属性的目录。使用 SVN 属性对话框,您可以修改目录的 svn:ignore 属性。

  • 使用 TortoiseSVN添加到忽略列表(递归) 将文件添加到 svn:global-ignores 列表。这将影响您设置 svn:global-ignores 属性的目录以及所有子文件夹。

阅读名为“忽略文件和目录”的章节以获取更多信息。

双击提交对话框中的任何已修改文件,将启动外部差异比较工具以显示您的更改。上下文菜单将为您提供更多选项,如屏幕截图所示。您还可以将文件从此处拖到其他应用程序中,例如文本编辑器或 IDE。

您可以通过单击项目左侧的复选框来选择或取消选择项目。对于目录,您可以使用 Shift+选择 来使操作具有递归性。

底部窗格中显示的列是可以自定义的。如果您右键单击任何列标题,您将看到一个上下文菜单,允许您选择要显示的列。您还可以通过使用鼠标移动到列边界时出现的拖动手柄来更改列宽。这些自定义设置将被保存,因此下次您将看到相同的标题。

默认情况下,当您提交更改时,提交成功后,您持有的文件锁都会自动释放。如果您想保留这些锁,请确保选中“保留锁”复选框。此复选框的默认状态取自 Subversion 配置文件中的 no_unlock 选项。阅读名为“常规设置”的章节,了解如何编辑 Subversion 配置文件的信息。

提交到标签时的警告

通常,提交操作是在主干或分支上进行的,而不是在标签上。毕竟,标签被认为是固定的,不应该更改。

如果尝试提交到标签 URL,TortoiseSVN 会首先显示一个确认对话框,以确保这是否是您的本意。因为大多数情况下,这样的提交都是意外操作。

但是,只有当版本库布局是推荐布局之一时,此检查才有效。这意味着它使用名称 trunkbranchestags 来标记三个主要区域。如果设置不同,标签/分支/主干的检测(也称为 分类模式)可以在设置对话框中配置:名为“修订图设置”的章节

拖放

只要工作副本是从同一版本库检出的,您就可以将文件从其他位置拖到提交对话框中。例如,您可能有一个庞大的工作副本,并打开了多个资源管理器窗口来查看层次结构中较远的文件夹。如果您想避免从顶层文件夹提交(需要进行漫长的文件夹遍历以检查更改),您可以为一个文件夹打开提交对话框,然后从其他窗口中拖入项目,以包含在同一次原子提交中。

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

将文件从提交对话框底部的列表拖动到日志消息编辑框,会将路径作为纯文本插入到该编辑框中。如果您想编写包含受提交影响的路径的提交日志消息,这将非常有用。

修复外部重命名

有时文件会在 Subversion 之外被重命名,并且它们会在文件列表中显示为丢失的文件和未版本控制的文件。为了避免丢失历史记录,您需要通知 Subversion 这种关联。只需选择旧名称(丢失)和新名称(未版本控制),然后使用 右键菜单修复移动 将这两个文件配对为重命名。

修复外部副本

如果您复制了文件,但忘记使用 Subversion 命令来执行此操作,您可以修复该副本,以便新文件不会丢失其历史记录。只需选择旧名称(正常或已修改)和新名称(未版本控制),然后使用 右键菜单修复复制 将这两个文件配对为副本。

变更列表

提交对话框支持 Subversion 的变更列表功能,以帮助将相关文件分组在一起。在名为“变更列表”的章节中了解有关此功能的更多信息。

仅提交文件的部分内容

有时您只想提交对文件所做更改的一部分。这种情况通常发生在您正在处理某些任务时,突然需要提交一个紧急修复,而这个修复恰好在您正在处理的同一个文件中。

右键单击文件,然后使用 右键菜单提交后还原。这将创建一个当前文件的副本。然后,您可以编辑该文件,例如在文本编辑器中,并撤销所有您不想提交的更改。保存这些更改后,您可以提交文件。

使用 TortoiseMerge

如果您使用 TortoiseMerge 编辑文件,您可以像往常一样编辑更改,或者标记所有您想要包含的更改。右键单击一个已修改的代码块,然后使用 右键菜单标记此更改 来包含该更改。最后,右键单击并使用 右键菜单仅保留标记的更改,这将使右侧视图仅包含您之前标记的更改,并撤销您未标记的更改。

提交完成后,文件的副本将自动恢复,您将拥有包含所有未提交的修改的文件。

从提交列表中排除项目

有时您有一些已版本控制的文件会频繁更改,但您实际上并不想提交它们。有时,这表明您的构建流程存在缺陷 - 为什么这些文件要进行版本控制?您是否应该使用模板文件?但有时这是不可避免的。一个典型的例子是,您的 IDE 每次构建时都会更改项目文件中的时间戳。项目文件必须进行版本控制,因为它包含所有构建设置,但仅仅因为时间戳发生了更改就提交是不必要的。

为了在这种特殊情况下提供帮助,我们预留了一个名为 ignore-on-commit 的变更列表。添加到此变更列表的任何文件将在提交对话框中自动取消选中。您仍然可以提交更改,但您需要在提交对话框中手动选择它。

提交日志消息

请务必输入日志消息,描述您正在提交的更改。这将帮助您在以后浏览项目日志消息时,了解发生了什么以及何时发生。消息可以根据您的需要长或短;许多项目都有关于应包含哪些内容、使用的语言,甚至有时是严格格式的指南。

您可以使用类似于电子邮件中使用的约定,对日志消息应用简单的格式。要对 文本 应用样式,请使用 *文本* 表示粗体,_文本_ 表示下划线,^文本^ 表示斜体。

图 4.9。 提交对话框拼写检查器

The Commit Dialog Spellchecker


TortoiseSVN 包含拼写检查器,以帮助您正确撰写日志消息。它会高亮显示任何拼写错误的单词。使用右键菜单访问建议的更正。当然,它不可能认识您使用的所有技术术语,因此拼写正确的单词有时也会被标记为错误。但请不要担心。您可以使用右键菜单将它们添加到您的个人词典中。

日志消息窗口还包括文件名和函数自动完成功能。它使用正则表达式从您正在提交的(文本)文件以及文件名本身中提取类名和函数名。如果您正在键入的单词与列表中的任何项匹配(在您键入至少 3 个字符,或按下 Ctrl+空格键 后),将出现一个下拉菜单,允许您选择完整名称。TortoiseSVN 提供的正则表达式位于 TortoiseSVN 安装目录的 bin 文件夹中。您还可以定义自己的正则表达式,并将它们存储在 %APPDATA%\TortoiseSVN\autolist.txt 中。当然,当您更新 TortoiseSVN 安装时,您的个人自动列表不会被覆盖。如果您不熟悉正则表达式,请参阅 https://en.wikipedia.org/wiki/Regular_expression 的简介,以及 https://regexper.cn/ 上的在线文档和教程。

正确使用正则表达式可能比较棘手,因此为了帮助您找到合适的表达式,这里提供了一个测试对话框,您可以在其中输入表达式,然后键入文件名来对其进行测试。使用命令 TortoiseProc.exe /command:autotexttest 从命令提示符启动它。

日志消息窗口还包括提交消息片段功能。当您键入片段快捷方式后,这些片段会显示在自动完成下拉菜单中。在自动完成下拉菜单中选择片段后,将插入该片段的完整文本。TortoiseSVN 提供的代码片段位于 TortoiseSVN 安装目录的 bin 文件夹中。您还可以定义自己的代码片段,并将它们存储在 %APPDATA%\TortoiseSVN\snippet.txt 中。# 是注释字符。可以通过转义字符插入换行符,例如:\n\r。要插入反斜杠,请使用 \\ 进行转义。

您可以重复使用之前输入的日志消息。只需单击“最近的消息”按钮,即可查看您为此工作副本输入的最近几条消息的列表。存储的消息数量可以在 TortoiseSVN 设置对话框中自定义。

您可以从 TortoiseSVN 设置的“已保存数据”页面清除所有已保存的提交消息,或者您可以使用 Delete 键,在“最近的消息”对话框中清除单个消息。

如果您想在日志消息中包含选中的路径,您可以使用编辑控件中的 右键菜单粘贴文件名列表 命令。

另一种将路径插入日志消息的方法,是将文件从文件列表拖动到编辑控件上。

特殊文件夹属性

有几个特殊的文件夹属性,可以用于帮助更好地控制提交日志消息的格式,以及拼写检查器模块使用的语言。阅读名为“项目设置”的章节以获取更多信息。

与缺陷跟踪工具集成

如果您已启用缺陷跟踪系统,则可以在“缺陷 ID / 问题编号:”文本框中设置一个或多个问题。多个问题应以逗号分隔。或者,如果您正在使用基于正则表达式的缺陷跟踪支持,只需将您的问题引用添加到日志消息中即可。在名为“与缺陷跟踪系统/问题跟踪器集成”的章节中了解更多信息。

提交进度

按下“确定”按钮后,将出现一个对话框,显示提交进度。

图 4.10。 显示正在进行的提交的进度对话框

The Progress dialog showing a commit in progress


进度对话框使用颜色编码来高亮显示不同的提交操作

蓝色

提交修改。

紫色

提交新添加的内容。

深红色

提交删除或替换。

黑色

所有其他项目。

这是默认的颜色方案,但您可以使用设置对话框自定义这些颜色。阅读名为“TortoiseSVN 颜色设置”的章节以获取更多信息。

TortoiseSVN 首页