手册

将您的更改提交到存储库

将您对工作副本所做的更改发送到服务器被称为提交更改。但在提交之前,您必须确保您的工作副本是最新的。您可以直接使用 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+Space 之后),将出现一个下拉菜单,允许您选择完整名称。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 键从 最近信息 对话框中清除单个信息。

如果您想在提交信息中包含已选路径,您可以在编辑控件中使用命令 上下文菜单粘贴文件名列表

将路径插入提交信息的另一种方法是将文件从文件列表拖放到编辑控件中。

特殊文件夹属性

有一些特殊的文件夹属性可以用来帮助更好地控制提交日志消息的格式和拼写检查模块使用的语言。阅读 名为“项目设置”的部分 以获取更多信息。

与 Bug 跟踪工具集成

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

提交进度

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

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

The Progress dialog showing a commit in progress


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

蓝色

提交修改。

紫色

提交新的添加。

深红色

提交删除或替换。

黑色

所有其他项目。

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

TortoiseSVN 主页