手册

删除、移动和重命名

Subversion 允许重命名和移动文件及文件夹。因此,TortoiseSVN 子菜单中有用于删除和重命名的菜单项。

图 4.34. 版本控制文件的资源管理器上下文菜单

Explorer context menu for versioned files


删除文件和文件夹

使用 TortoiseSVN删除 从 Subversion 中移除文件或文件夹。

当您 TortoiseSVN删除 文件或文件夹时,它会立即从您的工作副本中移除,并在下次提交时标记为在存储库中删除。该项的父文件夹会显示一个 已修改 图标覆盖层。在您提交更改之前,您可以使用父文件夹上的 TortoiseSVN还原 来恢复该文件。

如果您想从存储库中删除一个项目,但在本地将其保留为未版本控制的文件/文件夹,请使用 扩展上下文菜单删除 (保留本地)。您必须在资源管理器列表窗格(右窗格)中右键单击该项目时按住 Shift 键,才能在扩展上下文菜单中看到此选项。

如果通过资源管理器删除项目而不是使用 TortoiseSVN 上下文菜单,则提交对话框会将这些项目显示为丢失,并允许您在提交之前也将其从版本控制中移除。但是,如果您更新您的工作副本,Subversion 将会发现丢失的项目,并将其替换为存储库中的最新版本。如果您需要删除版本控制文件,请始终使用 TortoiseSVN删除,这样 Subversion 就不必猜测您真正想做什么。

恢复已删除的文件或文件夹

如果您已删除文件或文件夹,并且已将该删除操作提交到存储库,则正常的 TortoiseSVN还原 无法再将其恢复。但是文件或文件夹完全没有丢失。如果您知道文件或文件夹被删除的版本(如果您不知道,请使用日志对话框查找),请打开存储库浏览器并切换到该版本。然后选择您删除的文件或文件夹,右键单击并选择 上下文菜单复制到... 作为该复制操作的目标,选择您的工作副本的路径。

移动文件和文件夹

如果您想对文件或文件夹进行简单的就地重命名,请使用 上下文菜单重命名...。输入项目的新名称,您就完成了。

如果您想在工作副本中移动文件,例如移动到不同的子文件夹,请使用鼠标右键拖放处理程序

  1. 选择您要移动的文件或目录

  2. 右键拖动 它们到工作副本中的新位置

  3. 释放鼠标右键

  4. 在弹出菜单中选择 上下文菜单SVN 移动版本控制文件到这里

提交父文件夹

由于重命名和移动是作为删除后跟添加来完成的,因此您必须提交重命名/移动文件的父文件夹,以便重命名/移动的删除部分将显示在提交对话框中。如果您不提交重命名/移动的移除部分,它将留在存储库中,并且当您的同事更新时,旧文件将不会被移除。即,他们将拥有 新旧 副本。

必须 在更改文件夹内的任何文件之前提交文件夹重命名,否则您的工作副本可能会变得非常混乱。

移动或复制文件的另一种方法是使用 Windows 复制/剪切命令。选择您要复制的文件,右键单击并从资源管理器上下文菜单中选择 上下文菜单复制。然后浏览到目标文件夹,右键单击并选择 TortoiseSVN粘贴。对于移动文件,选择 上下文菜单剪切 而不是 上下文菜单复制

您还可以使用存储库浏览器来移动项目。阅读 名为“存储库浏览器”的章节 以了解更多信息。

不要 SVN 移动外部项

不应 在使用 svn:externals 创建的文件夹上使用 TortoiseSVN 移动重命名 命令。此操作将导致外部项从其父存储库中删除,可能会打扰许多其他人。如果您需要移动外部项文件夹,您应该使用普通的 shell 移动,然后调整源和目标父文件夹的 svn:externals 属性。

处理文件名大小写冲突

如果存储库中已包含两个名称相同但仅大小写不同的文件(例如,TEST.TXTtest.txt),您将无法在 Windows 客户端上更新或检出父目录。虽然 Subversion 支持区分大小写的文件名,但 Windows 不支持。

当两个人从单独的工作副本提交恰好具有相同名称但大小写不同的文件时,有时会发生这种情况。当从具有区分大小写的文件系统(如 Linux)的系统提交文件时,也可能发生这种情况。

在这种情况下,您必须决定要保留哪个文件,并从存储库中删除(或重命名)另一个文件。

防止出现两个同名文件

在以下位置有一个服务器钩子脚本可用: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ ,它将阻止导致大小写冲突的提交。

修复文件重命名

有时,您友好的 IDE 会在重构练习中为您重命名文件,当然它不会告诉 Subversion。如果您尝试提交更改,Subversion 会将旧文件名视为丢失,并将新文件名视为未版本控制的文件。您可以只选中新文件名以将其添加,但您会丢失历史跟踪,因为 Subversion 不知道这些文件是相关的。

更好的方法是通知 Subversion 此更改实际上是重命名,您可以在 提交检查修改 对话框中执行此操作。只需同时选择旧名称(丢失)和新名称(未版本控制),然后使用 上下文菜单修复移动 将这两个文件配对为重命名。

删除未版本控制的文件

通常,您会设置忽略列表,以便在 Subversion 中忽略所有生成的文件。但是,如果您想清除所有这些忽略的项目以生成干净的构建怎么办?通常您会在 makefile 中设置,但是如果您正在调试 makefile,或更改构建系统,那么有一种清除杂项的方法非常有用。

TortoiseSVN 提供了这样的选项,使用 扩展上下文菜单删除未版本控制的项目...。您必须在资源管理器列表窗格(右窗格)中右键单击文件夹时按住 Shift 键,才能在扩展上下文菜单中看到此选项。这将生成一个对话框,其中列出了工作副本中任何位置的所有未版本控制的文件。然后,您可以选择或取消选择要移除的项目。

当删除此类项目时,将使用回收站,因此如果您在此处犯了错误并删除了应该进行版本控制的文件,您仍然可以恢复它。

TortoiseSVN 主页