忽略SVN工作副本中的分支

时间:2010-11-28 13:26:23

标签: svn tortoisesvn branch svnignore

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

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

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

/
 projects
  project-x
   assets
    blabla.psd
   code
    trunk
    branches
     branch1
     branch2
  project-y
   ...

5 个答案:

答案 0 :(得分:6)

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

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

  1. 从root用户结帐选项“仅限子女”
  2. 从root / trunk检出,选项为“full recursive”
  3. 如果有人想要检查一些特殊分支,那么在前两个步骤之后:

    • 从根/分支机构结账,选项为​​“仅限直接儿童”
    • 使用选项“full recursive”
    • 从该特殊分支结账

    您可以在SVN好书“Sparse Directories”一章中找到有关该主题的更多信息。

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

    编辑:如果您已经检出了整个存储库,现在要排除某些内容以节省空间,请在要使用checkout dept“Exclude”排除的文件夹上使用命令“Update item to revison”。根据{{​​3}},此选项仅在“更新到修订版本”对话框中可用。我想这只是为了这个目的。

    首先尝试临时工作副本。我个人从未这样做过。

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

答案 1 :(得分:6)

(来自工作副本的根目录)

find . -name branches -exec svn update --set-depth empty {} \;

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

svn update --set-depth infinity branches\my-feature-branch

答案 2 :(得分:1)

我希望你有这样的结构:

repo root
  |
  +-- trunk
  |
  +-- branches
         |
         +-- branch1
         +-- branch2
         +-- ...

如果是这种情况,则用户只需结帐http://server/repo/trunk而不是http://server/repo,当他们想要在分支上工作时,他们可以将工作副本切换为http://server/repo/branches/branch1

答案 3 :(得分:1)

右键单击您不想要的文件夹,然后转到“更新到修订版本...”。在弹出的对话框中,将“更新深度”设置为“排除”。 (注意,这似乎只适用于文件夹。)这将从您的工作副本中删除它,但不会影响存储库。 Tortoise只会知道不会在更新期间尝试更新它。

要撤消它,您可以右键单击父文件夹(或其父文件夹,依此类推),然后选择“Repo Browser”。找到排除的文件夹,右键单击并选择“将项目更新到修订版”。你会得到同样的对话;这一次,只要确保它说“工作副本”

Undo check out of subfolder in TortoiseSVN

答案 4 :(得分:0)

如果人们必须将资源与代码一起下载,那么在project-x的级别上进行分支会更自然。在这种情况下,您不会遇到您描述的问题。你有什么理由只分支你的部分东西吗?