忽略SVN工作副本中的分支

Bar*_*lom 4 svn tortoisesvn branch svnignore

最近我们制作了项目主干的第一个分支.中继线相当大(几个GB),这对服务器来说无关紧要,因为分支是通过高效链接在那里完成的.然而,在客户端工作副本中,项目现在确实占用了两倍的空间(我们所有的WC都来自存储库根目录).

由于只有少数人真的需要分支,其他人如何使用TortoiseSVN忽略(即不下载)所有分支?

如下所述,仅检查中继的用户不是此处的解决方案.我们的结构是这样的:

/
 projects
  project-x
   assets
    blabla.psd
   code
    trunk
    branches
     branch1
     branch2
  project-y
   ...
Run Code Online (Sandbox Code Playgroud)

Dia*_*cus 6

简短解决方案 - 切换到/ trunk.所有除了trunk之外不需要任何其他东西的人都可以从/ root/trunk而不是/ root签出.任何想要分支的人都应该检查另一个目录中的分支.

更精细的解决方案 - 只检查您需要的但保持树结构.如果您希望自由拥有它,并且只使用您想要的那些,请按照以下步骤操作:

  1. 从root用户结帐选项"仅限直接孩子"
  2. 从root/trunk签出选项"完全递归"

如果有人想要检查一些特殊分支,那么在前两个步骤之后:

  • 从根/分支机构结账,选项为​​"仅限直接儿童"
  • 从特殊分支结账,选项"完全递归"

您可以在SVN好书" 稀疏目录 " 一章中找到有关该主题的更多信息.

这个过程没有捷径来挑选分支.批处理文件和TortoiseProc除外.

编辑:如果您已经检出了整个存储库,现在要排除某些内容以节省空间,请使用命令"更新项目以重新命令"在您要通过结帐部门"排除"排除的文件夹上.根据手册,此选项仅在"更新到修订版本"对话框中可用.我想这只是为了这个目的.

首先在临时工作副本上试一试.我个人从未这样做过.

更新:从TortoiseSVN 1.7 Checkout对话框有一个"选择项目"按钮,使您可以只选择所需的文件夹并一步获取它们."更新项目到修订版本"对话框中也提供了相同的按钮.


小智 6

(来自工作副本的根)

find . -name branches -exec svn update --set-depth empty {} \;
Run Code Online (Sandbox Code Playgroud)

这将删除工作副本中的所有分支,并且将来的更新将不会下载它们.想要查看分支的开发人员可以随后:

svn update --set-depth infinity branches\my-feature-branch
Run Code Online (Sandbox Code Playgroud)