代码之家  ›  专栏  ›  技术社区  ›  serpaulius

如何在更新SVN工作副本时排除具有特定名称的所有文件夹?

  •  1
  • serpaulius  · 技术社区  · 10 年前

    我使用的是乌龟SVN。

    有一个 非常 大型存储库 非常大的文件夹树 在我的办公机构。我的电脑只有大约64GB的可用空间(SSD),而存储空间大约为100GB。问题是,该存储库 许多的 文件夹(称为 概念 )其中包括许多非常大的tif文件(为了安全起见,程序员只使用这些图片的压缩版本)。

    这是不合逻辑的 更新我的工作副本 使用 更新为修订版 上下文命令,并在每次需要更新工作副本时取消选择源树中的所有“Concepts”文件夹。

    文件夹结构示例:

    \folder
        \child
            \Concepts
        \child1
            \Concepts
        \child2
            \Concepts
        \child3
            \Concepts
    \folder1
        \childOther
            \grandchild
                \Concepts
            \grandchild1
                \Concepts
            \grandchild2
                \Concepts
    

    我 不能 只需排除所有tif文件,因为它们正在其他文件夹中使用。

    所以我的最后一个问题是: 如何 排除具有特定名称的所有文件夹 从树中, 更新工作副本时 来自Tortoise SVN存储库?

    1 回复  |  直到 10 年前
        1
  •  4
  •   Patrick Quirk    10 年前

    此功能不存在。的命令行版本 svn checkout 和 svn update 没有“过滤器”选项,所以TortoiseSVN也不会为您提供此功能。

    你真正想要的是 sparse checkout ,其中您的工作副本中没有任何“Concepts”文件夹,SVN知道永远不会将它们从存储库中删除。要创建一个,您有两个选项:

    1. 如果你还没有签出你的工作副本,那么你可以在TortoiseSVN的“签出”对话框中使用内置的支持(从上面的链接):

      要轻松地仅选择要签出的项目并强制生成的工作副本仅保留这些项目,请单击 选择项目。。。 按钮这将打开一个新对话框,您可以在其中选中工作副本中需要的所有项目,并取消选中所有不需要的项目。然后,生成的工作副本称为稀疏签出。 这种工作副本的更新不会获取丢失的文件和文件夹,只会更新工作副本中已有的内容。

      换句话说,选择除“Concepts”目录外的所有目录并执行签出。然后,当您稍后需要更新时,这些目录将不会被删除。

    2. 如果您已经签出了代码,可以使用TortoiseSVN的“更新到修订版”对话框将工作副本转换为稀疏签出。右键单击工作副本中不需要的“Concepts”文件夹,选择 更新至修订版 ,然后选择 更新深度 “排除”。这将从您的工作副本中删除它,并且进一步的更新不会再次将其删除。

    如果,以后的某个时候,你 做 想要“概念”文件夹之一,可以将其作为工作副本的一部分。最简单的方法是右键单击要下拉的文件夹的父目录,然后单击 回购浏览 ,然后右键单击“Concepts”文件夹并选择 将项目更新为修订版 。在该对话框中,选择 更新深度 选择“工作副本”,然后单击“确定”。