在您处理工作副本时,您经常需要知道您更改/添加/删除或重命名的文件,甚至哪些文件被其他人更改并提交。
现在您已经从 Subversion 仓库检出一个工作副本,您可以在 Windows 资源管理器中看到带有更改图标的文件。这是 TortoiseSVN 如此受欢迎的原因之一。TortoiseSVN 为每个文件图标添加了一个所谓的覆盖图标,该图标覆盖了原始文件图标。根据文件的 Subversion 状态,覆盖图标会有所不同。
新检出的工作副本有一个绿色的勾号作为覆盖。这意味着 Subversion 状态为 正常。
一旦您开始编辑文件,状态就会变为 已修改,并且图标覆盖会变为红色感叹号。这样,您可以轻松地看到自上次更新工作副本以来哪些文件已更改,需要提交。
如果在更新期间发生 冲突,则图标会变为黄色感叹号。
如果您在文件上设置了 svn:needs-lock
属性,Subversion 会使该文件只读,直到您获得该文件的锁定。此类文件具有此覆盖以指示您必须先获得锁定才能编辑该文件。
如果您持有文件的锁定,并且 Subversion 状态为 正常,则此图标覆盖会提醒您,如果您没有使用它,则应释放锁定,以允许其他人将他们的更改提交到该文件。
此图标显示当前文件夹中的一些文件或文件夹已计划从版本控制中 删除,或者版本控制下的文件在文件夹中丢失。
加号表示文件或文件夹已计划 添加 到版本控制。
竖线表示文件或文件夹 忽略 版本控制。此覆盖是可选的。
此图标显示不在版本控制下但未被忽略的文件和文件夹。此覆盖是可选的。
实际上,您可能会发现并非所有这些图标都用在您的系统上。这是因为 Windows 允许的叠加层数量非常有限,如果您还使用的是旧版本的 TortoiseCVS,则没有足够的叠加层插槽可用。TortoiseSVN 试图成为一个“好公民 (TM)”,并限制其对叠加层的使用,以便为其他应用程序提供机会。
现在有越来越多的 Tortoise 客户端(TortoiseCVS、TortoiseHg 等),图标限制成为一个真正的问题。为了解决这个问题,TortoiseSVN 项目引入了一个通用的共享图标集,以 DLL 的形式加载,所有 Tortoise 客户端都可以使用它。请与您的客户端提供商联系,查看此功能是否已集成 :-)
有关图标叠加层如何对应于 Subversion 状态和其他技术细节的描述,请阅读名为“图标叠加层”的部分。
有时您希望获得有关文件/目录的更多详细信息,而不仅仅是图标叠加层。您可以在资源管理器属性对话框中获得 Subversion 提供的所有信息。只需选择文件或目录,然后在上下文菜单中选择 → (注意:这是资源管理器提供的正常属性菜单项,而不是 TortoiseSVN 子菜单中的菜单项!)。在属性对话框中,TortoiseSVN 为受 Subversion 控制的文件/文件夹添加了一个新的属性页,您可以在其中查看有关所选文件/目录的所有相关信息。
了解您更改了哪些文件以及哪些文件被其他人更改并提交,这通常非常有用。这就是命令 → 派上用场的地方。此对话框将显示工作副本中以任何方式更改的每个文件,以及您可能拥有的任何未版本控制的文件。
如果您点击 Shift 键。
按钮,您也可以查看仓库中的更改。这样,您可以在更新之前检查是否存在潜在的冲突。您还可以从仓库中更新选定的文件,而无需更新整个文件夹。默认情况下, 按钮只获取工作副本的检出深度的远程状态。如果您想查看仓库中的所有文件和文件夹,即使是您未检出的文件和文件夹,您也需要在点击 按钮时按住该对话框使用颜色编码来突出显示状态。
本地修改的项目。
如果未更改的文件位于已移动的目录中,则状态将在 状态 列中显示一个 +
符号,并且也会以蓝色显示。
添加的项目。具有历史记录的添加项目在 文本状态 列中有一个 +
符号,并且工具提示显示了该项目从何处复制。
已删除或丢失的项目。
在本地和仓库中修改的项目。更改将在更新时合并。这些 可能 会在更新时产生冲突。
在本地修改并在仓库中删除的项目,或在仓库中修改并在本地删除的项目。这些 将 会在更新时产生冲突。
未更改和未版本化的项目。
这是默认的颜色方案,但您可以使用设置对话框自定义这些颜色。阅读 名为“TortoiseSVN 颜色设置”的部分 以获取更多信息。
叠加图标也用于指示其他状态。下面的屏幕截图显示了所有可能的叠加,这些叠加在必要时会显示。
叠加显示以下状态
检出深度 empty
,表示只有项目本身。
检出深度 files
,表示只有项目本身和所有文件子项,没有子文件夹。
检出深度 immediates
,表示只有项目本身和所有文件和文件夹子项,但没有子文件夹的子项。
嵌套项目,即工作副本内的工作副本。
外部项目,即通过 svn:externals
属性添加的所有项目。
提交后恢复的项目。有关详细信息,请参阅 名为“仅提交文件的部分内容”的部分。
具有属性修改的项目,但仅限于 svn:mergeinfo
属性。如果修改了任何其他属性,则不会使用覆盖。
已切换到不同存储库路径的项目也使用 (s)
标记指示。您可能在分支上工作时切换了一些内容,但忘记切换回主干。这是您的警告信号!上下文菜单允许您将它们切换回正常的路径。
从对话框的上下文菜单中,您可以显示更改的差异。使用
→ 检查您所做的本地更改。使用 → 检查其他人对存储库所做的更改。您也可以恢复单个文件中的更改。如果您不小心删除了文件,它将显示为 丢失,您可以使用 恢复 来恢复它。
未版本控制和忽略的文件可以从这里使用 删除 时按住 Shift 键。
→ 发送到回收站。如果您想永久删除文件(绕过回收站),请在单击如果您想详细检查文件,可以将其从这里拖放到另一个应用程序(例如文本编辑器或 IDE)中,或者您可以简单地将其拖放到资源管理器中的文件夹中以保存副本。
列是可自定义的。如果您 右键单击 任何列标题,您将看到一个上下文菜单,允许您选择显示哪些列。您还可以使用鼠标悬停在列边界上时出现的拖动句柄来更改列宽。这些自定义设置会保留,因此您下次将看到相同的标题。
如果您同时处理多个不相关的任务,您还可以将文件分组到变更列表中。阅读 名为“变更列表”的部分 以了解更多信息。
在对话框的底部,您可以看到工作副本中使用的存储库修订范围的摘要。这些是 提交 修订,而不是 更新 修订;它们代表这些文件最后提交的修订范围,而不是它们已更新到的修订。请注意,显示的修订范围仅适用于显示的项目,而不适用于整个工作副本。如果您想查看整个工作副本的该信息,则必须选中 显示未修改的文件 复选框。
如果您想要查看工作副本的扁平视图,即显示文件夹层次结构中所有级别的所有文件和文件夹,那么检查修改对话框是最简单的方法。只需选中显示未修改的文件复选框即可显示工作副本中的所有文件。
有时文件在 Subversion 之外被重命名,它们在文件列表中显示为丢失文件和未版本控制文件。为了避免丢失历史记录,您需要通知 Subversion 关于连接。只需选择旧名称(丢失)和新名称(未版本控制),然后使用
→ 将这两个文件配对为重命名。如果您复制了文件但忘记使用 Subversion 命令来执行此操作,您可以修复该副本,以便新文件不会丢失其历史记录。只需选择旧名称(正常或已修改)和新名称(未版本控制),然后使用
→ 将这两个文件配对为复制。