当您在工作副本上工作时,您经常需要知道您已更改/添加/删除或重命名的文件,甚至哪些文件已被其他人更改和提交。
现在您已经从 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 为版本控制下的文件/文件夹添加了一个新的属性页,您可以在其中查看有关所选文件/目录的所有相关信息。
了解您已更改的文件以及其他人已更改并提交的文件通常非常有用。 这就是 → 命令的用武之地。 此对话框将显示您的工作副本中以任何方式更改的每个文件,以及您可能拥有的任何未版本控制的文件。
如果您单击Shift 键。
,那么您还可以查找仓库中的更改。 这样,您可以在更新之前检查是否存在可能的冲突。 您还可以从仓库更新选定的文件,而无需更新整个文件夹。 默认情况下, 按钮仅使用工作副本的检出深度获取远程状态。 如果您想查看仓库中的所有文件和文件夹,即使是您尚未检出的文件和文件夹,那么您必须在单击 按钮时按住该对话框使用颜色编码来突出显示状态。
本地修改的项目。
如果未更改的文件位于已移动的目录中,则状态将在状态列中显示一个 +
号,并且也将以蓝色着色。
已添加的项目。 已添加历史记录的项目在文本状态列中具有 +
号,并且工具提示显示该项目是从哪里复制的。
已删除或丢失的项目。
本地和仓库中均已修改的项目。 更改将在更新时合并。 这些可能在更新时产生冲突。
本地修改并在仓库中删除的项目,或在仓库中修改并在本地删除的项目。 这些将在更新时产生冲突。
未更改和未版本控制的项目。
这是默认的配色方案,但您可以使用设置对话框自定义这些颜色。 阅读名为“TortoiseSVN 颜色设置”的章节以获取更多信息。
图标覆盖层也用于指示其他状态。 下面的屏幕截图显示了必要时显示的所有可能的覆盖层。
覆盖层显示以下状态
检出深度 empty
,表示仅项目本身。
检出深度 files
,表示仅项目本身和所有文件子项,而没有子文件夹。
检出深度 immediates
,表示仅项目本身和所有文件和文件夹子项,但没有子文件夹的子项。
嵌套项目,即工作副本内部的工作副本。
外部项目,即所有通过 svn:externals
属性添加的项目。
在提交后恢复的项目。 有关详细信息,请参阅名为“仅提交文件的部分内容”的章节。
具有属性修改的项目,但仅限于 svn:mergeinfo
属性。 如果修改了任何其他属性,则不使用覆盖层。
已切换到不同仓库路径的项目也使用 (s)
标记指示。 您可能在处理分支时切换了一些内容,但忘记切换回主干。 这是您的警告标志! 上下文菜单允许您将它们切换回正常路径。
从对话框的上下文菜单中,您可以显示更改的差异。 使用您所做的本地更改。 使用 → 检查其他人所做的仓库更改。
→ 检查您还可以还原单个文件中的更改。 如果您意外删除了文件,它将显示为丢失,您可以使用还原来恢复它。
未版本控制和忽略的文件可以从此处使用删除时按住 Shift 键。
→ 发送到回收站。 如果您想永久删除文件(绕过回收站),请在单击如果您想详细检查文件,您可以从此处将其拖到另一个应用程序(如文本编辑器或 IDE)中,或者您可以通过将其拖到资源管理器中的文件夹来简单地保存副本。
列是可自定义的。 如果您右键单击任何列标题,您将看到一个上下文菜单,允许您选择要显示的列。 您还可以通过使用鼠标悬停在列边界上时出现的拖动手柄来更改列宽。 这些自定义设置将被保留,因此您下次将看到相同的标题。
如果您同时处理多个不相关的任务,您还可以将文件分组到变更列表。 阅读名为“变更列表”的章节以获取更多信息。
在对话框的底部,您可以看到工作副本中使用的仓库修订版本范围的摘要。 这些是提交修订版本,而不是更新修订版本; 它们表示这些文件上次提交的修订版本范围,而不是它们已更新到的修订版本。 请注意,显示的修订版本范围仅适用于显示的项目,而不适用于整个工作副本。 如果您想查看整个工作副本的信息,则必须选中显示未修改的文件复选框。
如果您想要工作副本的平面视图,即显示文件夹层次结构每个级别的所有文件和文件夹,那么检查修改对话框是实现此目的的最简单方法。 只需选中显示未修改的文件复选框即可显示工作副本中的所有文件。
有时文件在 Subversion 外部被重命名,它们会在文件列表中显示为丢失的文件和未版本控制的文件。 为了避免丢失历史记录,您需要通知 Subversion 关于此连接。 只需同时选择旧名称(丢失)和新名称(未版本控制),然后使用
→ 将这两个文件配对为重命名。如果您复制了文件但忘记使用 Subversion 命令来执行此操作,则可以修复该副本,以便新文件不会丢失其历史记录。 只需同时选择旧名称(正常或已修改)和新名称(未版本控制),然后使用
→ 将这两个文件配对为复制。